Devexpress 代码累积

1  GridControl 根据两列的值的关系 设置前景色 背景色 字体等同理

  //绑定数据 
        private void DataBind()
        {
            List<Entity> list = new List<Entity>();
            list.Add(new Entity { ID = "1", Name = "Name", Age = "20", Age1 = "1" });
            list.Add(new Entity { ID = "2", Name = "Name", Age = "21", Age1 = "1" });
            list.Add(new Entity { ID = "2", Name = "Name", Age = "21", Age1 = "1" });
            //构造数据实体集合 绑定
            this.gridControl2.DataSource = list;
            this.gridView2.OptionsBehavior.Editable = false; //不可编辑
            this.gridView2.OptionsView.ShowGroupPanel = false; //不显示分组panel
            this.gridView2.OptionsView.ShowColumnHeaders = false; //不显示列标题
        }
        //设置列对比前景色变化
        private void gridView2_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.Column.FieldName == "Age1")
            {
                //获取要比较的两列的值
                string value1 = gridView2.GetRowCellValue(e.RowHandle, gridView1.Columns["Age"]).ToString();
                string value2 = gridView2.GetRowCellValue(e.RowHandle, gridView1.Columns["Age1"]).ToString();

                if (value1 != value2)
                {
                    e.Appearance.ForeColor = Color.Red; //设置前景色
                }
            }
        }
View Code

