我目前有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')");
}
答案 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:目前有两个问题:
在回发后,cfilterpopup
将再次隐身。
在回发中删除了Onclick
属性
如何修复#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>