0 votes

Définissez une source de données datalist à partir de l'intérieur d'un contrôle utilisateur - asp.net c#

J'ai un usercontrol qui contient un datalist, et je veux définir la source de données du datalist sur des choses différentes en fonction de la page sur laquelle se trouve le usercontrol.

Donc, je pense que ce que je dois faire est exposer une propriété publique du datalist qui obtiendra la source de données et la définira, comme ceci:

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

mais cela ne fonctionne évidemment pas. Je le ferais alors comme ceci:

MyUserControl.UserDataSource = datasourcename;

et ensuite, de quelque manière, lier les données au datalist à l'intérieur du usercontrol.

Évidemment, je suis un peu hors de mon élément ici, mais j'espère pouvoir y arriver. Merci pour toute aide.

1voto

Muhammad Akhtar Points 32101

Vous devez utiliser la méthode find control pour rechercher votre dataliste en premier lieu, puis attribuer une source de données comme...

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

1voto

Dan Appleyard Points 2489

Je sais que vous avez déjà accepté une réponse, mais je pense que je dois ajouter mes réflexions:

Votre idée initiale était correcte - vous deviez simplement appeler la méthode databind de votre datalist après avoir défini la source de données. Je ne pense vraiment pas que la méthode mentionnée ci-dessus soit la meilleure façon de procéder. Vous devriez vraiment avoir une méthode ou une propriété write-only (comme vous le faites) qui prend éventuellement un IList ou IEnumerable de votre objet personnalisé et le lie directement à votre datalist. Votre page ou contrôle contenant ce contrôle utilisateur ne devrait pas être conscient de votre type de contrôle de données. Si vous le modifiez d'un Datalist à un Repeater ou à un GridView, vous devez le modifier partout où vous liez à votre contrôle utilisateur.

Exemple:

IList results = new List(); // vous chargeriez votre collection à partir de votre base de données
this.myUserControl.LoadData(results);

Dans votre contrôle utilisateur:

public void LoadData(IList data){
  this.datalist1.sourceDeDonnées = data;
  this.datalist1.databind();
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X