ASP.Netユーザーコントロール
-
22-07-2019 - |
質問
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からのデータである場合