Domanda

Sto cercando di creare un controllo utente ASP.net che utilizza un ripetitore per scorrere su un numero di elementi in un ObjectDataSource che devo passare al controllo utente. Non sono sicuro di come passare l'origine dati dell'oggetto. Qualcuno sa come farlo?

È stato utile?

Soluzione

Puoi creare una proprietà nel controllo utente e passarla al ripetitore.

public class CustomUserControl
{
  private Repeater repeater;

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

Altri suggerimenti

Di seguito sono riportati i passaggi approssimativi per farlo (non testato).

    L'elenco
  • rende il controllo dell'utente un controllo di banca dati. Dai un'occhiata a questo articolo per vedere un esempio http://geekswithblogs.net/mnf/articles/ 92205.aspx .

  • nella pagina che utilizza il tuo controllo utente imposta la proprietà DataSourceId in modo dichiarativo o nel codice sull'origine dati oggetto.

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

  • Voce di elenco Associa il tuo ripetitore alla proprietà DataSourceId interna tramite un'espressione di associazione dichiarativa.

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

Se ti fai controllare l'ereditarietà da CompositeDataBoundControl

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

è possibile assegnare ad esso il DataSourceID.

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

quindi sotto il tuo controllo hai implementato

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

Dove l'origine dati sono i dati provenienti dall'oggetto ObjectDataSource

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top