Pregunta

Estoy tratando de construir un control de usuario ASP.net que utiliza un repetidor para iterar sobre una serie de elementos en un ObjectDataSource que necesito pasar al control de usuario. Sin embargo, no estoy seguro de cómo pasar la fuente de datos del objeto. ¿Alguien sabe cómo hacer esto?

¿Fue útil?

Solución

Puede crear una propiedad en el control de usuario y pasarla al repetidor.

public class CustomUserControl
{
  private Repeater repeater;

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

Otros consejos

A continuación se detallan los pasos generales para hacer esto (no probado).

    La lista
  • hace que su control de usuario sea un control de enlace de datos. Eche un vistazo a este artículo para ver un ejemplo http://geekswithblogs.net/mnf/articles/ 92205.aspx .

  • en la página que consume su control de usuario, establezca la propiedad DataSourceId declarativamente o en código para su fuente de datos de objeto.

    < uc1: YourUserControl DataSourceId = " YourObjectDataSourceID " > < / uc1: YourUserControl >

  • Elemento de la lista Enlace su repetidor a la propiedad DataSourceId interna mediante una expresión de enlace declarativa.

    < asp: repetidor DataSourceId = '<% # DataSourceId% >' > < / asp: repetidor >

Si hace que controle heredar de CompositeDataBoundControl

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

puede asignarle el DataSourceID.

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

entonces en tu control implementas

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

Donde dataSource es información proveniente de su ObjectDataSource

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top