隐藏在代码中的Html标记

时间:2015-12-14 09:23:47

标签: c# html asp.net

我想在后面的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") %>'重复,这不是我的目的 我想显示它们如下图:
enter image description here

1 个答案:

答案 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();
}