我在page和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,我希望复制5次DataList。
发布于 2014-02-11 19:50:39
使用中继器,每一项都是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个项目的数组分配给中继器数据源
发布于 2014-02-13 17:56:27
看起来你会动态生成DataList。如果DataList将包含相同的数据,那么您只能创建一个您熟悉的数据源。
对于我的示例,我将使用SqlDataSource作为我的数据源,并将其共享给其他DataLists。如果您为DataList创建了一个模板(如my 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();
}
}我希望这能有所帮助。
https://stackoverflow.com/questions/21700814
复制相似问题