2009-05-13 24 views

答えて

19

C#ソリューション

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

はまだ一種の私を困惑します。しかし、理由があるに違いない。

+0

Georgeさんにありがとう。 –

1

は、私は私が必要とどのようにデータをフォーマットする方法を作成し、使用したマークアップからそれを呼ばれる:

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

このソリューションは、ItemDataBoundイベントで捕捉するよりも優れています。唯一の提案は、あなたのメソッド 'doFormatting'の中で' null'か 'DBNull'を確認することです。 –

3

少し遅れて、しかし私は、私のように、あなたの質問にお答えしてみます同じ問題を抱えていて、解決策を見つけました。あなたはListViewDataItemにListViewItemEventArgsのItemプロパティをキャストする必要があり、その後、あなたはこのように、そのオブジェクトののDataItemプロパティにアクセスすることができます

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 

あなたは、あなたのバインドされたオブジェクトが何であっても型にデータ項目オブジェクトをキャストすることができます。これは、DataItemがDataBoundメソッドのイベント引数のプロパティであるリピータ作業のような他のデータバインドコントロールとは異なります。彼らはリストビューのためにこれがそう異ならなぜ

0

現在のアイテムに使用されているデータは、EventArgsから見つけることができます。

したがって、RepeaterItemEventArgs eからは、e.Item.DataItemで現在のアイテムにアクセスできます。

protected void listView_ItemDataBound(object sender, ListViewItemEventArgs e) 
{   
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     var currentItem = e.Item.DataItem; 
    } 
} 
関連する問題