c# – 如何循环控件以获取特定类型的控件?
发布时间:2020-12-15 21:31:05 所属栏目:百科 来源:网络整理
导读:我有这样的div: 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" ru
我有这样的div:
<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> 在运行时创建时listItems(HtmlGenericControl outer_li =新HtmlGenericControl( “里”))在(UL具有属性RUNAT = “服务器”). 现在我想做的是: 编辑:根据答案: foreach (Control c in columns.Controls.OfType<HtmlGenericControl>()) { var ctrl = (HtmlGenericControl)c; if (ctrl.TagName == "ul" && ctrl.ID != "column1") { foreach (Control li in ctrl.Controls.OfType<HtmlGenericControl>()) { var ctrl_li = (HtmlGenericControl)li; if (ctrl_li.TagName == "li") { string id = ctrl_li.ID; } } } } 虽然我的页面上有li,但这根本无法获得’li’ 编辑2: 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); } 解决方法
我测试了这个,并手动添加了一些< li>.如果我在他们的标签中设置runat =“server”,我可以让他们出现.因此,您用于生成和添加ListItems的代码不会使用runat创建它们.
编辑您需要考虑使用实际的ASP .NET控件(如DataGrid或Repeater或BulletedList)作为MAW74656建议而不是HTML< ul>. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |