您的位置:首页 > 其它

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

2013-12-19 19:44 1341 查看
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 = "请选择";






内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