【问题标题】:How to use generated ID's in code behind ASP.NET如何在 ASP.NET 后面的代码中使用生成的 ID
【发布时间】:2019-04-26 19:32:13
【问题描述】:

我想隐藏或显示我的网页部分。问题是css Id是在后面的代码中创建的。我不知道如何访问它们。任何帮助将不胜感激。

在函数 ShowColumn KanbanColum 中应该是 collapseSection0、collapseSection1 ....和 ​​collapseSection collapseDiv0、collapseDiv1 ....但我无法访问它们。因为变量是在后台创建的。

        protected void ShowColumn(object sender, EventArgs e)
        {
            kanbanColumn.Visible = true;
            collapseSection.Visible = false; 
        }


        public void PopulateLists(int numberOfColumns,List<string> lstColumnsNames, List<int> lstTaskPerColumns, List<string> lstTaskText,  List<string> headerColorOptions)
        {
           HtmlGenericControl li;
            string colorChosen;

            for (int j = 0; j < numberOfColumns; j++)
            {
                System.Web.UI.HtmlControls.HtmlGenericControl CollapseDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
                CollapseDiv.ID = "collapseSection" + j;
                CollapseDiv.Attributes.Add("class", "collapsed-kanban");
                CollapseDiv.Style.Add("background-color", "#f4ce46");
                dragListColumns.Controls.Add(CollapseDiv);

                ImageButton expanImage = new ImageButton();
                expanImage.ImageUrl= "~/images/maximize.png";
                expanImage.ID = "expandImageId" + j;
                expanImage.Height = 20;
                expanImage.Width = 20;
                expanImage.Attributes.Add("class", "second-menu-icon");
                expanImage.Attributes.Add("OnClick", "ShowColumn");
                CollapseDiv.Controls.Add(expanImage);


                Label lblCollapse = new Label();
                lblCollapse.Text = lstColumnsNames[j];
                lblCollapse.Attributes.Add("class", "vertical-text");
                CollapseDiv.Controls.Add(lblCollapse);

            }
}

这是一个可视化表示代码的图像。

我可以做些什么来使用我在后台创建的 cssId,或者有其他方法可以解决这个问题。非常感谢。

【问题讨论】:

  • 有点不清楚你的意思。您究竟想在什么时候隐藏或显示此部分?使用Javascript,你在说什么?如果你总是给你的元素同一个类,那么你可以通过你的 Javascript 中的类来访问它们
  • 我没有使用任何我想要的 javascript 点击按钮来隐藏或显示页面中的元素。使用 id.Visible=true/false。我将添加图像以使其更清晰。
  • 我知道 ShowColumn 将在随后的回发中运行吗?您应该知道,像这样动态创建的元素不会在 ASP.NET Web 表单中的回发之间持续存在。下次运行您的代码时,它们将不再存在(至少不存在,除非您在尝试执行其他任何操作之前重新运行 PopulateLists 函数)。但老实说,如果它是一个简单的显示/隐藏动作,那么使用 JavaScript 会更加用户友好和高效,并且避免不必要地往返于服务器和返回这样一个简单的动作。
  • google "javascript 手风琴" 你会得到几十个例子。但也许先学习 JavaScript 教程并了解该语言。作为一名网络开发人员,如今这是一项至关重要的技能。

标签: c# asp.net


【解决方案1】:

也许您的意思是您在生成的网页上找到的 ID 与您在代码隐藏中定义的 ID 不同?

您可能想看看 asp 网络标签的 ClientIDMode 属性。

如果您没有明确指定,ASP.NET 会为您的 html 生成一些奇怪的 ID。

查看THIS 文章,看看它是否是您想要的。

如果你想从页面管理 ids,你需要 javascript。 使用 JQuery 轻松访问 ids

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2011-02-23
    • 2011-02-20
    • 1970-01-01
    • 2011-11-13
    • 2013-06-03
    相关资源
    最近更新 更多