2009-06-24 155 views
0

我想構建一個ASP.net用戶控件,它使用Repeater遍歷ObjectDataSource中的一些項目,我需要將其傳遞給用戶控件。雖然我不確定如何傳遞對象數據源。有人知道怎麼做嗎?ASP.Net用戶控件

回答

3

您可以在用戶控件中創建一個屬性並將其傳遞給中繼器。

public class CustomUserControl 
{ 
    private Repeater repeater; 

    public ObjectDataSource DataSource 
    { 
    get 
    { 
     return this.repeater.DataSource; 
    } 
    set 
    { 
     this.repeater.DataSource = value; 
    } 
    } 
} 
+0

想知道,這可以通過將屬性數據類型的`Object`如進行更加靈活的[Repeater.DataSource](http://msdn.microsoft.com/zh-cn/library/system.web.ui.webcontrols.repeater.datasource.aspx)是 – User 2012-09-06 04:43:20

+0

是的。 (11個更多的字符去...) – 2012-09-10 19:48:34

0

如果你讓你控件繼承從CompositeDataBoundControl

[ToolboxData("<{0}:TopNav runat=server></{0}:TopNav>")] 
public class TopNav : CompositeDataBoundControl 

您可以在的DataSourceID分配給它。

<uc1:TopNav ID="YUITopNav1" runat="server" DataSourceID="ObjectDataSource1" /> 

然後在你控制你實現

protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding) 
    { 
     this.Repeater1.DataSource = dataSource; 
     this.Repeater1.DataBind(); 
    } 

當數據源是數據從您的ObjectDataSource

1

未來下面是粗糙的步驟來做到這一點(未經測試)。

  • 列表使您的usercontrol數據綁定控件。看看這篇文章來看一個例子http://geekswithblogs.net/mnf/articles/92205.aspx

  • 在使用您的usercontrol的頁面中,聲明性地或以代碼形式將DataSourceId屬性設置爲您的對象數據源。

    < UC1:YourUserControl的DataSourceID = 「YourObjectDataSourceID」> </UC1:YourUserControl>

  • 列表項經由聲明性綁定表達綁定您的中繼器到內部DataSourceID屬性。

    < ASP:中繼器的DataSourceID = '<%#的DataSourceID%>'> </ASP:中繼器>