2010-09-02 76 views
0

我有一箇中繼器,我想用它來多次顯示用戶控件,並填充數據。
目前,我有這樣的:使用用戶控制的中繼器

<asp:Repeater runat="server" ID="MyRepeater" > 
    <ItemTemplate> 
     <uc1:MyItems ID="MyItems1" runat="server" /> 
    </ItemTemplate> 
</asp:Repeater> 

我的用戶控件有三個屬性,這是我要填充每個。我目前有這樣的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    MyDataSource.SelectCommand = 
       "SELECT Name, Address, Phone " + 
       "FROM TestTable "; 
    MyDataSource.SelectCommandType = SqlDataSourceCommandType.Text; 
    DataView resultsdv = (DataView)MyDataSource.Select(DataSourceSelectArguments.Empty); 
    foreach (DataRow dr in resultsdv.Table.Rows) 
    {    
     MyItems1.Cust_Name = dr["Name"].ToString(); 
     MyItems1.Cust_Address = dr["Address"].ToString(); 
     MyItems1.Cust_Tel = dr["Phone"].ToString(); 
    } 
} 

很明顯,這不是我想做的。是否有可能告訴轉發器,我想填充我的用戶控件 - 通過數據綁定,或手動填充它類似於上面的方式?

回答

3
<asp:Repeater runat="server" ID="MyRepeater" > 
    <ItemTemplate> 
     <uc1:MyItems ID="MyItems1" MyItems="<%# Eval("Name") %>" ... runat="server" /> 
    </ItemTemplate> 
</asp:Repeater> 

protected void Page_Load(object sender, EventArgs e) 
{ 
    MyDataSource.SelectCommand = 
       "SELECT Name, Address, Phone " + 
       "FROM TestTable "; 
    MyDataSource.SelectCommandType = SqlDataSourceCommandType.Text; 
    DataView resultsdv = (DataView)MyDataSource.Select(DataSourceSelectArguments.Empty); 
    MyRepeater.DataSource = resultsdv.Table.Rows; 
    MyRepeater.DataBind() 

} 
+0

謝謝 - 這個工作有輕微的修改:CUST_NAME = <%#的eval( 「[\」 名稱\ 「]」)%> – 2010-09-02 15:29:13

1

我認爲需要一些更正:

<asp:Repeater runat="server" ID="MyRepeater" > 
    <ItemTemplate> 
     <uc1:MyItems ID="MyItems1" Cust_Name=<%#Eval("Name") %> Cust_Address=<%#Eval("Address")%> Cust_Tel=<%#Eval("Phone")%> runat="server" /> 
    </ItemTemplate> 
</asp:Repeater>