Asp.net 更新和在行更新

Asp.net 更新和在行更新,asp.net,gridview,Asp.net,Gridview,在Default.aspx AutoGenerateEditButton中,当您按下“编辑”按钮时,将沿第一列启用“编辑”按钮(OnRowEditing)。它将显示另外两个按钮:更新(OnRowUpdated)和取消(OnRowCancelingEdit)。我需要有关“更新”按钮和SQL语句中的数据的帮助 <asp:GridView ID="GridView1" runat="server" AutoPostBack="True" AutoGenerateColumns="False" A

在Default.aspx AutoGenerateEditButton中,当您按下“编辑”按钮时,将沿第一列启用“编辑”按钮(OnRowEditing)。它将显示另外两个按钮:更新(OnRowUpdated)和取消(OnRowCancelingEdit)。我需要有关“更新”按钮和SQL语句中的数据的帮助

<asp:GridView ID="GridView1" runat="server" AutoPostBack="True" AutoGenerateColumns="False" AutoGenerateEditButton="True" OnRowCancelingEdit="Gridview1_OnRowCancelingEdit" OnRowEditing="Gridview1_OnRowEditing" OnRowUpdating="GridView1_OnRowUpdating>
    </asp:GridView>
我不确定代码行:

GridView1.Rows(e.RowIndex).Cells(1.Text)

这是指您选择“编辑”然后编辑条目然后按更新的行

第一列的“单元格(1)”1是什么

第二列的“单元格(2)”2是什么

id在col1中,是主键,因此如果它被更改,它应该转到堆栈的底部


当我更新列时,它会自动恢复为旧值。

e.RowIndex
表示正在编辑的行的索引,它是基于零的。例如,0表示第一行,1表示第二行,依此类推

GridView1.Rows(e.RowIndex).Cells(1).Text
表示某一列的文本,而
Cells(i)
也像
e.RowIndex
一样以零为基础。例如,如果
e.RowIndex
值为0,则
GridView1.Rows(e.RowIndex).Cells(1).Text
将返回第一行和第二列的文本。同样的情况也适用于
GridView1.Rows(e.RowIndex).Cells(2).Text
,它将返回第一行和第三列的文本

我认为您可能向
@id
参数传递了错误的值,并且update语句没有更新任何内容,因为在数据库中找不到该值

既然你说“id在col1中,是主键”,我猜这句话:

cmd.Parameters.AddWithValue("@id", GridView1.Rows(e.RowIndex).Cells(1).Text)
应改为:

cmd.Parameters.AddWithValue("@id", GridView1.Rows(e.RowIndex).Cells(0).Text)

确保如果您在页面加载中调用
ShowGrid()
,它位于任何
如果不是IsPostBack。。。EndIf
块。
cmd.Parameters.AddWithValue("@id", GridView1.Rows(e.RowIndex).Cells(0).Text)