asp.net - 将 id 设置为 gridview 中的面板控件

标签 asp.net javascript

我在 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/

相关文章:

C# ASP.Net Parameters.AddWithValue 拒绝参数的空值

c# - azure "The remote server returned an error: (530) Not logged in."

javascript - 运行异步函数 N 次,其中 N 取决于调用返回的内容

javascript - 为什么 Babel.js 将生成器转换为非顺序开关盒?

.net - 在新项目中创建部分类

c# - Powershell 通用 session 并在 Exchange 远程管理 session 中导入此 session

c# - 将 GridView 导出到 XLS --- 分页问题

javascript - Dust.js 中的动态键名

javascript - 找到提交表单的按钮

javascript - 使用纯 JavaScript 获取不包含数字的元素