【发布时间】:2017-05-13 12:52:40
【问题描述】:
我有正确的源数据表“sourceDataTable”,我调用方法将它分成几个并将结果存储到DataSet“ds”中:
DataSet ds = MyClass.SplitDataTables(sourceDataTable);
这里是 MyClass.SplitDataTables() 方法:
public static DataSet SplitDataTables(DataTable sourceDataTable)
{
using (DataSet dsOut = new DataSet())
{
DataTable dt1 = new DataTable;
DataTable dt2 = new DataTable;
DataTable dt3 = new DataTable;
dt1 = sourceDataTable.Clone();
dt2 = sourceDataTable.Clone();
dt3 = sourceDataTable.Clone();
foreach (DataRow row in sourceDataTable.Rows)
{
//column is for example "City" and some row has "Boston" in it, so I put this row into dt1
if (row["ColumnName"].ToString() == "something")
{
dt1.ImportRow(row);
}
else if (...)
{ } //for other DataTables dt2, dt3, etc...
else .......... ;
}
//here I put resulting DataTables into one DataSet which is returned
string[] cols= { "dt1", "dt2", "dt3" };
foreach (string col in cols)
{
dsOut.Tables.Add(col);
}
return dsOut;
}
}
因此,使用这个返回的 DataSet,我会显示新的 Windows,每个窗口都有一个 DataTable
foreach (DataTable dtt in ds.Tables)
{
string msg = dtt.TableName;
Window2 win2 = new Window2(dtt, msg);
win2.Show();
}
我看到的只是带有“空 DataGrid”占位符的 Windows Windows 代码是正确的,因为它适用于“unsplit DataTable”。
我假设拆分 DataTables 的代码都是错误的,因为它不会输出带有填充 DataTables 的 DataSet。我将不胜感激在这个问题上的任何帮助。谢谢!
【问题讨论】:
标签: c# datatable split dataset