生成datalist次数

时间:2014-02-11 11:40:08

标签: c# asp.net dynamic datalist

我在页面上有一个文本框和DataList 现在,当用户在文本框中输入任意整数并单击按钮时,将生成相同的数据列表次数。

因为如果用户进入5,那么datalist将生成5次。 datalist包含相同的数据。

我对如何做到这一点没有任何想法?请帮我解决这个问题。

<asp:TextBox ID="txtNumber" runat="server"> -> 3

然后它生成Datalist:

<asp:DataList ID="dl" runat="server"></asp:DataList>
<asp:DataList ID="dl" runat="server"></asp:DataList>
<asp:DataList ID="dl" runat="server"></asp:DataList>

所以,如果用户输入例如5,我希望复制DataList 5次。

2 个答案:

答案 0 :(得分:0)

使用repeater,每个项目都是DataList

<asp:Repeater id="Repeater1" runat="server">
      <HeaderTemplate>
         <table>
      </HeaderTemplate>

      <ItemTemplate>
         <tr>
            <asp:DataList ID="dl" runat="server" DataSource = '<%# DataBinder.Eval(Container.DataItem, "MyCollectionProperty") %>' />
         </tr>
      </ItemTemplate>

      <FooterTemplate>
         </table>
      </FooterTemplate>

</asp:Repeater>

当用户输入例如10时,生成10个项目,每个项目包含需要显示的项目集合(示例中为MyCollectionProperty属性),并将10个项目的数组分配给转发器数据源

答案 1 :(得分:0)

似乎你会动态生成DataList。 如果DataList将包含相同的数据,那么您只能创建一个您熟悉的数据源。

对于我的示例,我将使用SqlDataSource作为我的数据源并将其共享给其他DataLists。 如果您为DataList创建模板(例如我的 dtlTemplate ),还要定义<ItemTemplate>元素,它会更简单。

<form id="form1" runat="server">
<asp:TextBox ID="txtNumber" runat="server">
<asp:Button ID="btnOK" runat="server" Text="Button" OnClick="btnOK_Click"/><br />

<asp:DataList Visible="false" ID="dtlTemplate" runat="server" DataKeyField="id" 
    DataSourceID="dataSource" Width="845px">
    <ItemTemplate>
       id:<asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' /><br />
       name:<asp:Label ID="nameLabel" runat="server" Text='<%# Eval("name") %>' /><br />
    </ItemTemplate>
</asp:DataList>

<asp:SqlDataSource ID="dataSource" runat="server" 
     ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
     SelectCommand="SELECT * FROM [Table]"></asp:SqlDataSource>
</form>

在您的按钮中,单击处理程序应如下所示:

protected void btnOK_Click(object sender, EventArgs e)
{
    int number = int.Parse(txtNumber.Text == "" ? "0" : txtNumber.Text);
    for (int i = 0; i < number; i++)
    {
        //Create new DataList with copying ItemTemplate from dtlTemplate
        DataList dtl = new DataList();
        dtl.ID = "dtl" + i;
        dtl.ItemTemplate = dtlTemplate.ItemTemplate;

        //Add new DataList to form1 (parent control)
        form1.Controls.Add(dtl);

        //Set the same data source with dtlTemplate to new DataList
        dtl.DataSourceID = dtlTemplate.DataSourceID;
        dtl.DataBind();
    }
}

我希望这会有所帮助。