奇怪的GridView问题:选择2行且不存在RowState 3

时间:2010-11-04 08:07:35

标签: asp.net vb.net .net-3.5 gridview asp.net-ajax

我有一个奇怪的问题。 在GridView的RowCreated中,我添加以下脚本来选择一行:

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)。

谢谢。

1 个答案:

答案 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

现在所有旧选择都被清除,只选择了一行。