2009-05-13 18 views

cevap

19

C# Çözüm

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; 
    } 
} 

hala çeşit beni şaşırtıyor. Olsa da bir sebebi olmalı.

+0

’u kontrol etmelisiniz. –

1

, ihtiyacım nasıl verileri biçimlendirmek için bir yöntem yarattı ve kullanma işaretlemenizdeki denir: Biraz

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

Bu çözümü, ItemDataBound olayında yakalamaktan daha iyi seviyorum. Tek öneri, metodunuz içinde 'doFormatting' için' null' veya 'DBNull' –

3

geç ama ben gibi, sorunuzu cevaplamaya çalışırız aynı sorunu vardı ve bir çözüm buldu. Bir ListViewDataItem için ListViewItemEventArgs Öğe özelliği döküm zorunda ve o zaman böyle o nesnenin Dataıtem özelliğini erişebilirsiniz:

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 

Daha sonra ilişkili nesne ne olursa olsun türüne Dataıtem nesne döküm olabilir. Bu, DataItem'in DataBound yöntemi için olayda bir özellik olduğu, yineleyici gibi diğer veri denetimlerinin nasıl çalıştığından farklıdır. onlar ListView bu yüzden farklı kılan neden

0

Geçerli öğe için kullanılan veriler EventArgs'dan bulunabilir.

RepeaterItemEventArgs e'dan itibaren geçerli öğeye e.Item.DataItem'a bakarak erişebiliriz.

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