Je tente d'écrire un contrôle personnalisé. Je veux autoriser son utilisateur à spécifier un DataSourceId (un peu comme GridView, Repeater, etc.).Le contrôle personnalisé utilise DataSourceId
Je peux trouver la source de données qui correspond à l'identifiant. Et je peux obtenir le DataSourceView associé. Mais la seule façon d'obtenir les données semble être avec une méthode Select asynchrone. Bien sûr, je peux configurer le rappel de sorte que mon code bloque jusqu'à ce que le rappel se produise. Mais cela demande tellement de girations bizarres que je soupçonne que je fais quelque chose de mal.
Si je veux qu'un contrôle fonctionne comme certains des autres contrôles de données ASP.NET, que dois-je faire différemment?
est ici un peu que je l'ai écrit:
string dataSourceId = "SomeDataSourceForTesting";
protected override void RenderContents(HtmlTextWriter writer)
{
IDataSource ds = (IDataSource)Parent.FindControl(dataSourceId);
List<string> viewNames = new List<string>();
foreach(string name in ds.GetViewNames())
{
viewNames.Add(name);
}
string viewname = viewNames[0];
writer.WriteLine("the viewname is " + viewname);
DataSourceView view = ds.GetView(viewname);
view.Select(...); //this really has to be asynchronous?
//write out some stuff from the data source
}
Parfait. Je me suis dit qu'il me manquait quelque chose comme ça. Merci! – Eric