【发布时间】:2015-06-02 22:28:52
【问题描述】:
我有一个这样的js函数:
<script type="text/javascript">
function Cols() {
rows = document.getElementById("GridView1").rows;
for (i = 0; i < rows.length; i++) {
rows[i].cells[8].style.visibility = "visible";
rows[i].cells[9].style.visibility = "visible";
rows[i].cells[10].style.visibility = "visible";
rows[i].cells[11].style.visibility = "visible";
rows[i].cells[12].style.visibility = "visible";
rows[i].cells[13].style.visibility = "visible";
rows[i].cells[14].style.visibility = "visible";
}
}
</script>
这个按钮带有一个 OnClientClick 事件:
<asp:Button ID="Add_Button" runat="server" OnClick="Add_Button_Click" Text="Add New Record" OnClientClick="Cols()" />
我的函数中的单元格是指我想在客户端显示的 Gridview 列,然后再转到服务器端的 OnClick 事件,这使我的 GridView 页脚行可见,页脚行用于插入新行.
编辑: 所以这是我最初的问题:单击按钮时,我想让其他列可见,然后在同一个单击事件中使页脚行可见。但是,在引发事件后,额外的列将变为可见,但在我第二次单击该按钮之前,页脚行不可见。
这是我的点击事件:
protected void Add_Button_Click(object sender, EventArgs e)
{
if (GridView1.FooterRow.Visible == false)
{
GridView1.FooterRow.Visible = true;
Add_Button.Text = "Cancel";
Panel2.Visible = false;
}
else
{
GridView1.FooterRow.Visible = false;
Add_Button.Text = "Add New Record";
GridView1.Columns[10].Visible = false;
GridView1.Columns[11].Visible = false;
GridView1.Columns[12].Visible = false;
GridView1.Columns[13].Visible = false;
GridView1.Columns[14].Visible = false;
GridView1.Columns[15].Visible = false;
GridView1.Columns[16].Visible = false;
}
}
但是,当我单击按钮时,会引发 OnClick 事件,但不会引发 OnClientClick。为什么会这样?
【问题讨论】:
-
你试过在服务器端的按钮onclick事件中添加RegisterClientScriptBlock吗?回发会导致 js 函数所做的更改恢复。
-
服务器端和客户端的列索引完全不同。您确定您尝试显示的列已在客户端浏览器中呈现吗?您可以尝试使用浏览器上的 Developer Tool 或 Inspect Element 进行检查。我在质疑,因为如果您在服务器端将 Column visible 设置为 false,则该列将不会在客户端呈现。因此,您的 javascript 中的列索引可能不是您想要的正确索引。
-
为什么不做所有服务器端或所有客户端?在这种情况下,将两者分开对我来说似乎没有意义。另请注意,
style.visibility = "visible"与GridView1.Columns[10].Visible = false;非常不同(又与style.display= "none"不同) -
在上面展开:服务器端
GridView1.Columns[10].Visible = false导致 没有为该元素呈现 HTML,因此客户端脚本无法与之交互。 -
我想要做的是让一些列和页脚行在按钮单击时可见。如果我在第一个按钮上单击所有服务器端,则在再次单击该按钮之前,列将变为可见,但页脚行不可见。我还没有尝试过所有客户端。
标签: javascript c# asp.net gridview onclientclick