2009-06-24 23 views
0

リピーターを使用してユーザーコントロールに渡す必要のあるObjectDataSource内のいくつかの項目を反復処理するASP.netユーザーコントロールを作成しようとしています。私はどのようにオブジェクトのデータソースを渡すかわからない。どのようにこれを行う方法を知っていますか?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/en-us/library/system.web.ui.webcontrols.repeater.datasource.aspx)は – User

+0

はいです。 (11文字以上...) –

0

あなたは、あなたがそれにDataSourceIDを割り当てることができますCompositeDataBoundControl

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

から継承する制御行った場合。

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

あなたにあなたはデータソースが、データがあなたのObjectDataSourceから

以下
+0

Askerはこれをユーザがコントロールしたいと思っています。サーバコントロールではありません。 –

1

を来ている

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

を実装するコントロールこの(未テスト)を行うためのラフなステップです。

  • リストユーザーコントロールをデータバインドコントロールにします。この記事を見て、http://geekswithblogs.net/mnf/articles/92205.aspxの例を見てください。

  • あなたのusercontrolを消費しているページでは、DataSourceIdプロパティを宣言的に、またはオブジェクトデータソースのコードに設定します。

    < UC1:YourUserControl DataSourceId = "YourObjectDataSourceID"> </UC1:YourUserControl>

  • リスト項目は、宣言型バインディング式を介して内部DataSourceIDプロパティに、あなたのリピーターをバインドします。

    < ASP:リピータDataSourceId = '<%#DataSourceId%>'> </ASP:リピータ>

関連する問題