2009-11-12 8 views

Odpowiedz

4

Spróbuj

DataRowView dr = (DataRowView)DataBinder.GetDataItem(e.Item);

użyciu dr.Item.ItemArray można uzyskać dostęp do całego wiersza.

+0

Musiały to zmienić, niezależnie od używanej wersji .NET. Wygląda na to, że nie ma już elementu .Item.ItemArray. Możesz dostać się do kolumn przez dr.Row ["ColumnName"]. –

1

Być może spróbuj użyć właściwości ListViewDataItem, aby uzyskać dostęp do właściwości podstawowego obiektu danych, do którego obiekt jest związany. Właściwość ListViewDataItem jest dostępna tylko podczas zdarzeń ItemDataBound elementu sterującego i po nich i zwykle odpowiada rekordowi w obiekcie źródła danych.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listviewdataitem.aspx

Poniżej znajduje się przykład.

protected void listProducts_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
    ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
    string prodtype = (string)DataBinder.Eval(dataItem, "ProductType"); 
    // ... 
    } 
} 
+0

Zamknij, ale z tego co wiem, daje mi dostęp tylko do jednego elementu danych - elementu, który jest związany w tym konkretnym momencie, a nie do całego wiersza danych, który jest związany w tej iteracji listView ItemTemplate. – Moo

+0

Przepraszam, masz na myśli tylko jedno pole dla danego wiersza, czy potrzebujesz odniesienia do danych z innego wiersza? – Jakkwylde

+0

Myślę, że chodziło Ci o Eval (dataItem.DataItem, "ProductType"); To działa – clamchoda

Powiązane problemy