突出显示 gridview 中的选定行,仅此而已 vb asp.net

highlight selected row in gridview and nothing else vb asp.net

我希望能够 select Gridview 中突出显示的一行,仅此而已。我可以用这段代码做到这一点,但是当我尝试点击另一行时(比如用户 select 编辑了错误的行),它会崩溃并给我这个错误 "Microsoft JScript runtime error: '__doPostBack' is undefined"。

 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)       Handles Me.Load
    If Not Me.IsPostBack Then
        GridView.DataBind()
    End If
End Sub

Protected Sub OnRowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
        e.Row.Attributes("onclick") = Page.ClientScript.GetPostBackClientHyperlink(GridView, "Select$" & e.Row.RowIndex)
        e.Row.ToolTip = "Click to select this row."
    End If
End Sub



Protected Sub OnSelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles GridView.SelectedIndexChanged
    For Each row As GridViewRow In GridView.Rows
        If row.RowIndex = GridView.SelectedIndex Then
            row.BackColor = Drawing.Color.LightBlue
            row.ToolTip = String.Empty
        Else
            row.BackColor = Drawing.Color.White
            row.ToolTip = "Click to select this row."
        End If
    Next
End Sub

这可能是由于 RowDataBound 没有在回发时再次调用。如果您在执行初始 select 之前和之后通过浏览器开发人员工具检查 Gridview,我希望最初 onclick 事件已正确设置并在第一个 select 之后消失。

数据绑定与缓存相关联,可能没有必要在每次回发时都进行绑定,尤其是当您只 select 一行时。

您可以显式调用 Databind()(不是我的第一选择)或更好,将 onclick 生成移动到 RowCreated 事件, 在每次回发时调用该事件,或者移动到PreRender 事件,您可以在其中通过循环遍历行来生成 onclick。