我想在后面的asp.net c#代码中创建嵌套标签 它是:
<fieldset>
<legend>دسترسی ها</legend>
<fieldset>
<legend>'<%# Eval("Group") %>'</legend>
<div style="width: 95%; margin: auto; padding: 0px 5% 0px 0px; text-align: center; display: inline-block;">
<div class="tblHeader">
<div class="TblTitle">عنوان</div>
<div class="TblChk">دارد</div>
<div class="TblChk">اصلا ندارد</div>
<div class="TblTitle">عنوان</div>
<div class="TblChk">دارد</div>
<div class="TblChk">اصلا ندارد</div>
</div>
<div>
<div class="TblTitle">
<span>'<%# Eval("Item") %>'</span>
</div>
<div class="TblChk">
<input type="checkbox" name="10-1" />
</div>
<div class="TblChk">
<input type="checkbox" name="10-1" />
</div>
<div class="TblTitle">
<span>'<%# Eval("Item") %>'</span>
</div>
<div class="TblChk">
<input type="checkbox" name="11" />
</div>
<div class="TblChk">
<input type="checkbox" name="11" />
</div>
</div>
</div>
</fieldset>
事实上我有很多小组,其中包含一些孩子,'<%# Eval("Item") %>'
我该怎么办?
如果我使用DataList
,则'<%# Eval("Group") %>'
重复,这不是我的目的
我想显示它们如下图:
答案 0 :(得分:1)
使用Panel
而不是呈现为div但是纯服务器控件。嵌套它们很简单,您只需要创建面板并将它们添加到外部面板的Controls
- 属性中。
所以你可以使用PlaceHolder
- 控件(这是一个没有自己渲染的容器):
<asp:PlaceHolder ID="PanelContainer" runat="server">
</asp:PlaceHolder>
在codebehind中添加如下方法:
private void DataBindPanelContainer()
{
Panel main = new Panel();
main.CssClass = "ItemData";
Panel tblTitle = new Panel();
tblTitle.CssClass = "TblTitle";
Label lblTitle = new Label();
lblTitle.ID = "LblTitle";
lblTitle.Text = someField; // i don't know your datasource
tblTitle.Controls.Add(lblTitle);
main.Controls.Add(tblTitle);
Panel tblChk = new Panel();
tblChk.CssClass = "TblChk";
CheckBox chk = new CheckBox();
chk.ID = "Chk1";
chk.Text = "text for checkbox";
tblChk.Controls.Add(chk);
main.Controls.Add(tblChk);
// ....
this.PanelContainer.Controls.Add(main);
}
并从Page_Load
:
protected void Page_Load(object sender, EventArgs e)
{
DataBindPanelContainer();
}