質問

Repeaterを使用して、ユーザーコントロールに渡す必要があるObjectDataSource内の多数のアイテムを反復処理するASP.netユーザーコントロールを構築しようとしています。しかし、オブジェクトデータソースを渡す方法はわかりません。誰でもこれを行う方法を知っていますか?

役に立ちましたか?

解決

ユーザーコントロールでプロパティを作成し、リピーターに渡すことができます。

public class CustomUserControl
{
  private Repeater repeater;

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

他のヒント

これを行うための大まかな手順を以下に示します(テストなし)。

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

  • ユーザーコントロールを使用しているページで、DataSourceIdプロパティを宣言的にまたはコードでオブジェクトデータソースに設定します。

    <!> lt; uc1:YourUserControl DataSourceId = <!> quot; YourObjectDataSourceID <!> quot; <!> gt; <!> lt; / uc1:YourUserControl <!> gt;

  • リストアイテム宣言型バインディング式を使用して、リピーターを内部DataSourceIdプロパティにバインドします。

    <!> lt; asp:repeater DataSourceId = '<!> lt;%#DataSourceId%<!> gt;' <!> gt; <!> lt; / asp:repeater <!> gt;

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

dataSourceがObjectDataSourceからのデータである場合

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top