2010-07-13 49 views
1

我在listview的itemdataboundevent期間收到以下錯誤。listview中的itemdatabound事件有什麼問題?

描述:編譯服務此請求所需資源時發生錯誤。請查看以下具體的錯誤細節並適當修改您的源代碼。

編譯器錯誤信息: CS0030:無法將類型 'System.Web.UI.WebControls.ListViewItemType' 到 'System.Data.DataRowView'

源錯誤:

Line 91:    CheckBox chk = (CheckBox)e.Item.FindControl("chkFocusArea"); 
Line 92:    
Line 93:    System.Data.DataRowView rowView = (System.Data.DataRowView)e.Item.ItemType; 
Line 94:    
Line 95:   } 

我的代碼後面爲itembound事件是

protected void lvFocusArea_ItemDataBound(object sender, ListViewItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListViewItemType.DataItem) 
    { 
     CheckBox chk = (CheckBox)e.Item.FindControl("chkFocusArea"); 

     System.Data.DataRowView rowView = (System.Data.DataRowView)e.Item.ItemType; 

    } 
} 

回答

4

您正在使用錯誤的屬性。首先投射到ListViewDataItem和使用的DataItem代替ItemType

C#

ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
System.Data.DataRowView rowView = (System.Data.DataRowView)dataItem.DataItem; 

VB.NET

Dim dataItem As ListViewDataItem = CType(e.Item, ListViewDataItem) 
Dim rowView As System.Data.DataRowView = CType(dataItem.DataItem, DataRowView) 
+0

我使用Visual Web Developer速成edition.There是沒有智能感知e.Item.DataItem強制轉換。 – Subbu 2010-07-13 11:40:47

+0

我忘了你必須先投射到ListViewDataItem。看到我更新的答案。 – Carvellis 2010-07-13 11:59:53

+0

感謝修改後的解決方案 – Subbu 2010-07-13 12:10:55