【发布时间】:2014-01-16 01:48:19
【问题描述】:
在 Default.aspx 中,AutoGenerateEditButton 启用沿第一列的“编辑”按钮 (OnRowEditing) 当您按下“编辑”按钮时,它会弹出另外两个按钮:更新 (OnRowUpdating) 和取消 (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>
在 Default.aspx.vb 中
Protected Sub GridView1_OnRowEditing(ByVal sender As Object, ByVal e As GridViewEditEventArgs)
GridView1.EditIndex = e.NewEditIndex
ViewState("pageIndex") = GridView1.EditIndex
ShowGrid()
End Sub
Protected Sub GridView1_OnRowCancelingEdit(ByVal sender As Object, ByVal e As GridViewCancelEditEventArgs)
GridView1.EditIndex = -1
ViewState("pageIndex") = GridView1.EditIndex
ShowGrid()
End Sub
Protected Sub GridView1_OnRowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
Dim connStr, cmdStr As String
connStr = "Connection String works"
cmdStr = "UPDATE table1 SET (col2=@col2,col3=@col3,col4=@col4) WHERE id=@id;"
Try
Using conn As New SqlConnection(connStr)
Using cmd As New SqlCommand(cmdStr, conn)
conn.Open()
cmd.Parameters.AddWithValue("@id", GridView1.Rows(e.RowIndex).Cells(1).Text)
cmd.Parameters.AddWithValue("@col2", GridView1.Rows(e.RowIndex).Cells(2).Text)
cmd.Parameters.AddWithValue("@col3", GridView1.Rows(e.RowIndex).Cells(3).Text)
cmd.Parameters.AddWithValue("@col4", GridView1.Rows(e.RowIndex).Cells(4).Text)
cmd.ExecuteNonQuery()
conn.Close()
cmd.Dispose()
conn.Dispose()
End Using
End Using
Catch ex As Exception
End Try
ShowGrid()
End Sub
我不确定代码行数:
GridView1.Rows(e.RowIndex).Cells(1).Text)
这意味着您选择“编辑”然后编辑条目然后按更新的行
第一列的“Cell(1)”1 是什么列?
第二列的“Cell(2)”2 是什么列?
id 在 col1 中并且是主键,所以如果它被更改,它应该进入堆栈的底部。
当我更新一列时,它会自动恢复为旧值。
【问题讨论】:
-
确保如果您在 Page_Load 中调用
ShowGrid(),它在任何If Not IsPostBack ... EndIf块内。