编程方式创建字段集,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);
答
根据上面的答案,我有这样的情况:一个数组被证明是有用的,如下所示。注意:我在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
}
Thanks,Rewinder。这很好。而不是面板,我使用以下控件:http://dotnetslackers.com/articles/aspnet/BuildingGroupBoxControl.aspx - 再次感谢。 – Matt 2011-03-01 14:29:49
这很有帮助。创建ol,创建li。将li添加到ol。将ol添加到面板。 – IMAbev 2011-07-27 13:20:00