我在页面上有一个文本框和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次。
答案 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();
}
}
我希望这会有所帮助。