2  导入CSV文件 (列顺序会变化顺序并包含一定判断)

  private void btn_Click(object sender, EventArgs e)
        {
            OpenFileDialog open = new OpenFileDialog();
            StreamReader reader = null;
            open.Filter = "*.csv|*.csv";
            if (open.ShowDialog() != System.Windows.Forms.DialogResult.OK)
            { return; }
            else
            {
                reader = new StreamReader(open.FileName, Encoding.Default);

                ////是否空文件
                if (string.IsNullOrEmpty(reader.ReadToEnd()))
                {
                    MessageBox.Show("请选择包含数据的文件");
                    reader.Close();
                    return;
                }
                //是否有列标题
                reader.BaseStream.Seek(0, SeekOrigin.Begin); //从头开始读取流
                string line = reader.ReadLine();
                while (string.IsNullOrEmpty(line))
                {
                    line = reader.ReadLine();
                }
                string[] captital = line.Split(',');
                if (captital[0] != "会员号" && captital[0] != "会员简称" && captital[0] != "分类监管指标")
                {
                    MessageBox.Show("文件格式错误");
                    reader.Close();
                    return;
                }
                //获取列标题及其顺序的字典
                Dictionary<string, int> capitslList = new Dictionary<string, int>();
                capitslList = GetCapitalList(captital);
                //读取导入数据
                string lineData = reader.ReadLine();
                //错误列表
                List<string> ErrorList = new List<string>();
                //数据列表
                List<string> ImportList = new List<string>();
                ErrorList.Clear(); ImportList.Clear();
                //读取数据到List<string> ImportList为验证通过(可能在写库的时候出错)ErrorList保存验证出错数据和写库时出错的数据
                while (!string.IsNullOrEmpty(lineData))
                {
                    if (string.IsNullOrEmpty(lineData.Split(',')[0]))
                    {
                        ErrorList.Add(lineData + "," + capitslList.First().Key + "不能为空");
                        lineData = reader.ReadLine();
                        continue;
                    }
                    //会员号位纯数字 
                    int MeneberIndex = 0;
                    capitslList.TryGetValue("会员号", out MeneberIndex);
                    if (!IsAllNumber(lineData.Split(',')[MeneberIndex]))
                    {
                        ErrorList.Add(lineData + ",会员号格式错误,必须位纯数字");
                        lineData = reader.ReadLine();
                        continue;
                    }
                    //分类监管指标位纯数字
                    int S_Index = 0;
                    capitslList.TryGetValue("分类监管指标", out S_Index);
                    if (!IsAllNumber(lineData.Split(',')[S_Index]))
                    {
                        ErrorList.Add(lineData + ",分类监管指标格式错误,必须位纯数字");
                        lineData = reader.ReadLine();
                        continue;
                    }
                    ImportList.Add(lineData);
                    lineData = reader.ReadLine();
                }
                int SuccessCount = 0;
                List<string> ImportErrorList = new List<string>();
                ImportErrorList.Clear();
                ImportData(ImportList, capitslList, out ImportErrorList, out SuccessCount);
                ErrorList.AddRange(ImportErrorList);

                if (ErrorList.Count > 0)
                {
                    //SomeThing
                }
                else
                {
                    //SomeThing
                }
            }
        }

        private bool IsAllNumber(string str)
        {
            char[] chars = str.ToCharArray();

            foreach (char c in chars)
            {
                if (char.IsDigit(c))
                { continue; }
                else
                    return false;
            }
            return true;
        }

        //获取列标题及其顺序
        private Dictionary<string, int> GetCapitalList(string[] captital)
        {
            Dictionary<string, int> CapitalList = new Dictionary<string, int>();
            if (captital[0] == "会员号")
            {
                CapitalList.Add("会员号", 0);
                if (captital[1] == "会员简称")
                {
                    CapitalList.Add("会员简称", 1);
                    CapitalList.Add("分类监管指标", 2);
                }
                else
                {
                    CapitalList.Add("分类监管指标", 1);
                    CapitalList.Add("会员简称", 2);
                }
            }
            if (captital[0] == "会员简称")
            {
                CapitalList.Add("会员简称", 0);
                if (captital[1] == "会员号")
                {
                    CapitalList.Add("会员号", 1);
                    CapitalList.Add("分类监管指标", 2);
                }
                else
                {
                    CapitalList.Add("分类监管指标", 1);
                    CapitalList.Add("会员号", 2);
                }
            }
            if (captital[0] == "分类监管指标")
            {
                CapitalList.Add("分类监管指标", 0);
                if (captital[1] == "会员号")
                {
                    CapitalList.Add("会员号", 1);
                    CapitalList.Add("会员简称", 2);
                }
                else
                {
                    CapitalList.Add("会员简称", 1);
                    CapitalList.Add("会员号", 2);
                }
            }
            return CapitalList;
        }

        private void ImportData(List<string> importdata, Dictionary<string, int> capitsllist, out List<string> importerrorist, out int successcount)
        {
            int SuccessCount = 0;
            List<string> ImportErrorist = new List<string>();

            int MemberIDIndex = 0;
            int MemberAbbrIndex = 0;
            int S_Index = 0;
            capitsllist.TryGetValue("会员号", out MemberIDIndex);
            capitsllist.TryGetValue("会员简称", out MemberAbbrIndex);
            capitsllist.TryGetValue("分类监管指标", out S_Index);

            foreach (string data in importdata)
            {
                string[] dataArray = data.Split(',');
                string memberid = dataArray[MemberIDIndex];
                string memberabbr = dataArray[MemberAbbrIndex];
                string membersindex = dataArray[S_Index];

                if (!Insert()) //执行Dac方法 写入数据库
                {
                    ImportErrorist.Add(data + "," + errorcode);
                    continue;
                }
                else
                {
                    SuccessCount++;
                }

            }
            importerrorist = ImportErrorist;
            successcount = SuccessCount;
        }

        private bool Insert()
        {
            //自己需要的方法
            return true;
        }
View Code

3 GridControl常用属性

//只读
            gridView1.OptionsBehavior.ReadOnly = true; 
            //选择行背景色一致
            gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;
            //选择模式 RowSelect为整行选中 CellSelect为选择单元格 CheckBoxRowSelect复选框选中行
            gridView1.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;
            //显示筛选行
            gridView1.OptionsView.ShowAutoFilterRow = false;
            //筛选条件panel
            gridView1.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.Never;
            //页脚
            gridView1.OptionsView.ShowFooter = false;
            //分组panel
            gridView1.OptionsView.ShowGroupPanel = false;
            //自动列宽
            gridView1.OptionsView.ColumnAutoWidth = true;
            //执行.AddNewRow()方法后新增行的位置 分别为 top bottom none
            gridView1.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Top;
            //新增一行
            gridView1.AddNewRow();

            //单元格可编辑
            gridView1.OptionsBehavior.Editable = true;
            //单元格编辑模式
            gridView1.OptionsBehavior.EditingMode = DevExpress.XtraGrid.Views.Grid.GridEditingMode.Default;
            //何种动作出发单元格编辑
            gridView1.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.Click;

            gridControl1.DataSource = Data;
View Code

 

posted @ 2014-10-12 18:14  水目之痕  阅读(493)  评论(0编辑  收藏  举报