0

我正在尝试构建一个 ASP.net 用户控件,该控件使用Repeater 来遍历我需要传递给用户控件的ObjectDataSource 中的多个项目。我不确定如何传递对象数据源。有人知道怎么做吗?

4

3 回答 3

3

您可以在用户控件中创建一个属性并将其传递给转发器。

public class CustomUserControl
{
  private Repeater repeater;

  public ObjectDataSource DataSource
  {
    get
    {
      return this.repeater.DataSource;
    }
    set
    {
      this.repeater.DataSource = value;
    }
  }
}
于 2009-06-24T21:14:56.467 回答
1

以下是执行此操作的粗略步骤(未经测试)。

  • 列表使您的用户控件成为数据绑定控件。看看这篇文章,看看一个例子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>

于 2009-06-24T21:23:32.143 回答
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();
    }

数据源是来自您的 ObjectDataSource 的数据

于 2009-06-24T21:16:50.753 回答