突出显示gridview中的所选行,而不是vb asp.net

时间:2015-07-09 16:16:15

标签: asp.net vb.net gridview

我希望能够从Gridview中选择一个突出显示的行,就是这样。我可以使用此代码执行此操作,但是当我尝试单击另一行时(比如用户选择了错误的行),它将崩溃,从而导致此错误“Microsoft JScript运行时错误:'__ doPostBack'未定义”。

 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

1 个答案:

答案 0 :(得分:0)

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

数据绑定与缓存绑定,可能没有必要在每次回发时绑定,特别是如果您只选择一行。

你可以明确地调用Databind()(不是我的第一选择)或者更好,将onclick生成移动到每次回发时调用 的RowCreated事件,或者生成的PreRender事件通过循环遍历onclick。