2

リストビューがあり、行と列をデータテーブルにロードする必要があります。

私は次のように試しました

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

4

5 に答える 5

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);
}
于 2014-03-31T06:41:39.247 に答える
0

あなたはそれをとても間違っています。1 + listView1.Items[0].SubItems.CountDataTable(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());
       }
}
于 2013-03-16T14:15:39.163 に答える
0

ItemsSource プロパティと System.Data クラス (ADO.Net) を使用して、リストビューをデータテーブルと万力 (必要なもの) にバインドできます。次のコードは、既存のバインドされた ListView コントロールからデータ テーブルを提供します。

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

Manish Mishra は、リストビュー コントロールが何にバインドされているかを尋ねました。これはとても良い質問です。私の答えは、それがすでにデータテーブルにバインドされていることを前提としています。

于 2016-05-07T00:35:11.820 に答える
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);
            }
于 2013-05-30T01:50:03.290 に答える