ASP.Net 用户控制
-
22-07-2019 - |
题
我正在尝试构建一个 ASP.net 用户控件,该控件使用 Repeater 来迭代 ObjectDataSource 中需要传递给用户控件的多个项目。我不确定如何传递对象数据源。有人知道怎么做吗?
解决方案
可以创建在用户控件的属性并把它传递给中继器。
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 属性设置为对象数据源。
<uc1:YourUserControl DataSourceId="YourObjectDataSourceID"></uc1:YourUserControl>
列表项 通过声明性绑定表达式将转发器绑定到内部 DataSourceId 属性。
<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
不隶属于 StackOverflow