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类?如果您将那些<代码>
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
}
}