代码之家  ›  专栏  ›  技术社区  ›  Philippe

如何在无序列表元素中添加表单输入

  •  0
  • Philippe  · 技术社区  · 16 年前

    我正在动态生成一个ASP窗体,我想添加 标签 输入 列表中的元素。

    例如,我希望以如下方式结束:

    <ul>
    <li><label for="input"/><input id=input"/></li>
    </ul>
    

    为此,我创建一个标签对象和一个文本框对象,然后分配标签的AssociatedControlID属性来链接这些对象。但我不能在列表项中添加这些内容,也不能在项目符号列表的控件集合中添加这些内容…

    任何想法都会被大大采纳。

    2 回复  |  直到 10 年前
        1
  •  4
  •   sliderhouserules    16 年前

    system.web.ui.htmlcontrols命名空间包含一些有用的控件。

    在你的ASPX中:

    <asp:PlaceHolder ID="PlaceHolder1" runat="server" />
    

    在您的代码背后:

    HtmlGenericControl list = new HtmlGenericControl("ul");
    for (int i = 0; i < 10; i++)
    {
        HtmlGenericControl listItem = new HtmlGenericControl("li");
        Label textLabel = new Label();
        textLabel.Text = String.Format("Label {0}", i);
        listItem.Controls.Add(textLabel);
        // etc...
        list.Controls.Add(listItem);
    }
    PlaceHolder1.Controls.Add(list);
    

    很有魅力。

        2
  •  0
  •   Michael DeLorenzo    16 年前

    你可以用中继器做类似的事情。

    <asp:Repeater ID="rpt" runat="server">
        <HeaderTemplate>
            <ul>
        </HeaderTemplate>
        <ItemTemplate>
            <li>
                <label for='<%# string.Format("ctrl-{0}", Container.ItemIndex) %>'>label for ctrl #<%# Container.ItemIndex %></label>
                <input id='<%# string.Format("ctrl-{0}", Container.ItemIndex) %>' type="text" />                
            </li>
        </ItemTemplate>
        <FooterTemplate>
            </ul>
        </FooterTemplate>
    </asp:Repeater>
    

    如果需要向列表中添加服务器控件,则需要对中继器的itemdatabound事件进行一些处理。