在正常的WinForm應用程序,你可以這樣做:在WPF DataGrid中轉換和使用DataTable?
DataTable dataTable = new DataTable();
dataTable = dataGridRecords.DataSource;
但如何做到這一點與WPF數據網格?
dataTable = dataGridRecords.ItemsSource;
也不起作用。
在正常的WinForm應用程序,你可以這樣做:在WPF DataGrid中轉換和使用DataTable?
DataTable dataTable = new DataTable();
dataTable = dataGridRecords.DataSource;
但如何做到這一點與WPF數據網格?
dataTable = dataGridRecords.ItemsSource;
也不起作用。
在WPF你不這樣做
DataGrid.ItemsSource = DataTable;
相反,你做
DataGrid.ItemsSource = DataTable.AsDataView();
爲了讓數據表背,你可以做這樣的事情
public static DataTable DataViewAsDataTable(DataView dv)
{
DataTable dt = dv.Table.Clone();
foreach (DataRowView drv in dv)
dt.ImportRow(drv.Row);
return dt;
}
DataView view = (DataView) dataGrid.ItemsSource;
DataTable table = DataViewAsDataTable(view)
你不不需要DataViewAsDataTable
方法。只要做到以下幾點:
DataTable dt = ((DataView)dataGrid1.ItemsSource).ToTable();
試試這個
public static DataTable DataGridtoDataTable(DataGrid dg)
{
dg.SelectAllCells();
dg.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, dg);
dg.UnselectAllCells();
String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
string[] Lines = result.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
string[] Fields;
Fields = Lines[0].Split(new char[] { ',' });
int Cols = Fields.GetLength(0);
DataTable dt = new DataTable();
for (int i = 0; i < Cols; i++)
dt.Columns.Add(Fields[i].ToUpper(), typeof(string));
DataRow Row;
for (int i = 1; i < Lines.GetLength(0)-1; i++)
{
Fields = Lines[i].Split(new char[] { ',' });
Row = dt.NewRow();
for (int f = 0; f < Cols; f++)
{
Row[f] = Fields[f];
}
dt.Rows.Add(Row);
}
return dt;
}
這適用於我的情況...謝謝... –
如果你在你的數據有一個逗號的任何地方這會搞砸了 – AndrewBenjamin