ASP.Net用户控件

qxsslcnc  于 2022-11-19  发布在  .NET
关注(0)|答案(3)|浏览(206)

我正在尝试建立一个ASP.net使用者控件,它使用Repeater来逐一查看ObjectDataSource中的许多项目,我需要将这些项目传入使用者控件。不过,我不确定如何传入对象数据来源。有人知道如何做吗?

2q5ifsrm

2q5ifsrm1#

您可以在使用者控件中建立属性,并将它传递给重复控件。

public class CustomUserControl
{
  private Repeater repeater;

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

lh80um4z2#

下面是执行此操作的大致步骤(未测试)。

  • 列表使你的用户控件成为一个数据绑定控件。看看这篇文章,看看一个例子http://geekswithblogs.net/mnf/articles/92205.aspx
  • 请在使用您的使用者控件的网页中,以宣告方式或在程式码中将DataSourceId属性设定为对象数据来源。

<uc1:YourUserControl DataSourceId="YourObjectDataSourceID"></uc1:YourUserControl>

  • 通过声明性绑定表达式将Repeater绑定到内部DataSourceId属性。

〈asp:repeater数据源ID =“〈%#数据源ID %〉”〉</asp:repeater>

9rbhqvlz

9rbhqvlz3#

如果使控件继承自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的数据

相关问题