Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何循环通过控件来获得特定类型的控件?_C#_Asp.net_Css_Linq_Controls - Fatal编程技术网

C# 如何循环通过控件来获得特定类型的控件?

C# 如何循环通过控件来获得特定类型的控件?,c#,asp.net,css,linq,controls,C#,Asp.net,Css,Linq,Controls,我有一个这样的部门: <div id="columns" runat="server"> <ul id="column1" class="column" > <!-- /////////////// --> </ul> <ul id="column2" class="column" runat="server"> </ul> <

我有一个这样的部门:

<div id="columns" runat="server">
       <ul id="column1" class="column" >
        <!-- /////////////// -->
        </ul>
        <ul id="column2" class="column" runat="server">
        </ul>
        <ul id="column3" class="column" runat="server">
        </ul>
        <ul id="column4" class="column" runat="server">
            <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
        </ul>
    </div>
这不起作用,我根本无法获得“li”,尽管我的页面上有
li


编辑2:
也许您可以将列表更改为使用ASP listitem控件,这将允许您

试试这样的。使用is强制转换控件进行测试是有效的

  foreach (Control c in Page.Controls)
    {
        if (c is ListItem)
        {
            //do something with the control
        }
    }

我对此进行了测试,并手动添加了一些
  • 。如果我在他们的标签中设置
    runat=“server”
    ,我就可以让他们出现。因此,您用于生成和添加ListItems的代码不是使用runat创建它们

    编辑

    您需要考虑使用一个实际的ASP.NET控件,如DATAGRID或中继器或BraveDead,而不是HTML<代码> UL>

    ——为什么不在这里使用<代码> BuffeldList类?如果您将那些<代码>
  • <代码>作为HTML文本添加到占位符中,就ASP.Net而言,它们不是“控件”。您不能将“runat=server”添加为普通属性以使其成为控件,您需要将其添加为HtmGenericControl或类似的内容。您能检查我上次的编辑吗?嗯,我尝试添加属性<代码>外部属性。添加(“runat”、“server”)but invain..尽管它出现在视图源代码中,并带有
    runat=“server”
     protected void CreateBlockOfData(string widget_color, int column_par, string process_name, int block_type, int block_id)
            {
                HtmlGenericControl outer_li = new HtmlGenericControl("li");
                outer_li.Attributes.Add("class", widget_color);
                if (column_par == 1)
                {
                    column1.Controls.Add(outer_li);
                }
                else if (column_par == 2)
                {
                    //uppnl_2.ContentTemplateContainer.Controls.Add(outer_li);
                    column2.Controls.Add(outer_li);
                }
                else if (column_par == 3)
                {
                    column3.Controls.Add(outer_li);
                }
                else if (column_par == 4)
                {
                    column4.Controls.Add(outer_li);
                }
                ////////////////////////////////////////////////////////////
                HtmlGenericControl div_head = new HtmlGenericControl("div");
                div_head.Attributes.Add("class", "widget-head");
                outer_li.Controls.Add(div_head);
                ////////////////////////////////////////////////////////////
                HtmlGenericControl h3 = new HtmlGenericControl("h3");
                div_head.Controls.Add(h3);
                ///////////////////////////////////////////////////////////
                Label lbl_process_name = new Label();
                lbl_process_name.Text = process_name.TrimEnd();
                h3.Controls.Add(lbl_process_name);
                ///////////////////////////////////////////////////////////
                HtmlGenericControl div_content = new HtmlGenericControl("div");
                div_content.Attributes.Add("class", "widget-content");
                outer_li.Controls.Add(div_content);
                ////////////////////////Data//////////////////////////////
                Control crl_data = FormTheData(block_type, block_id);
                PlaceHolder1.Controls.Add(crl_data);
                crl_data.DataBind();
                div_content.Controls.Add(crl_data);
            }
    
      foreach (Control c in Page.Controls)
        {
            if (c is ListItem)
            {
                //do something with the control
            }
        }