Pergunta

Eu estou tentando construir um controle de usuário ASP.net que usa um repetidor para repetir um número de itens em um ObjectDataSource que eu preciso para passar para o controle de usuário. Não tenho certeza como passar a fonte objeto de dados no entanto. Qualquer um sabe como fazer isso?

Foi útil?

Solução

Você pode criar uma propriedade no controle de usuário e passá-lo para o repetidor.

public class CustomUserControl
{
  private Repeater repeater;

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

Outras dicas

A seguir estão os passos difíceis de fazer isso (não testado).

  • Lista de fazer o seu usercontrol um controle de ligação de dados. Dê uma olhada neste artigo para ver um exemplo http://geekswithblogs.net/mnf/articles/ 92205.aspx .

  • na página que está consumindo o seu usercontrol definir a propriedade DataSourceId declarativa ou em código para sua fonte de dados objeto.

  • Listar item Bind sua repetidora à propriedade DataSourceId interna através de uma expressão de ligação declarativa.

Se você fizer você controla Herdar do CompositeDataBoundControl

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

pode atribuir o DataSourceID a ele.

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

, em seguida, você controla a implementar

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

Onde a fonte de dados são dados provenientes de seu ObjectDataSource

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top