我有一个包含10列的数据表,但用户可以选择要显示的列,因此我需要创建一个通用代码来仅显示所选列。如何从数据表中获取选定的列
Current code:
string[] selectedColumns = new[] { };
DataTable columns = new DataView(table).ToTable(false, selectedColumns);
我有一个包含10列的数据表,但用户可以选择要显示的列,因此我需要创建一个通用代码来仅显示所选列。如何从数据表中获取选定的列
Current code:
string[] selectedColumns = new[] { };
DataTable columns = new DataView(table).ToTable(false, selectedColumns);
你可以简单地隐藏在DataGridView列不在selectedColumns
但如果你真的需要过滤(假设你正在使用一个)
dataGridView1.Columns["ColName"].Visible = False;
每列数据集,我记得你可以做这样的事情:
mydatatable.Columns.Remove("ColName");
在你的数据表...或复制。
如果你要显示一个DataGridView列,我的选择将是设置的数据表列的ColumnMapping财产这样
mydatatable.Columns["Colname"].ColumnMapping = MappingType.Hidden;
不幸的是我现在不在家,所以我可以”不要试验它,但正如你所看到的,有很多选择。
编辑:在回答你的要求,你可以处理这样的非选择列:
for(int i = 0;i<dt.Columns.Count;i++)
{
if(!selectedColumns.Contains(dt.Columns[i].ColumnName))
{
dt.Columns[i].ColumnMapping = MappingType.Hidden;
}
}
public static void Main(string[] args)
{
DataTable act = new DataTable();
act.Columns.Add(new DataColumn("id", typeof(System.Int32)));
act.Columns.Add(new DataColumn("name"));
act.Columns.Add(new DataColumn("email"));
act.Columns.Add(new DataColumn("phone"));
DataRow dr = act.NewRow();
dr["id"] = 101;
dr["name"] = "Rama";
dr["email"] = "[email protected]";
dr["phone"] = "0000000001";
act.Rows.Add(dr);
dr = act.NewRow();
dr["id"] = 102;
dr["name"] = "Talla";
dr["email"] = "[email protected]";
dr["phone"] = "0000000002";
act.Rows.Add(dr);
dr = act.NewRow();
dr["id"] = 103;
dr["name"] = "Robert";
dr["email"] = "[email protected]";
dr["phone"] = "0000000003";
act.Rows.Add(dr);
dr = act.NewRow();
dr["id"] = 104;
dr["name"] = "Kevin";
dr["email"] = "[email protected]";
dr["phone"] = "0000000004";
act.Rows.Add(dr);
dr = act.NewRow();
dr["id"] = 106;
dr["name"] = "TomChen";
dr["email"] = "[email protected]";
dr["phone"] = "0000000005";
act.Rows.Add(dr);
var lselColumns = new[] {"id", "name"};
var dt = act.DefaultView.ToTable(true, lselColumns);
foreach (DataRow drow in dt.Rows)
{
string drowData = string.Empty;
foreach (DataColumn r in drow.Table.Columns)
{
drowData += (drowData == string.Empty) ? drow[r] : "|" + drow[r];
}
Console.WriteLine(drowData);
}
Console.ReadLine();
}
你能告诉我怎么去未选择列的列表。 – psobhan 2011-03-29 10:42:31
问题编辑得到未选中的列。 – Jonathan 2011-03-29 17:43:12