C# 在WPF DataGrid中转换和使用DataTable?
在普通WinForm应用程序中,您可以执行以下操作:C# 在WPF DataGrid中转换和使用DataTable?,c#,wpf,datagrid,C#,Wpf,Datagrid,在普通WinForm应用程序中,您可以执行以下操作: DataTable dataTable = new DataTable(); dataTable = dataGridRecords.DataSource; 但是如何使用WPF数据网格实现这一点呢 dataTable = dataGridRecords.ItemsSource; 也不起作用。在WPF中,您不会这样做 DataGrid.ItemsSource = DataTable; 相反,你是这样做的 DataGrid.ItemsSo
DataTable dataTable = new DataTable();
dataTable = dataGridRecords.DataSource;
但是如何使用WPF数据网格实现这一点呢
dataTable = dataGridRecords.ItemsSource;
也不起作用。在WPF中,您不会这样做
DataGrid.ItemsSource = DataTable;
相反,你是这样做的
DataGrid.ItemsSource = DataTable.AsDataView();
为了恢复DataTable,您可以执行以下操作
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)
您不需要
dataviewsdatatable
方法。只需执行以下操作:
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;
}
公共静态数据表DataGridtoDataTable(DataGrid dg)
{
dg.选择所有细胞();
dg.ClipboardCopyMode=DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null,dg);
dg.未选择的单元格();
字符串结果=(字符串)剪贴板.GetData(DataFormats.CommaSeparatedValue);
string[]line=result.Split(新字符串[]{“\r\n”,“\n”},StringSplitOptions.None);
字符串[]字段;
字段=行[0]。拆分(新字符[]{',});
int Cols=Fields.GetLength(0);
DataTable dt=新的DataTable();
for(int i=0;i
如果数据中的任何地方都有逗号,则会将其弄乱