2010-07-13 2 views
1

Je reçois l'erreur suivante lors de la commande itemdataboundevent d'un listview.Quel est le problème avec l'événement itemdatabound dans listview?

Description: Une erreur s'est produite lors de la compilation d'une ressource requise pour traiter cette demande. Veuillez vérifier les détails d'erreur spécifiques suivants et modifier votre code source de manière appropriée.

compilateur Message d'erreur: CS0030: Impossible de convertir le type 'System.Web.UI.WebControls.ListViewItemType' à 'System.Data.DataRowView'

d'erreur Source:

Line 91:    CheckBox chk = (CheckBox)e.Item.FindControl("chkFocusArea"); 
Line 92:    
Line 93:    System.Data.DataRowView rowView = (System.Data.DataRowView)e.Item.ItemType; 
Line 94:    
Line 95:   } 

mon code derrière pour l'événement itembound est

protected void lvFocusArea_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     CheckBox chk = (CheckBox)e.Item.FindControl("chkFocusArea"); 

     System.Data.DataRowView rowView = (System.Data.DataRowView)e.Item.ItemType; 

    } 
} 

Répondre

4

Vous utilisez la mauvaise propriété. Cast premier à ListViewDataItem et utiliser DataItem au lieu de ItemType:

C#

ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
System.Data.DataRowView rowView = (System.Data.DataRowView)dataItem.DataItem; 

VB.NET

Dim dataItem As ListViewDataItem = CType(e.Item, ListViewDataItem) 
Dim rowView As System.Data.DataRowView = CType(dataItem.DataItem, DataRowView) 
+0

J'utilise Visual Web Developer edition.There express est pas IntelliSense pour e.Item.DataItem. – Subbu

+0

J'ai oublié que vous devez d'abord lancer le cast vers ListViewDataItem. Voir ma réponse mise à jour. – Carvellis

+0

Merci à la solution modifiée – Subbu