c# - 在 GridView 中的 ASCX 控件内的控件上使用 Javascript 显示隐藏。 (ASP.NET + JavaScript)

标签 c# javascript asp.net vb.net

我编写了一个网络用户控件(ascx)。在里面,有一个面板,我想在单击用户控件内的超链接时显示/隐藏该面板。

通常,只需执行以下操作即可轻松实现(onclick 属性将添加到预渲染时的超链接中):

 var PanelToShow = document.getElementById('<%=PanelInvoiceHasBeenCreated.ClientID %>');

    if (PanelToHide != null) {
        PanelToHide.style.display = 'none';
    }

但是因为 ascx 控件保存在 gridview 中,所以上面的代码将评估所有名为“PanelInvoiceHasBeenCreated”的控件(其中 gridview 中有很多)。它唯一起作用的时候是当 gridview 中有 1 行时。目前,使用我现有的代码,如果我单击任意行中的超链接,它会显示/隐藏 GridView 底行中的面板!

因此,我的问题是如何获得我需要在正确行的正确控件上显示/隐藏的实际的唯一 ID??????

提前致谢。

最佳答案

您可以在gridview的rowdatabound事件中执行此操作 像这样的东西

在 gridview rowdatabound 事件中编写以下代码

var usercontrol1=(userControl)e.item.findcontrol("usercontrol1");
var hyperLink1=(Hyperlink)usercontrol1.FindControl("hyperLink1");
var PanelInvoiceHasBeenCreated=(Panel)usercontrol1.FindControl("PanelInvoiceHasBeenCreated");

hyperLink1..Attributes.Add("onclick", "javascript:return ShowHidePanel('"+ PanelInvoiceHasBeenCreated.ClientID +"')"); 

你的aspx页面上的java脚本函数应该是这样的

<script type="text/javascript">
function ShowHidePanel(panelid)
{

var PanelToShow = document.getElementById('panelid');

    if (PanelToHide != null) {
        PanelToHide.style.display = 'none';
    }
return false;

}
</script>

关于c# - 在 GridView 中的 ASCX 控件内的控件上使用 Javascript 显示隐藏。 (ASP.NET + JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3892028/

相关文章:

c# - 从两个不同的 View 绑定(bind)到数据源。 MVVM、WPF

c# - 在 MVC 中加载页面时是否可以显示验证错误 - 4(使用模型验证)

javascript - javascript 数组中的 JSON 导致错误无法读取属性

javascript - AngularJS: Controller 中的函数被模板多次调用

c# - 从 ASP.NET 异步执行 SSIS 或 DTS 包

c# - 使用 ImpersonateLoggedOnUser 移动文件

c# - 用 TextBox、MVVM C#​​ 编写的文本的数据验证

c# - 有没有办法在我的 ASP.Net MVC 5 应用程序之间传递 Windows 身份验证 session ?

javascript - 提交表单后如何留在同一页面

c# - 消息队列异常 : Queue does not exist or you do not have sufficient permissions to perform the operation