我正在尝试构建一个 ASP.net 用户控件,该控件使用Repeater 来遍历我需要传递给用户控件的ObjectDataSource 中的多个项目。我不确定如何传递对象数据源。有人知道怎么做吗?
3 回答
您可以在用户控件中创建一个属性并将其传递给转发器。
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。
in the page that is consuming your usercontrol set the DataSourceId property declaratively or in code to your object data source.
<uc1:YourUserControl DataSourceId="YourObjectDataSourceID"></uc1:YourUserControl>
List item Bind your repeater to the internal DataSourceId property via a declarative binding expression.
<asp:repeater DataSourceId='<%# DataSourceId %>'></asp:repeater>
如果你让你的控制继承自 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 的数据