2010-09-22 42 views
0

Je sais que la question a déjà été publiée here mais nous n'avons pas obtenu une vraie solution.Comment accéder à l'élément DataSource lié dans l'événement DataBound de ASP.NET ListView?

J'ai lié mon ListView à un SqlDataSource et je veux écrire du texte dans un contrôle présent dans la vue créée dans le LayoutTemplate en fonction de certaines propriétés des lignes retournées.

Évidemment, j'utilise l'événement ItemDataBound pour alimenter mes éléments mais ce n'est pas le point.

La solution spontanée consistait à lier l'événement ListView.DataBound et à accéder à la source de données brute (un DataTable?) Et à effectuer les calculs requis.

J'ai inspecté la propriété Items et, malgré le fait qu'elle n'était pas vide, la propriété DataItem associée était null.

Avez-vous une suggestion?

La seule solution que je puisse trouver consiste à exécuter les calculs dans l'événement ItemDataBound et à accumuler le résultat dans certains champs privés. Mais c'est vraiment moche de voir et rend plus difficile d'obtenir certaines des valeurs requises.

Merci beaucoup.

Répondre

0

Dans le ItemDataBound, vous devriez être en mesure d'accéder à la source de données pour le Listview par la propriété DataSource (vous devrez peut-être de le jeter à un DataTable):

protected void Listview1_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    DataTable sourceData; 

    sourceData = (DataTable)Listview1.DataSource; 

    // sourceData is a DataTable, you can run .Compute or whatever you need 
} 
+1

Malchanceux il ne fonctionne pas. La propriété DataSource est null si la liaison provient de la propriété DataSourceID. :( – Kralizek