在gridview上获取两个单击事件

时间:2014-01-08 14:43:49

标签: c# javascript asp.net gridview onclick

我目前有2行代码会影响GridView中某一行的点击。如果我留下任何一个到位,他们自己工作。如果我只在GridView1_RowDataBound作品中放入两者。 GridView1_RowDataBound方法用于在单击时更改GridView中的选定行。 GridView1_RowCreated代码用于进行单击,使页面上元素的ID变为可见。我真的需要两个。有没有办法将它们结合起来?

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
     e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Select$" + e.Row.RowIndex);
}

 protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
 {
      e.Row.Attributes.Add("onclick", "setVisible('cfilterpopup')");
 }

1 个答案:

答案 0 :(得分:1)

我会这样做:

编辑: OnClientClick无法使用GridViewRow。您可以尝试以下方法:

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    e.Row.Attributes["onclick"] = Page.ClientScript.GetPostBackClientHyperlink(GridView1, "Select$" + e.Row.RowIndex);
    e.Row.Attributes.Add("onclick", "setVisible('cfilterpopup');__doPostBack('" + GridView1.ClientID + "', 'Select$" + e.Row.RowIndex + "');");
}

说明:在第二行中,我们正在更改属性以注入setVisible()方法并调用__doPostBack()

编辑2:目前有两个问题:

  1. 在回发后,cfilterpopup将再次隐身。

  2. 在回发中删除了Onclick属性

  3. 如何修复#1:

    在标记中添加隐藏字段。在setVisible()内,将隐藏字段值设置为“1”。在正文onload上添加一个方法来扫描此值并使该部分可见/不可见。

    您使用javascript的标记可能如下所示:

    <head runat="server">
        <title></title>
        <script type="text/javascript">
            function setVisible(itm) {
               document.getElementById('<%=hdnStatus.ClientID %>').value="1";
            }
    
            function showcfilterpopup() {
                var status = document.getElementById('<%=hdnStatus.ClientID %>').value;
                document.getElementById('cfilterpopup').style.visibility = status == "1" ? "visible" : "hidden";           
            }
        </script>
    </head>
    <body onload="showcfilterpopup();">
        <form id="form1" runat="server">
        <div>
            <div id="cfilterpopup" style="display:none">
                <p>cfilterpopup</p>
            </div>
            <asp:HiddenField ID="hdnStatus" Value="0" runat="server" />
            <asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound"></asp:GridView>
        </div>
        </form>
    </body>
    </html>