Listview to datatable
本文关键字:datatable to Listview | 更新日期: 2023-09-27 18:04:07
我有一个listview,我需要加载行和列到数据表
我已经试过了
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());
}
当我检索rowcount和columncount然后我得到行数作为列计数和列数作为rowcount
我不知道发生了什么事…
请帮帮我吧
问好Bunzitop
这是很久以前的事了,但将来有人可能会为此而挣扎。所以这是我的解决方案,将一个ListView转换为一个数据表:
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);
}
你做得太不对了。您需要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());
}
}
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);
}
您可以使用ItemsSource属性和System。数据类(ADO.Net)将listview绑定到数据表,反之亦然(如您所愿)。下面的代码将为您提供一个来自现有绑定ListView控件的数据表。
DataView theDataView = (DataView)theListView.ItemsSource;
DataTable theDataTable = theDataView.Table;
Manish Mishra问你的listview控件绑定到什么。这是一个非常好的问题。我的答案假设它已经绑定到一个数据表。
来自VB的工作代码。Net:只需将listview名称替换为"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