Select Case e.Row.RowType
Case DataControlRowType.DataRow
e.Row.Attributes("onclick") = Me.Page.ClientScript.GetPostBackClientHyperlink(Me.MainGrid, "Select$" & e.Row.RowIndex)
End Select
这就像一个魅力(我想)。 但是当我调试SelectedIndexChanging和以下SelectedIndexChanged事件时,我发现所选行的RowState从正常{0} /替换{1}切换到 3 而不是选定的{2}。 这发生在SelectedIndexChanging和SelectedIndexChanged之间。 为什么会这样?
下次我以编程方式设置selectedIndex(创建新行后的fe),我有两行被选中,并且没有(非hacky)方式取消选择RowDataBound中的旧行,因为{{3 } 3 (应该只是0,1,2,4或8)。
谢谢。
答案 0 :(得分:1)
我仍然不知道为什么RowState更改为3,但我有多个选定行的解决方案。到目前为止,我在RowDataBound中设置了GridView.SelectedIndex:
If LblPrimaryKey.Text.Equals(Me.CurrentID) Then
Me.MainGrid.SelectedIndex = e.Row.RowIndex
End If
现在我只将新的selectedIndex保存在一个变量中并在此之后设置它:
If LblPrimaryKey.Text.Equals(Me.CurrentID) Then
selectedIndex = e.Row.RowIndex 'member variable'
'Me.MainGrid.SelectedIndex = e.Row.RowIndex'
End If
在调用DataBind的函数中的RowDataBound之后:
Me.MainGrid.DataBind()
Me.MainGrid.SelectedIndex = Me.selectedIndex
现在所有旧选择都被清除,只选择了一行。