2013年12月19日→星座:射手座
二〇一三年冬月十七
癸巳〖蛇〗甲子月己未日癸酉时
今属:土;五行:水火木土金;缺:。
纳音五行:长流水。
阿弥陀佛圣诞
void 保存记事历XML(/*获取DataGridView绑定BindingSource的数据表,并根据树控件点击进行筛选数据表*/)
{
string 表名 = (树.SelectedNode != null) ? ((DataRow)树.SelectedNode.Tag).Table.TableName : (string)编辑控表.Tag,
选名 = (树.SelectedNode != null) ? 树.SelectedNode.Text : "";/*用于从众多项目中选择*/
((BindingSource)编辑控表.DataSource).EndEdit();
DataTable 数据表 = (((BindingSource)编辑控表.DataSource).DataSource.GetType().Name == "DataTable") ?
(DataTable)(((BindingSource)编辑控表.DataSource).DataSource) : ((DataSet)((BindingSource)编辑控表.DataSource).DataSource).Tables[表名];
//DataColumn[] 列集 = new DataColumn[数据集.Columns.Count];
//数据集.Columns.CopyTo(列集, 0);
//string[] 列名 = new string[数据集.Columns.Count]; int 计数 = 0;
//foreach (DataColumn 元 in 数据集.Columns) { 列名[计数] = 元.ColumnName; 计数++; }
string[] 列名 = new string[编辑控表.Columns.Count], 节径 = 树.SelectedNode.FullPath.Replace("\\", "·").Split('·'); int 计数 = 0;
foreach (DataGridViewColumn 元 in 编辑控表.Columns)
{
if (!"密码 ID".Contains(元.HeaderText)) 列名[计数] = 元.HeaderText;
计数++;
}
列名 = 列名.OfType<string>(/*去掉数组中为null的元素数组自动减小*/).ToArray();
DataView 筛选表 = 数据表.DefaultView.ToTable(true, 列名).DefaultView;
if (选名 != "") 筛选表.RowFilter = 列名[节径.Length - 1] + " ='" + 选名 + "'";
数据表 = (选名 != "") ? 筛选表.ToTable() : 数据表;
选名 = (选名 != "") ? "[" + 选名 + "]" : "[全选]";
数据表.WriteXml(数据表.TableName + 选名 + ".xml");
}
DataTable 排序表 = 数据表.Tables["表名"].DefaultView.ToTable(true, "数据字段").Select("数据字段 like '%段'", "数据字段").CopyToDataTable(),
DataRow 新增 = 排序表.NewRow();
新增[0] = "请选择";
排序表.Rows.InsertAt(新增, 0);
foreach (DataRow 数据行 in 数据表.Tables["表名"].DefaultView.ToTable(true, "数据字段").Select("数据字段 like '%泓%'", "数据字段").CopyToDataTable().Rows)
排序表.Rows.Add(数据行.ItemArray);/*解决了该行属于另一个表的错误提示,同时解决了默认加载时前面带数字的不同字符串间无序问题,如:01段,01泓1,02段,02泓2,要的效果是:01段,02段,01泓1,02泓2*/
下拉控件.DataSource = 排序表;
下拉控件.ValueMember = "数据字段";
下拉控件.Text = "请选择";