2013-03-16 58 views
2

我有一個列表視圖,我需要將行和列加載到數據表。Listview to datatable

我已經試過如下

DataTable dt = new DataTable(); 

foreach (ListViewItem item in listView1.Items) 
{ 
    table.Columns.Add(item.ToString()); 
    foreach (var it in item.SubItems) 
     dt.Rows.Add(it.ToString()); 
} 

當我檢索到的行數和列數,然後我得到的行號列數和行數

不知道發生了什麼事情列數..
請幫我
問候
Bunzitop

+0

你的listView綁定了什麼?你有那個來源? – 2013-03-16 13:54:04

回答

0

你這樣做是錯的。您需要1 + listView1.Items[0].SubItems.Count列在您的DataTable(1是ListViewItem和其他子項)和listView1.Items.Count行數。因此,你的代碼應該是這樣的:

if (listView1.Items.Count > 0) 
{ 
     dt.Columns.Add(); 
     foreach (ListViewItem.ListViewSubItem lvsi in listView1.Items[0].SubItems) 
       dt.Columns.Add(); 
     //now we have all the columns that we need, let's add rows 
     foreach (ListViewItem item in listView1.Items) 
     { 
       List<string> row = new List<string>(); 
       row.Add(item.ToString()); 
       foreach (var it in item.SubItems) 
        row.Add(it.ToString()); 
       //Add the row into the DataTable 
       dt.Rows.Add(row.ToArray()); 
     } 
} 
0
DataTable table = new DataTable(); 

      table.Columns.Add("MODUL", typeof(string)); 
      table.Columns.Add("ACIKLAMA", typeof(string)); 
      table.Columns.Add("UZUNLUK", typeof(string)); 
      table.Columns.Add("GENISLIK", typeof(string)); 
      table.Columns.Add("MIKTAR", typeof(string)); 

      for (int i = 0; i < listView2.Items.Count; i++) 
      { 
       table.Rows.Add(listView2.Items[i].SubItems[1].Text, listView2.Items[i].SubItems[2].Text, listView2.Items[i].SubItems[3].Text, listView2.Items[i].SubItems[4].Text, listView2.Items[i].SubItems[5].Text); 
      } 
1

它在很久以前,但有人可能會在未來的奮鬥這件事, 所以這裏是我的解決方案到ListView轉換成一個DataTable:

DataTable dtZeitplan = new DataTable(); 
foreach (ColumnHeader chZeitplan in lvZeitplan.Columns) 
{ 
    dtZeitplan.Columns.Add(chZeitplan.Text); 
} 
foreach (ListViewItem item in lvZeitplan.Items) 
{ 
    DataRow row = dtZeitplan.NewRow(); 
    for(int i = 0; i < item.SubItems.Count; i++) 
    { 
     row[i] = item.SubItems[i].Text; 
    } 
    dtZeitplan.Rows.Add(row); 
} 
0

您可以使用ItemsSource屬性和System.Data類(ADO.Net)將listview綁定到數據表和vise-verse(您想要的)。下面的代碼將爲您提供一個來自現有綁定ListView控件的數據表。

DataView theDataView = (DataView)theListView.ItemsSource; 
DataTable theDataTable = theDataView.Table; 

Manish Mishra問你的listview控件綁定了什麼。這個問題問得好。我的答案假設它已經綁定到數據表。

+0

根據你的回答,我得到了這個異常無法投射'System.Collections.ObjectModel.ObservableCollection'1 [ClinicManagment.Statistics.Doctor]'類型的對象來鍵入'System.Data.DataView'。 – FatemehEbrahimiNik 2017-05-13 04:37:58