【问题标题】:Add Row Click Event to Asp.Net GridView Rows将行单击事件添加到 Asp.Net GridView 行
【发布时间】:2012-10-16 15:24:39
【问题描述】:

有没有一种方法可以将 RowClick 事件添加到 Gridview 行,而无需为每个行添加按钮?我希望能够单击行中的任意位置并引发 SelectedIndexChanged 事件。

我尝试了以下方法,但我需要添加页面 enableEventValidation="true" 我真的不想这样做。

Private Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
    Try
        Select Case e.Row.RowType
            Case DataControlRowType.DataRow
                e.Row.Attributes.Add("onclick", Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Select$" & e.Row.RowIndex))
        End Select
    Catch ex As Exception

    End Try
End Sub

RowCommands 也不起作用,因为您必须有一个按钮。

【问题讨论】:

标签: asp.net web-applications


【解决方案1】:

您执行了 2 中的第 1 步。第一部分是在 RowDataBound 中注册 onclick。现在您需要处理SelectedIndexChanged 事件。我不是 VB.Net 人,所以我不能 100% 确定如何连接它。不过,事件处理程序将如下所示:

Private Sub GridView1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles GridView1.SelectedIndexChanged
    ' Do stuff here.
End Sub

另外,更改您的onclick 连接代码以使用Page.ClientScript.GetPostBackEventReference 而不是Page.ClientScript.GetPostBackClientHyperlink

这是一些示例标记:

<asp:GridView ID="GridView1"
    runat="server"
    Width="665px"
    OnSelectedIndexChanged="GridView1_SelectedIndexChanged">

    <HeaderStyle BackColor="#0033CC" />

    <Columns>
        <asp:CommandField ShowSelectButton="True" />
    </Columns>

</asp:GridView>

【讨论】:

  • 您是对的,但是我在启用可能危及安全性的页面事件时遇到错误。
  • @tszoro,检查我的编辑,我注意到您使用的 Page.ClientScript 方法与我在代码中使用的方法不同。
  • 编辑代码后,我得到 Server Error Invalid postback or callback argument。使用 启用事件验证。但它确实会影响页面加载。
  • 为了修复其余部分,我循环了 GridView 行并添加了 gr.Attributes.Add("onclick",Page.ClientScript.GetPostBackEventReference(GridView1, "Select$" & gr.RowIndex, True) ) 到 Protected Overrides Sub Render(writer As System.Web.UI.HtmlTextWriter) 事件中的每个 gridview 行,现在一切正常。谢谢
  • 注意:作为替代方案,您还可以在 Javascript 中编写一个 __doPostBack 事件并在 Postback 上获取参数和事件目标。函数 GridViewPostBack(row_idx) { __doPostBack(row_idx, "GridView1RowClick"); }
猜你喜欢
  • 2014-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多