1

Web アプリケーションを作成し、テーブルからレコードを取得する GridView を含めましたtesttable

コードは次のとおりです。

            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
                DataSourceID="SqlDataSource1">
                <Columns>
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" />
                    <asp:BoundField DataField="product_no" HeaderText="product_no" 
                        InsertVisible="False" ReadOnly="True" SortExpression="product_no" />
                    <asp:BoundField DataField="product_name" HeaderText="product_name" 
                        SortExpression="product_name" />
                    <asp:BoundField DataField="price" HeaderText="price" SortExpression="price" />
                    <asp:BoundField DataField="expire_date" HeaderText="expire_date" 
                        SortExpression="expire_date" />
                    <asp:BoundField DataField="expire_time" HeaderText="expire_time" 
                        SortExpression="expire_time" />
                </Columns>
            </asp:GridView>

            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
                ConnectionString="<%$ ConnectionStrings:testbaseConnectionString %>" 
                DeleteCommand="DELETE FROM testtable WHERE (product_no = @product_no)" 
                InsertCommand="INSERT INTO testtable(product_name, price, expire_date, expire_time) VALUES (@product_name, @price, @expire_date, @expire_time)" 
                SelectCommand="SELECT testtable.* FROM testtable" 
                UpdateCommand="UPDATE testtable SET product_name = @product_name, price = @price, expire_date = @expire_date, expire_time = @expire_time WHERE (product_no = @product_no)">
                <DeleteParameters>
                    <asp:Parameter Name="product_no" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="product_name" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="product_name" />
                    <asp:Parameter Name="price" />
                    <asp:Parameter Name="expire_date" />
                    <asp:Parameter Name="expire_time" />
                    <asp:Parameter Name="product_no" />
                </UpdateParameters>
            </asp:SqlDataSource>

しかしEdit、GridView の特定のレコードのリンクをクリックして変更を加えると、Updateリンクをクリックしても変更が反映されず、テーブルに更新されないようです。(Editリンクは、次の図に示されているものとまったく同じように見えます)

ここに画像の説明を入力

何が欠けている可能性がありますか?

4

3 に答える 3

0

GridView コントロールに "DataKeyNames" はありません。

gridView タグを次のように変更します。

 <asp:GridView DataKeyNames="product_no"   ... />
于 2012-09-10T21:10:17.230 に答える
0

この2つを変えてみてください

<asp:BoundField DataField="product_no" HeaderText="product_no" 
                    InsertVisible="False" ReadOnly="True" SortExpression="product_no" />
<asp:BoundField DataField="product_name" HeaderText="product_name" 
                    SortExpression="product_name" />

これとともに

<asp:TemplateField HeaderText="product_name" SortExpression="product_name">
    <ItemTemplate>
        <asp:HiddenField id="hfProduct_No" runat="server" value='<%# Bind("product_no") %>' />
        <asp:Label id="lblProduct_name" runat="server"  Text ='<%#Bind("product_name")%>' ></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:HiddenField id="hfProduct_No" runat="server" value='<%# Bind("product_no") %>' />
        <asp:TextBox id="txtProduct_name" runat="server"  Text ='<%#Bind("product_name")%>' ></asp:TextBox>
    </EditItemTemplate>    
</asp:TemplateField>       
于 2012-10-01T11:22:45.090 に答える
0

これらのリンクをチェックしてください。

于 2012-09-07T09:35:44.657 に答える