Gridview - 无法获取RowUpdating更新的单元格值
我正在使用ItemTemplate & EditTemplate编辑gridview。 (ASP.net + VB)。Gridview - 无法获取RowUpdating更新的单元格值
我点击编辑按钮,然后我可以选中/取消选中这些复选框并修改文本框的值。 当点击UPDATE按钮时,它会触发RowUpdating事件,但是我发现当我得到update语句的值时,它仍然会在编辑前获取值,而不是更新值。
如何获取最新的&更新值?谢谢。 乔
以下是VB代码:
Protected Sub GridView1_RowUpdating(ByVal sender As Object, ByVal e As GridViewUpdateEventArgs)
'Update the values.
Dim row = Gridview1.Rows(e.RowIndex)
Dim Col1_SL = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_SL"), CheckBox)
Dim Col1_VL = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_VL"), CheckBox)
Dim Col1_ML = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_ML"), CheckBox)
Dim Col1_PH = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_PH"), CheckBox)
Dim Col1_APH = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_APH"), CheckBox)
Dim Col1_TOIL = CType(Gridview1.Rows(e.RowIndex).FindControl("cb1_TOIL"), CheckBox)
Dim Col1_Others = CType(Gridview1.Rows(e.RowIndex).FindControl("tb1_Others"), TextBox)
Dim Col1_RosterKey = CType(Gridview1.Rows(e.RowIndex).FindControl("lb1_rosterkey"), Label)
Using conn As New System.Data.SqlClient.SqlConnection(ConfigurationManager.ConnectionStrings("hris_shiftdutyConnectionString").ConnectionString)
conn.Open()
cmd.Connection = conn
sql = "SET DATEFORMAT dmy;UPDATE troster SET SL='" & Convert.ToInt32(Col1_SL.Checked) & "' where roster_key='" & Col1_RosterKey.Text & "';"
cmd.CommandText = Sql
reader = cmd.ExecuteReader()
conn.Close()
reader.Close()
End Using
'Reset the edit index.
Gridview1.EditIndex = -1
'Bind data to the GridView control.
BindData()
End Sub
最可能的原因将是这个。
您正在呼吁Page_Load
BindData()
不使用!IsPostBack
Protected Sub Page_Load Handles Me.Load
If Not IsPostBack
' Bind Grid only at the first load
' Do not load Grid again at Postbacks
BindData()
End If
End Sub
你有2种选择:
- 有一个单独的RowUpdated方法是更新已被绑定的数据源进行后解雇到网格视图。该方法将包含编辑和插入的新值。
- RowUpdating方法应该有一个GridViewEventArgs类型的参数。这将有一个名为NewValues的属性,其中包含新值。在你的例子中,这是变量
e
。
嗨,对于选项2,我如何使用NewValues函数? e.NewValues?谢谢 –
'e.NewValues'是一种字典类型,因此您可以像使用它'col1 = e.NewValues [“BindingName”]'其中BindingName是该列的数据绑定名称。 – user815091
oic。但我怎么能指示行索引来获取更新的单元格值? –
您好,我得到这个错误味精 “索引超出范围必须为非负数且小于集合的大小参数名:索引” 后,我停止调用bindata() page_load for!IsPostBack 运行此代码时发生错误: Dim row = Gridview1.Rows(e.RowIndex) –
您能告诉我函数BindData吗? – naveen