获取DataGridView绑定BindingSource的数据表,并根据树控件点击进行筛选数据表,下拉控件自定义排序问题初步解决方法,解决了该行属于另一个表的错误提示.

来源:互联网 发布:淘宝上哪家光威是正品 编辑:程序博客网 时间:2024/05/01 03:26

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 = "请选择";










0 0
原创粉丝点击