我希望能够从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
答案 0 :(得分:0)
这可能是由于在回发时没有再次调用RowDataBound
。如果您在进行初始选择之前和之后通过浏览器开发人员工具检查Gridview,我认为最初onclick
事件已正确设置并在第一次选择后消失。
数据绑定与缓存绑定,可能没有必要在每次回发时绑定,特别是如果您只选择一行。
你可以明确地调用Databind()(不是我的第一选择)或者更好,将onclick生成移动到每次回发时调用 的RowCreated事件,或者生成的PreRender事件通过循环遍历onclick。