什麼是.NET中的等價物來轉換我DataGrid
到DataTable
(DataGrid.ItemsSource
沒有在淨CSHARP定義。轉換數據網格的DataTable
謝謝!
DataTable dt = new DataTable();
dt = ((DataView)DataGrid1.ItemsSource).ToTable();
編輯
這不是重複的,因爲前面的代碼是爲WPF和我正在尋找一個asp.net mvc csharp答案。
什麼是.NET中的等價物來轉換我DataGrid
到DataTable
(DataGrid.ItemsSource
沒有在淨CSHARP定義。轉換數據網格的DataTable
謝謝!
DataTable dt = new DataTable();
dt = ((DataView)DataGrid1.ItemsSource).ToTable();
編輯
這不是重複的,因爲前面的代碼是爲WPF和我正在尋找一個asp.net mvc csharp答案。
如果你指的是System.Windows.Forms.DataGrid
或System.Web.UI.WebControls.DataGrid
,那麼最好的辦法是到Datasource
財產轉換爲DataTable
。
當然Datasource
財產必須實際上是一個DataTable
底層類型開始。您需要知道存儲在Datasource
屬性中的對象的基礎類型。
如果基礎類型的Datasource
是一個通用的列表,那麼這個SO後應該有所幫助:How to convert a list into data table
僅供參考 - Windows窗體DataGrid
控制,according to Microsoft,已取代了DataGridView
。
我指的是'System.Web.UI.WebControls.DataGrid' –
@J。Lavoie是看到你的編輯和更新我的答案,添加一個鏈接到轉換列表到數據表 – bnem
我在轉換時出錯,但也許這是因爲存儲的對象的基礎類型是一個類對象! –
ItemsSource
適用於WPF。使用DataSource
,並轉換爲DataTable
這樣的:
dt = (DataTable)DataGrid1.DataSource;
編輯:如果你得到與上面的方法麻煩,可以使用這樣的自定義方法:
private DataTable ToDataTable(DataGridView dataGridView)
{
var dt = new DataTable();
foreach (DataGridViewColumn dataGridViewColumn in dataGridView.Columns)
{
if (dataGridViewColumn.Visible)
{
dt.Columns.Add();
}
}
var cell = new object[dataGridView.Columns.Count];
foreach (DataGridViewRow dataGridViewRow in dataGridView.Rows)
{
for (int i = 0; i < dataGridViewRow.Cells.Count; i++)
{
cell[i] = dataGridViewRow.Cells[i].Value;
}
dt.Rows.Add(cell);
}
return dt;
}
然後使用方法:
var dataTable = ToDataTable(dataGridView1);
而且MoreLinq
是萬一的好選擇類型是一個列表。檢查這個解決方案要知道如何使用它:https://stackoverflow.com/a/42550827/2946329
我試過了,我得到這個錯誤:無法強制'System.Collections.Generic.List'類型'System.Data.DataTable' –
@ J.Lavoie - 請參閱我的回答 – bnem
@ J.Lavoie好吧。檢查我更新的答案。我提供了另一種方法來實現這一點。 –
可能重複[如何將DataGrid轉換爲dataTable](https://stackoverflow.com/questions/21827339/how-to-convert-datagrid-to-datatable) – arbitrarystringofletters
@arbitrarystringofletters編號重複帖子的代碼是相同的作爲OP的代碼,因爲他/她提到* DataGrid.ItemsSource沒有定義*所以他/她絕對不會尋找WPF解決方案。 –