2009-05-13 10 views

risposta

19

C# Soluzione

protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e) 
{   
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
     // you would use your actual data item type here, not "object" 
     object o = (object)dataItem.DataItem; 
    } 
} 

perché hanno fatto questo in modo diverso per ListView ancora sorta di mi lascia perplesso. Ci deve essere una ragione però.

+0

Grazie per la correzione George. –

1

trovato una soluzione, ho creato un metodo per formattare i dati come avevo bisogno e lo ha chiamato dal markup usando:

<%# doFormatting(Convert.ToInt32(Eval("Points")))%> 
+1

Mi piace questa soluzione meglio di prenderla sull'evento ItemDataBound. L'unico suggerimento è che all'interno del tuo metodo 'doFormatting' dovresti controllare' null' o 'DBNull' –

3

Un po 'tardi, ma cercherò di rispondere alla tua domanda, come ho ha avuto lo stesso problema e trovato una soluzione. Bisogna lanciare proprietà Item dei ListViewItemEventArgs ad un ListViewDataItem, e quindi è possibile accedere alla proprietà DataItem di tale oggetto, in questo modo:

Private Sub listView_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles productsList.ItemDataBound 
    If e.Item.ItemType = ListViewItemType.DataItem Then 
     Dim dataItem As Object = DirectCast(e.Item, ListViewDataItem).DataItem 
    ... 
End Sub 

si potrebbe poi il cast dell'oggetto dataItem a qualsiasi tipo di vostro oggetto associato è stato. Questo è diverso da come funzionano altri controlli di database come il ripetitore, dove DataItem è una proprietà sull'argomento dell'evento per il metodo DataBound.

0

I dati utilizzati per l'articolo corrente possono essere trovati da EventArgs.

Quindi dal RepeaterItemEventArgs e possiamo accedere all'elemento corrente guardando in e.Item.DataItem.

protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e) 
{   
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     var currentItem = e.Item.DataItem; 
    } 
} 
Problemi correlati