ASP.Net 用户控制

发布于 2024-07-24 23:14:32 字数 109 浏览 4 评论 0原文

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

I'm trying to build an ASP.net user control that uses a Repeater to iterate over a number of items in an ObjectDataSource that I need to pass in to the user control. I'm not sure how to pass the object data source in though. Any one know how to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我不在是我 2024-07-31 23:14:32

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

public class CustomUserControl
{
  private Repeater repeater;

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

You can create a property in the user control and pass it to the repeater.

public class CustomUserControl
{
  private Repeater repeater;

  public ObjectDataSource DataSource
  {
    get
    {
      return this.repeater.DataSource;
    }
    set
    {
      this.repeater.DataSource = value;
    }
  }
}
半衾梦 2024-07-31 23:14:32

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

  • 列表使您的用户控件成为数据绑定控件。 查看这篇文章以查看示例 http://geekswithblogs.net/mnf/articles/92205.aspx

  • 在使用用户控件的页面中,以声明方式或以代码方式将 DataSourceId 属性设置为对象数据源。

  • 列表项通过声明性绑定表达式将转发器绑定到内部 DataSourceId 属性。

Below are the rough steps to do this (untested).

  • List make your usercontrol a databound control. Take a look at this article to see an example 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>

淑女气质 2024-07-31 23:14:32

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

If you make you control inherit from CompositeDataBoundControl

[ToolboxData("<{0}:TopNav runat=server></{0}:TopNav>")]
public class TopNav : CompositeDataBoundControl

you can assign the DataSourceID to it.

<uc1:TopNav ID="YUITopNav1" runat="server" DataSourceID="ObjectDataSource1"  />

then in you control you implement

    protected override int CreateChildControls(IEnumerable dataSource, bool dataBinding)
    {
        this.Repeater1.DataSource = dataSource;
        this.Repeater1.DataBind();
    }

Where the dataSource is data coming from your ObjectDataSource

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文