Вопрос

Я пытаюсь создать пользовательский элемент управления ASP.net, который использует повторитель для перебора ряда элементов в ObjectDataSource, которые мне нужно передать в пользовательский элемент управления.Однако я не уверен, как передать источник данных объекта.Кто-нибудь знает, как это сделать?

Это было полезно?

Решение

Вы можете создать свойство в пользовательском элементе управления и передать его повторителю.

public class CustomUserControl
{
  private Repeater repeater;

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

Другие советы

Ниже приведены грубые шаги для этого (непроверенные).

  • List сделает ваш пользовательский элемент управления привязанным к данным.Посмотрите эту статью, чтобы увидеть пример 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top