我在 gridview 的模板中有一个面板控件。
我需要在 javascript 函数中隐藏/取消隐藏面板,因为我需要将面板的 id 传递给 javascript。
问题是gridview中的所有面板都有相同的id,所以我需要为每个面板设置唯一的id。
我尝试这样做:
<asp:Panel id= "Panel_<%# Eval("ID")%>"
和其他一些变体,但总是会出错。
面板包含一些其他控件,我需要它是服务器端,因为我需要设置在代码隐藏(检查用户是否通过身份验证后)
我能做什么?
附注
它不必是 Panel,我可以使用 Findcontrol 找到并可以容纳其他控件的任何其他控件。
更新:
I set the the js event in code behind:
protected void gvw_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if (UserIsAuthenticated)
{
HyperLink title = e.Row.FindControl("lnkTitle") as HyperLink;
Panel panel = e.Row.FindControl("panel") as Panel;
title.Attributes.Add("onmouseover", "ShowHidePanel(" + panel.ClientID +")");
//All get the same id!!!
}
}
}
最佳答案
要在 javascript 中使用服务器端控件的 ID,您应该使用 ClientID
控件的属性。
<script type="text/javascript">
function hidePanel(panelId){
var panel = document.getElementById(panelId);
panel.style.display = 'none';
}
</script>
所以你可以在一些处理程序中使用它,比如 hidePanel(<%=panel.ClientID%>);
.
关于asp.net - 将 id 设置为 gridview 中的面板控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2450935/