从Gridview中的指定列获取单元格值;“行更新”;事件ASP.NET/VB

从Gridview中的指定列获取单元格值;“行更新”;事件ASP.NET/VB,asp.net,vb.net,visual-studio-2010,gridview,Asp.net,Vb.net,Visual Studio 2010,Gridview,我想做的是跟随。。。我有一个从SQL server加载数据的gridview,我有e.NewValue和e.oldValue来确定修改/更新了哪些数据,但我需要获得唯一的记录ID,该ID存储在“ID\U ControlCharts”列中 那么,您能否提供一个代码片段/简要解释,说明如何从gridview在更新1个单元格(例如新/旧)时已填充的“ID_控制图”中获取值 注意:索引不是我所需要的,因为行可以被删除,并且对该行的引用现在丢失,所以由于“ID_controlCharts”是由SQL se

我想做的是跟随。。。我有一个从SQL server加载数据的gridview,我有e.NewValue和e.oldValue来确定修改/更新了哪些数据,但我需要获得唯一的记录ID,该ID存储在“ID\U ControlCharts”列中

那么,您能否提供一个代码片段/简要解释,说明如何从gridview在更新1个单元格(例如新/旧)时已填充的“ID_控制图”中获取值

注意:索引不是我所需要的,因为行可以被删除,并且对该行的引用现在丢失,所以由于“ID_controlCharts”是由SQL server键自动填充的,所以它非常适合我的情况

代码隐藏

    If e.Equals("Control_SeqRef_CH") = False Then
        Dim oldvalue As String = e.OldValues("Control_SeqRef_CH")
        Dim newvalue As String = e.NewValues("Control_SeqRef_CH")
        Dim rowindex As Integer = e.RowIndex
        Dim IDfromcontrol as integer = ???

        MsgBox(oldvalue)
        MsgBox(newvalue)
        MsgBox(rowindex)
        Msgbox(IDfromcontrol)

    Else
        MsgBox("same")
    End If

您有两个选择:

如果
ID\u ControlCharts
列在记录中,您不能从e.OldValues获取它吗

Dim IDfromcontrol = e.OldValues("ID_ControlCharts")
否则,如果将
ID\u ControlCharts
设置为
DataKeyNames
属性的列,则应该能够使用
ItemIndex
获取它:

Dim IDfromcontrol = GridView1.DataKeys(e.ItemIndex).Values(0)

(这都来自内存,因此语法可能有点不正确。)

发现问题,单元格设置为只读,e.oldvalues不返回任何内容,但当我删除只读选项时,e.olvalues工作正常!非常感谢。好!!顺便说一句,您将
e
与字符串“Control\u SeqRef\u CH”进行比较的第一行总是会返回false:
e
永远不是字符串!你想在那里测试什么?实际上我修改了代码,让jsut获取旧值(没有进行比较)。。。谢谢你提醒我!:)