2010-12-17 51 views
2

我有一個綁定到DataTable的ListView。我想迭代DataTable的行並訪問它們的數據。我想,要做到這一點,我只需遍歷ListView中的ListViewDataItems即可。爲了測試我正確訪問數據,我嘗試了下面的代碼,它應該在每列的列0處打印字符串。迭代ListView數據

for (int i = 0; i < MyListView.Items.Count; i++) 
{ 
    ListViewDataItem item = MyListView.Items[i]; 
    DataRow row = (DataRow) item.DataItem; 
    Response.Write(row[0]); 
} 

但是,沒有什麼打印。要驗證的ListView不爲空(這不應該是作爲數據是否正確我的aspx頁面上呈現),我嘗試這樣做:

Response.Write(MyListView.Items.Count); 

這將輸出16號,因爲有哪個是正確的我的ListView中有16行。我猜我只是沒有正確訪問數據。我會很感激這方面的一些見解。

回答

1

我決定最好的解決辦法是隻遍歷數據直接在DataTable而不是ListViewDataItems中。

for (int i = 0; i < myTable.Rows.Count; i++) 
{ 
    for (int j = 0; j < myTable.Columns.Count; j++) 
    { 
     object data = data.Rows[i][j]; 
     // do stuff with data 
    } 
} 
1

最好的方法是在斷點處停下來(在DataRow行=(DataRow)item.DataItem;)處,並簡單地檢查你所擁有的。

例如喜歡這裏:HTTP://msdn.microsoft.com/en-us/library/ms173083(V = VS.90)的.aspx

+0

看來ListViewDataItem項目被設置爲null。 – 2010-12-18 04:19:35

0

對於任何人仍在尋找正確回答這個問題,下面的代碼就可以了(VB.NET):

Dim di as ListViewDataItem 

For Each di in MyListView.Items 
    Response.Write(CType(di.FindControl("ExampleLabel"), Label).Text) 
Next 

剛剛替補,不管你想要做的每一個列表中Response.Write線項目。示例行正在尋找名爲「ExampleLabel」的控件,將其轉換回標籤,然後將文本值寫入頁面。

很容易適應C#的任何精通(不是我唉)。