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
 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 回答
0

您可以使用 ItemsSource 属性和 System.Data 类 (ADO.Net) 将列表视图绑定到数据表和老虎钳(您想要的)。以下代码将为您提供来自现有绑定 ListView 控件的数据表。

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

Manish Mishra 询问您的 listview 控件绑定到什么。这个问题问得好。我的回答假设它已经绑定到数据表。

于 2016-05-07T00:35:11.820 回答
0

来自 VB.Net 的工作代码:只需将您的列表视图名称替换为“LVActions”

        Dim it As Integer = 0
        Dim dt As New DataTable
        For it = 0 To LVActions.Items(0).SubItems.Count - 1
            Dim DCOL As New DataColumn(LVActions.Columns(it).Text)
            dt.Columns.Add(DCOL)
        Next
        For it = 0 To LVActions.Items.Count - 1
            Dim DROW As DataRow = dt.NewRow
            For j As Integer = 0 To LVActions.Items(it).SubItems.Count - 1
                DROW(LVActions.Columns(j).Text) = LVActions.Items(it).SubItems(j).Text
            Next
            dt.Rows.Add(DROW)
        Next
于 2020-02-21T14:30:40.850 回答