ASP.Net用户控制

时间:2009-06-24 21:09:23

标签: asp.net user-controls objectdatasource

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

3 个答案:

答案 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

  • 在使用usercontrol的页面中,
  • 以声明方式或在代码中将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的数据