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
EDIT:
見た後、私のEditItemTemplateで、私はテキストボックスに質問をバインドします。元の質問が更新しようとする前に再度テキストボックスにデータバインドされている更新ボタンをクリックした後でも可能ですか?この場合、どうすれば回避できますか?
これが何であるかわからない場合(あなたのやり方のようなインターフェイスのすべてのSQLにあまり慣れていない)、Gridviewのフィールドがあなたのsqldataソースとは異なる場合があります。編集:MSDNのリンク https://msdn.microsoft.com/en-us/library/z72eefad.aspx – Robin
ええ、長い話があります。しかし、すべてのケースが一致するようにケースを変更すると、どちらも機能しないように見えます。 –
この新しいコードですか?あなた自身でこれをすべて書きましたか?または、既存のアプリケーションをサポートしていますか? – mason