2017-10-09 194 views
0

我試圖更新'問題'字段,當我點擊'更新'按鈕的特定行。當我點擊'編輯'按鈕時,我可以改變文本,但是當我點擊'更新'按鈕時,它會恢復到原來的值。數據庫中也沒有任何變化。爲什麼我的GridView沒有更新?

這裏是我的標記:

<div class="divGrid" style="margin: 0 auto; width: 70%;"> 
    <asp:GridView ID="QuestionsGridView" CssClass="gridView" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" Width="100%" CellPadding="4" ForeColor="#333333"> 
     <Columns> 
      <asp:BoundField DataField="QUESTION_NUMBER" ReadOnly="true" HeaderText="Question Number" SortExpression="QUESTION_NUMBER" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" /> 
      <asp:TemplateField HeaderText="Question" SortExpression="QUESTION" HeaderStyle-HorizontalAlign="Center"> 
       <EditItemTemplate> 
        <asp:TextBox ID="EditQuestionBox" runat="server" Height="50px" Text='<%# Bind("QUESTION") %>' TextMode="MultiLine" Width="99%" CssClass="multilineTBox" Columns="1" Rows="2"></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label1" runat="server" Text='<%# Bind("QUESTION") %>'></asp:Label> 
       </ItemTemplate> 
       <ControlStyle Width="99%" /> 
      </asp:TemplateField> 
      <asp:BoundField DataField="CAT_NAME" ReadOnly="true" HeaderText="Category" SortExpression="CAT_NAME" HeaderStyle-HorizontalAlign="Center" /> 
      <asp:BoundField DataField="QUES_ORDER" ReadOnly="true" HeaderText="Order in Category" SortExpression="QUES_ORDER" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" /> 
      <asp:CommandField CausesValidation="False" HeaderText="Edit" ShowEditButton="True" ControlStyle-Width="4em" ItemStyle-HorizontalAlign="Center" HeaderStyle-HorizontalAlign="Center" /> 
     </Columns> 
     <EditRowStyle BackColor="#2461BF" /> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#a0a0a0" Font-Bold="True" ForeColor="White" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" HorizontalAlign="Center" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#ffffff" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
     <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
     <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
     <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
    </asp:GridView> 
</div> 

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Corp_TaxConnectionString %>" 
    SelectCommand="SELECT tq.id, tq.question, tq.ques_order, tc.cat_name, tq.question_number FROM t01_tax_questions AS tq INNER JOIN t01_tax_categories AS tc ON tq.category = tc.cat_order ORDER BY tq.question_number" 
    UpdateCommand="UPDATE t01_tax_questions SET question = @question WHERE question_number = @question_number"> 
    <UpdateParameters> 
     <asp:Parameter Name="question_number" Type="Int32" /> 
     <asp:Parameter Name="question" Type="String" /> 
     <asp:Parameter Name="id" Type="Int32" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 

而且表: SQLServer Table

編輯:

尋找後,在我的EditItemTemplate裏,我綁定問題文本框。在點擊更新按鈕之後,在嘗試更新之前,原始問題是否再次綁定到文本框,是否有可能?如果是這樣的話,我將如何解決這個問題?

+0

不知道是否這件事(不是太熟悉界面中的所有SQL)你的Gridview字段與你的sqldata源不同,這讓我感到奇怪。編輯:MSDN鏈接 https://msdn.microsoft.com/en-us/library/z72eefad.aspx – Robin

+0

是的,長篇故事在那裏。但是,改變案例以使它們全都匹配似乎也不起作用。 –

+0

這是新的代碼嗎?你自己寫了這些嗎?還是你支持現有的應用程序? – mason

回答

0

進一步研究之後,我意識到我忘記了GridView標籤中顯然非常重要的「DataKeyNames」屬性。我感到非常愚蠢。這是新的工作代碼。

<div class="divGrid" style="margin: 0 auto; width: 70%;"> 
    <asp:GridView ID="QuestionsGridView" CssClass="gridView" runat="server" AutoGenerateColumns="False" Width="100%" DataKeyNames="ID, QUESTION_NUMBER" DataSourceID="SqlDataSource1"> 
     <Columns> 
      <asp:BoundField DataField="question_number" HeaderText="Question Number" SortExpression="question_number" ReadOnly="True" ItemStyle-HorizontalAlign="Center" /> 
      <asp:BoundField DataField="question" HeaderText="Question" SortExpression="question" > 
       <ControlStyle Width="100%" Height="80%" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="cat_name" HeaderText="Category" SortExpression="cat_name" ItemStyle-HorizontalAlign="Center"> 
       <ControlStyle Height="80%" /> 
      </asp:BoundField> 
      <asp:BoundField DataField="ques_order" HeaderText="Question Order" SortExpression="ques_order" ReadOnly="True" ItemStyle-HorizontalAlign="Center" /> 
      <asp:CommandField HeaderText="Edit" ShowEditButton="True" CausesValidation="False" HeaderStyle-Width="4%" ItemStyle-HorizontalAlign="Center"/> 
      <asp:CommandField HeaderText="Delete" ShowDeleteButton="True" CausesValidation="False" HeaderStyle-Width ="4%" ItemStyle-HorizontalAlign="Center" /> 
     </Columns> 
     <EditRowStyle BackColor="Yellow" Width="100%" /> 
     <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /> 
     <HeaderStyle BackColor="#a0a0a0" Font-Bold="True" ForeColor="White" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" HorizontalAlign="Center" /> 
     <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /> 
     <RowStyle BackColor="#ffffff" BorderStyle="Solid" BorderColor="Black" BorderWidth="1px" /> 
     <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /> 
     <SortedAscendingCellStyle BackColor="#F5F7FB" /> 
     <SortedAscendingHeaderStyle BackColor="#6D95E1" /> 
     <SortedDescendingCellStyle BackColor="#E9EBEF" /> 
     <SortedDescendingHeaderStyle BackColor="#4870BE" /> 
    </asp:GridView> 

    <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Corp_TaxConnectionString %>" SelectCommand="SELECT 
     tq.id, tq.question_number, tq.question, tc.cat_name, tq.ques_order 
     FROM 
     t01_tax_questions AS tq 
     INNER JOIN 
     t01_tax_categories AS tc 
     ON 
     tq.category = tc.cat_order 
     ORDER BY tq.question_number" 

     DeleteCommand="DELETE 
     FROM 
     t01_tax_questions 
     WHERE 
     question_number = @question_number" 

     UpdateCommand="UPDATE 
     t01_tax_questions 
     SET 
     question = @question 
     WHERE 
     id = @id"> 

     <DeleteParameters> 
      <asp:Parameter Name="@question_number" /> 
     </DeleteParameters> 
     <UpdateParameters> 
      <asp:Parameter Name="@question"/> 
      <asp:Parameter Name="@id" /> 
     </UpdateParameters> 
    </asp:SqlDataSource> 

正是在這種MSDN Documentation

所有解釋謝謝所有誰看着這個和審判。

相關問題