2014-02-11 58 views
2

我在頁面上有一個文本框和DataList。
現在,當用戶在文本框中輸入任何整數並點擊按鈕時,相同的數據列表將被生成多少次。

即如果用戶輸入5,則datalist將生成5次。 datalist包含相同的數據。

我不知道如何做到這一點?請幫我解決這個問題。生成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> 

所以,我想的DataList 5次副本,如果用戶例如進入5.

+0

這是什麼問題? –

+0

@ArsenMkrt「en用戶在文本框中輸入任意整數,然後單擊按鈕,然後將生成相同的數據列表,並且不知道如何操作? - 他想要生成一個數據列表(如在其底部的代碼示例中),其中的一些項目等於用戶在文本框中輸入的數字。 –

+0

這會有所幫助,http://www.codeproject.com/Questions/370784/How-To-Create-Dynamically-datalist – ankur

回答

0

使用中繼器,每個項目其中是的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個項目的數組分配給中繼器數據源

+0

我不想要10個項目。如果用戶輸入例如10,我想要Datalist的副本10次。 –

+0

您可以將所有10個元素的引用保留爲相同的數據項,這是否有意義? –

+0

我不知道這就是爲什麼我在這裏發佈我的問題。但我想要數據的副本。 –

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

我希望這將有助於。