Domanda

Ho un controllo utente che contiene un datalist e voglio impostare l'origine dati del datalist su cose diverse a seconda della pagina in cui si trova il controllo utenti.

Quindi, penso che ciò che devo fare è esporre una proprietà pubblica del datalist che otterrà l'origine dati e la imposterà, in questo modo:

public datasource UserDataSource
{
get { return DataList1.DataSource; }
set { DataList1.DataSource = value; }
}

ma ovviamente sopra non funziona. Lo chiamerei così:

MyUserControl.UserDataSource = datasourcename;

e quindi in qualche modo database il datalist all'interno del controllo utente.

Ovviamente sono un po 'fuori dal mio elemento qui, ma spero di riuscire a farlo funzionare. Grazie per l'aiuto.

È stato utile?

Soluzione

Devi trovare il metodo di controllo find per trovare prima il tuo datalist e quindi assegnare l'origine dati come ...

DataList dl = (DataList)yourLoadedusercontrol.FindControl("yourDatalist");
    dl.DataSource = yourdatasource;

Altri suggerimenti

So che hai già accettato una risposta, ma sento di dover aggiungere i miei pensieri:

L'idea originale era corretta: era sufficiente chiamare il metodo databind del datalist dopo aver impostato l'origine dati. Non credo davvero che il metodo sopra descritto sia il metodo migliore. Dovresti proprio avere un metodo o una proprietà writeonly (come fai tu) che prende un possibile IList o IEnumerable del tuo oggetto personalizzato e lo lega direttamente al tuo datalist. La tua pagina o controllo che contiene questo controllo utente non dovrebbe essere a conoscenza del tuo tipo di controllo dei dati. Se lo cambi da un Datalist a un Repeater o a GridView, devi cambiarlo ovunque ti leghi al controllo dell'utente.

Esempio:

IList<CustomClass> results = new List<CustomClass>(); //you would load your collection from your database
this.myUserControl.LoadData(results);

Nel tuo controllo utente:

public void LoadData(IList<CustomClass> data){
  this.datalist1.datasource = data;
  this.datalist1.databind();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top