Sub GridView1_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Dim Row As GridViewRow Dim SelectedValue As String = ViewState("SelectedValue") If SelectedValue Is Nothing Then Return End If ' 检测选择的行是哪个并重新选中它 For Each Row In GridView1.Rows Dim KeyValue As String = GridView1.DataKeys(Row.RowIndex).Value If (KeyValue = SelectedValue) Then GridView1.SelectedIndex = Row.RowIndex End If Next End Sub
Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) ' 保存选中行的索引 If (Not GridView1.SelectedIndex = -1) Then ViewState("SelectedValue") = GridView1.SelectedValue End If End Sub
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) ' 重置选中索引 GridView1.SelectedIndex = -1 End Sub
Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) ' 重置选择索引 GridView1.SelectedIndex = -1 End Sub GridView和DetailsView还支持一种用于分页和排序的特殊模式,它利用客户端向服务器的回调(callback)操作来获取新页面的数据或最近排序过的数据。要激活这个特性,必须把EnableSortingAndPagingCallbacks属性设置为真。请注意,当我们执行分页或排序操作的时候,页面不需要发回(postback)以检索新值(尽管执行了客户端脚本向服务器的回调操作)。当GridView或DetailsView包含模板字段的时候是不支持这个特性的。当这个特性被激活的时候,不支持在CommandField(命令字段)中显示"选择"按钮。