我正在尝试构建一个ASP.net用户控件,该控件使用Repeater迭代我需要传递给用户控件的ObjectDataSource中的多个项目。我不知道如何传递对象数据源。谁知道怎么做?
答案 0 :(得分:3)
您可以在用户控件中创建属性并将其传递给转发器。
public class CustomUserControl
{
private Repeater repeater;
public ObjectDataSource DataSource
{
get
{
return this.repeater.DataSource;
}
set
{
this.repeater.DataSource = value;
}
}
}
答案 1 :(得分:1)
以下是执行此操作的粗略步骤(未经测试)。
列表使您的usercontrol成为数据绑定控件。请查看此文章,查看示例http://geekswithblogs.net/mnf/articles/92205.aspx。
以声明方式或在代码中将DataSourceId属性设置为对象数据源。
< uc1:YourUserControl DataSourceId =“YourObjectDataSourceID”>< / uc1:YourUserControl>
列表项通过声明性绑定表达式将转发器绑定到内部DataSourceId属性。
< asp:repeater DataSourceId ='<%#DataSourceId%>'>< / asp:repeater>
答案 2 :(得分: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();
}
dataSource是来自ObjectDataSource的数据