Tags: , , , | Posted by AlexanderZeitler on 10/22/2007 1:47 PM | Comments (4)

Wenn man mit der Visual Studio 2008 ("Orcas") Beta und der neuen ASP.NET ListView arbeitet, stößt man über kurz oder lang auf das Problem, dass man im ItemDataBound, wie von GridView, DataGrid usw. gewohnt, auf das DataItem-Objekt zugreifen möchte, um im Code-Behind umfangreichere Aktionen mit dem aktuellen Eintrag der Datasource durchzuführen.

Allerdings funktioniert die bisher gewohnte Herangehensweise über

void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem) {
        DataRowView drv = (DataRowView)e.Item.DataItem;
    }
}

nicht mehr, da e.Item (bzw. ListViewItem, wodurch e.Item repräsentiert wird) keine Definition mehr für DataItem besitzt.

Zunächst liegt die Befürchtung nahe, dass man nun nicht mehr an die Daten kommt, doch nach einer mehr oder minder lang andauernden Suche (grrrr) in der Doku findet sich die Lösung:

Mit der Einführung der ListView wurde auch die Handhabung des DataItems geändert, weswegen nun folgender Code verwendet werden muß:

void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
    if (e.Item.ItemType == ListViewItemType.DataItem) {
        ListViewDataItem currentItem = (ListViewDataItem)e.Item;
        DataRowView drv = (DataRowView)currentItem.DataItem;
    }
}

Wie man sieht, muß das ListViewItem (also e.Item) in ein ListViewDataItem gecastet werden, über welches dann die Eigenschaft DataItem wieder wie gewohnt zur Verfügung steht.

Comments

Comments are closed