编程方式创建字段集,OL/UL和ASP.Net李标签,C#

编程方式创建字段集,OL/UL和ASP.Net李标签,C#

问题描述:

我需要写一个ASP.Net形式,将产生以下HTML:编程方式创建字段集,OL/UL和ASP.Net李标签,C#

<fieldset> 
<legend>Contact Details</legend> 
<ol> 
<li> 
<label for="name">Name:</label> 
<input id="name" name="name" class="text" type="text" /> 
</li> 
<li> 
<label for="email">Email address:</label> 
<input id="email" name="email" class="text" type="text" /> 
</li> 
<li> 
<label for="phone">Telephone:</label> 
<input id="phone" name="phone" class="text" type="text" /> 
</li> 
</ol> 
</fieldset> 

然而,这些领域是添加到表单将在运行时确定,因此我需要在运行时创建字段集,并向其添加有序列表和列表项,并根据需要添加标签,文本框,复选框等。

我无法找到将创建这些标记的标准ASP.Net对象。

举例来说,我想这样做在C#中的以下内容:

FieldSet myFieldSet = new FieldSet(); 
myFieldSet.Legend = “Contact Details”; 
OrderedList myOrderedList = new OrderedList(); 

ListItem listItem1 = new ListItem(); 
ListItem listItem2 = new ListItem(); 
ListItem listItem3 = new ListItem(); 

// code here which would add labels and textboxes to the ListItems 

myOrderedList.Controls.Add(listItem1); 
myOrderedList.Controls.Add(listItem2); 
myOrderedList.Controls.Add(listItem3); 

myFieldSet.Controls.Add(myOrderedList); 

Form1.Controls.Add(myFieldSet); 

是否有能产生这一点,或任何标准的ASP.Net的对象是有实现相同的其他方式结果?

马特

你可以试试这个:

Panel myFieldSet = new Panel(); 
myFieldSet.GroupingText= “Contact Details”; 
HtmlGenericControl myOrderedList = new HtmlGenericControl("ol"); 

HtmlGenericControl listItem1 = new HtmlGenericControl ("li"); 
HtmlGenericControl listItem2 = new HtmlGenericControl ("li"); 
HtmlGenericControl listItem3 = new HtmlGenericControl ("li"); 

// code here which would add labels and textboxes to the ListItems 

myOrderedList.Controls.Add(listItem1); 
myOrderedList.Controls.Add(listItem2); 
myOrderedList.Controls.Add(listItem3); 

myFieldSet.Controls.Add(myOrderedList); 

Form1.Controls.Add(myFieldSet); 
+0

Thanks,Rewinder。这很好。而不是面板,我使用以下控件:http://dotnetslackers.com/articles/aspnet/BuildingGroupBoxControl.aspx - 再次感谢。 – Matt 2011-03-01 14:29:49

+0

这很有帮助。创建ol,创建li。将li添加到ol。将ol添加到面板。 – IMAbev 2011-07-27 13:20:00

根据上面的答案,我有这样的情况:一个数组被证明是有用的,如下所示。注意:我在id =“ulNoTree”的aspx代码中创建了一个无序列表。

int NumFloorsCt = 10; 
LinkButton[] rgBL; 
HtmlGenericControl[] rgLI; 

/// <summary> 
/// set up an array of LinkButtons with "li" controls 
/// - each LinkButton click is handled by the same event handler 
/// </summary> 
void SetUpLinkButtons(List<FLOOR> listFloorRecs) 
{ 
    NumFloorsCt = 10; 
    rgBL = new LinkButton[NumFloorsCt]; 
    rgLI = new HtmlGenericControl[NumFloorsCt]; 

    for (int i = 0; i < NumFloorsCt; i++) 
    { 
    rgBL[i] = new LinkButton(); 
    rgBL[i].ID = LB_ID_prefix + listFloorRecs[i].ID; 
    rgBL[i].Click += new System.EventHandler(LB_fp_Click); 
    rgBL[i].Text = listFloorRecs[i].DESCRIP; 
    rgBL[i].ToolTip = "Click here to display floor info"; 

    rgLI[i] = new HtmlGenericControl("li"); 
    rgLI[i].Controls.Add(rgBL[i]); 

    ulNoTree.Controls.Add(rgLI[i]); 
    } 
} 

/// <summary> 
/// event handler for any of the link buttons 
/// </summary> 
protected void LB_fp_Click(object sender, EventArgs e) 
{ 
    LinkButton btn = (LinkButton)(sender); 
    // do your action here 
}