zoukankan      html  css  js  c++  java
  • WinForm控件--DotNetBar--SuperGridControl

    1:隐藏右上角的选择页面三角:controlbox-menubox-autohide  设置为false

    2:设置某一单元的背景颜色:DG[c].CellStyles.Default.Background.Color1 = Color.Red;//如果列的类型是GridButtonXEditControl只会改变边框线颜色

    public class SuperGridOP
        {
            //根据列分组
            public static void SG_Group(SuperGridControl SGC,string colname)
            {
                GridPanel panel = SGC.PrimaryGrid;
                panel.AutoExpandSetGroup = true;
                if (colname == "")
                {
                    panel.SetGroup();
                }
                else
                {
                    panel.SetGroup(panel.Columns[colname], SortDirection.Descending);
                }
                SGC.Focus();
            }
    
            //SuperGridControl控件初始化
            public static void ResetLayout(SuperGridControl SGC)
            {
                GridPanel panel = SGC.PrimaryGrid;
                GridColumnCollection columns = panel.Columns;
    
                for (int i = 0; i < columns.Count; i++)
                {
                    GridColumn col = columns[i];
    
                    col.Visible = false;
                    col.DisplayIndex = -1;
    
                    col.HeaderStyles.Default.Image = null;
                    col.HeaderStyles.Default.Background = null;
                    col.HeaderStyles.MouseOver.Background = null;
                    col.CellStyles.Default.Background = null;
                }
                panel.ColumnHeader.GroupHeaders.Clear();
                panel.ClearAll();
                SGC.PrimaryGrid.ColumnHeaderClickBehavior = ColumnHeaderClickBehavior.None;//表头点击没效果
            }
    
            //设置控件属性
            public static void SetSGCControl(SuperGridControl SGC)
            {
                //superGridControl1.PrimaryGrid.MaxRowHeight = 18;
                SGC.PrimaryGrid.GroupHeaderHeight = 18;//分组高度
                SGC.PrimaryGrid.DefaultRowHeight = 18;//行高
                SGC.PrimaryGrid.ColumnHeader.RowHeight = 20;//标题高度
                // superGridControl1.PrimaryGrid.Columns["PrjLocation"].AutoSizeMode = ColumnAutoSizeMode.Fill;
                SGC.PrimaryGrid.ExpandButtonType = ExpandButtonType.Triangle;//分组-树展开符号
                SGC.PrimaryGrid.GroupHeaderClickBehavior = GroupHeaderClickBehavior.ExpandCollapse;//分组-展开
                SGC.PrimaryGrid.MultiSelect = false;//不能选多行
                SGC.PrimaryGrid.SelectionGranularity = SelectionGranularity.Row;//一次选中一整行
                SGC.PrimaryGrid.RowWhitespaceClickBehavior = RowWhitespaceClickBehavior.ExtendSelection;//行空白区单击行为
                SGC.PrimaryGrid.ShowGroupUnderline = false;
                SGC.PrimaryGrid.ShowRowHeaders = false;// = 10;
                SGC.DefaultVisualStyles.RowStyles.SelectedMouseOver =
                   SGC.BaseVisualStyles.RowStyles.Selected;//当控件宽度>列宽之和时 设置这个更好看
                //设置表格中文字的位置居中     
                SGC.PrimaryGrid.DefaultVisualStyles.CellStyles.Default.Alignment = DevComponents.DotNetBar.SuperGrid.Style.Alignment.MiddleCenter;
            }
    
            //导出excel
            public static System.Data.DataTable GetGridToDT(SuperGridControl SGC, string tbname)
            {
                System.Data.DataTable dt = new System.Data.DataTable(tbname);
                Dictionary<string, string> diccol = new Dictionary<string, string>();//headertext-name
                GridPanel gp = SGC.PrimaryGrid;
                for (int i = 0; i < gp.Columns.Count; i++)
                {
                    GridColumn gc = gp.Columns[i];
                    if (gc.Visible)
                    {
                        dt.Columns.Add(gc.HeaderText);
                        diccol.Add(gc.HeaderText, gc.Name);
                    }
                }
                int rs = GetGridRowCount(SGC);
                for (int i = 0; i < rs; i++)
                {
                    DataRow dr = dt.NewRow();
                    GridRow DG = GetGridRowByRowIndex(SGC, i);
                    DataRow drtag = DG.Tag as DataRow;
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        string colname = dt.Columns[j].ColumnName;
                        dr[colname] = GetGridVal(SGC, i, diccol[colname]);
                    }
                    dt.Rows.Add(dr);
                }
                return dt;
            }
    
            //根据行号获取GridRow对象
            public static GridRow GetGridRowByRowIndex(SuperGridControl SGC, int r)
            {
                GridPanel gp = SGC.PrimaryGrid;
                int startindex = 0;
                foreach (GridElement item in gp.Rows)
                {
                    if (item is GridGroup)
                    {
                        GridGroup gg = item as GridGroup;
                        foreach (GridElement item1 in gg.Rows)
                        {
                            if (item1 is GridRow)
                            {
                                if (startindex == r)
                                {
                                    return (GridRow)item1;
                                }
                                startindex++;
                            }
                        }
                    }
                    else if (item is GridRow)
                    {
                        if (startindex == r)
                        {
                            return (GridRow)item;
                        }
                        startindex++;
                    }
                }
                return null;
            }
            //获取所有行(如果有分组的情况,SGC.PrimaryGrid.Rows.Count获取行数得到的是组的个数)
            private static int GetGridRowCount(SuperGridControl SGC)
            {
                GridPanel gp = SGC.PrimaryGrid;
                int startindex = 0;
                foreach (GridElement item in gp.Rows)
                {
                    if (item is GridGroup)
                    {
                        GridGroup gg = item as GridGroup;
                        foreach (GridElement item1 in gg.Rows)
                        {
                            if (item1 is GridRow)
                            {
                                startindex++;
                            }
                        }
                    }
                    else if (item is GridRow)
                    {
                        startindex++;
                    }
                }
                return startindex;
            }
    
            //获取某行某列的单元格数据
            private static string GetGridRowVal(GridRow DG, string cname)
            {
                string txt = "";
                //获取某一单元格的值
                object obj = DG[cname].Value;
                obj = obj == null ? "" : obj;
                txt = obj.ToString();
                return txt;
            }
            private static string GetGridRowVal(GridRow DG, int c)
            {
                string txt = "";
                //获取某一单元格的值
                object obj = DG[c].Value;
                obj = obj == null ? "" : obj;
                txt = obj.ToString();
                return txt;
            }
    
            //获取某行某列的单元格数据
            public static string GetGridVal(SuperGridControl SGC, int r, string cname)
            {
                // 获取某一行的信息
                GridRow DG = GetGridRowByRowIndex(SGC, r);
                return GetGridRowVal(DG,cname);
            }
            public static string GetGridVal(SuperGridControl SGC, int r, int c)
            {
                // 获取某一行的信息
                GridRow DG = GetGridRowByRowIndex(SGC, r);// SGC.PrimaryGrid.Rows[r] as GridRow;
                return GetGridRowVal(DG, c);
            }
    
            //判断checkbox的值
            public static bool GetGridVal_CK(SuperGridControl SGC, int r, int c)
            {
                // 获取某一行的信息
                GridRow DG = GetGridRowByRowIndex(SGC, r);// SGC.PrimaryGrid.Rows[r] as GridRow;
                string strval = GetGridRowVal(DG, c).ToUpper();
                if (strval == "1" || strval == "TRUE")
                {
                    return true;
                }
                return false;
            }
            public static bool GetGridVal_CK(SuperGridControl SGC, int r, string cname)
            {
                GridRow DG = GetGridRowByRowIndex(SGC, r);// SGC.PrimaryGrid.Rows[r] as GridRow;
                string strval = GetGridRowVal(DG, cname).ToUpper();
                if (strval == "1" || strval == "TRUE")
                {
                    return true;
                }
                return false;
            }
    
            //设置某行某列的单元格数据
            public static void SetGridVal(SuperGridControl SGC, int r, int c, string val)
            {
                GridRow DG = GetGridRowByRowIndex(SGC, r);// SGC.PrimaryGrid.Rows[r] as GridRow;
                DG[c].Value = val;
            }
            public static void SetGridVal(SuperGridControl SGC, int r, string cname, string val)
            {
                GridRow DG = GetGridRowByRowIndex(SGC, r);// SGC.PrimaryGrid.Rows[r] as GridRow;
                DG[cname].Value = val;
            }
    
            /// <summary>创建列
            /// 
            /// </summary>
            /// <param name="name">列的name</param>
            /// <param name="headertxt">列的title</param>
            /// <param name="cwidth">列宽</param>
            /// <param name="ctp">列的类型 0默认,1check框,2下拉框,3按钮</param>
            /// <returns></returns>
            public static GridColumn CreatNewCol(string name, string headertxt, int cwidth, int ctp)
            {
                GridColumn gc = new GridColumn();
                gc.Name = name;
                gc.HeaderText = headertxt;
                //gc.ReadOnly = true;
                gc.Width = cwidth;
                //gc.CellMergeMode = CellMergeMode.Vertical;
                //gc.AllowSelection = false;
                //gc.AllowEdit = false;
                if (ctp == 1)
                {
                    gc.EditorType = typeof(DevComponents.DotNetBar.SuperGrid.GridCheckBoxXEditControl);//列的类型
                }
                else if (ctp == 2)
                {
                    gc.EditorType = typeof(DevComponents.DotNetBar.SuperGrid.GridComboBoxExEditControl);//列的类型
                }
                else if (ctp == 3)
                {
                    gc.EditorType = typeof(DevComponents.DotNetBar.SuperGrid.GridButtonXEditControl);//列的类型
                }
                if (cwidth < 0)
                {
                    gc.AutoSizeMode = ColumnAutoSizeMode.Fill;
                }
                return gc;
            }
    
    
            /// <summary>获取某列值为x所在行的另一列数据
            /// 
            /// </summary>
            /// <param name="SGC"></param>
            /// <param name="cname">要求的列</param>
            /// <param name="cothername">已知数据的列</param>
            /// <param name="cotherval">已知的数据</param>
            /// <returns></returns>
            public static string GetValByOtherColData(SuperGridControl SGC, string cname, string cothername, string cotherval)
            {
                string res = "";
                int rs = GetGridRowCount(SGC);
                if (rs < 1)
                {
                    return res;
                }
                for (int i = 0; i < rs; i++)
                {
                    string val = GetGridVal(SGC, i, cothername);
                    if (val == cotherval)
                    {
                        res = GetGridVal(SGC, i, cname);
                    }
                }
                return res;
            }
            public static int GetRowIndexByOtherColData(SuperGridControl SGC, string cname, string cothername, string cotherval)
            {
                int res = -1;
                int rs = GetGridRowCount(SGC);
                if (rs < 1)
                {
                    return res;
                }
                for (int i = 0; i < rs; i++)
                {
                    string val = GetGridVal(SGC, i, cothername);
                    if (val == cotherval)
                    {
                        res = i;
                        break;
                    }
                }
                return res;
            }
    
            //横的合并表头
            public static ColumnGroupHeader GetAdContactHeader(GridColumnCollection columns, string str1, string str2, string title)
            {
                ColumnGroupHeader cgh = new ColumnGroupHeader();
    
                cgh.MinRowHeight = 16;
    
                cgh.Name = "titlename";
                cgh.HeaderText = title;
                cgh.AllowSelection = false;
    
    
                // Set the start and end Display Index which the
                // group header is associated with.
    
                cgh.StartDisplayIndex = columns.GetDisplayIndex(columns[str1]);
                cgh.EndDisplayIndex = columns.GetDisplayIndex(columns[str2]);
    
                return (cgh);
            }
            private ColumnGroupHeader GetAdContactHeader(int stc, int endc, string title)
            {
                ColumnGroupHeader cgh = new ColumnGroupHeader();
                cgh.MinRowHeight = 16;
                cgh.Name = "titlename";
                cgh.HeaderText = title;
                cgh.AllowSelection = false;
                cgh.StartDisplayIndex = stc;
                cgh.EndDisplayIndex = endc;
                return (cgh);
            }
    
    
            #region 例子
            //创建一个 3行  n列的表格头
            public static void testsgc(SuperGridControl SGC)
            {
                //先建好列
                GridPanel panel = SGC.PrimaryGrid; panel.MinRowHeight = 20;
                panel.Columns.Add(CreatNewCol("cs", "列0", 80, 0));
                panel.Columns.Add(CreatNewCol("jz1", "列1", 80, 0));
                panel.Columns.Add(CreatNewCol("jz2", "列2", 80, 0));
                panel.Columns.Add(CreatNewCol("jz3", "列3", 80, 0));
                panel.Columns.Add(CreatNewCol("jz4", "列4", 80, 0));
                panel.Columns.Add(CreatNewCol("jz5", "列5", 80, 0));
    
                panel.Columns.Add(CreatNewCol("ds1", "列1", 80, 0));
                panel.Columns.Add(CreatNewCol("ds2", "列2", 80, 0));
                panel.Columns.Add(CreatNewCol("ds3", "列3", 80, 0));
                panel.Columns.Add(CreatNewCol("ds4", "列4", 80, 0));
    
                panel.Columns.Add(CreatNewCol("dx1", "列1", 80, 0));
                panel.Columns.Add(CreatNewCol("dx2", "列2", 80, 0));
                panel.Columns.Add(CreatNewCol("dx3", "列3", 80, 0));
    
                panel.Columns.Add(CreatNewCol("hmjr", "列1", 80, 0));
                panel.Columns.Add(CreatNewCol("hmujr", "列2", 80, 0));
                panel.Columns.Add(CreatNewCol("hm", "列3", 80, 0));
                GridColumnCollection columns = panel.Columns;
                // ColumnGroupHeader cgh = GetIlAdditionalInfoHeader(columns);
                //设置列头合并
                ColumnGroupHeader c1 = GetAdContactHeader(columns, "jz1", "jz5", "组1");//
                ColumnGroupHeader c2 = GetAdContactHeader(columns, "ds1", "dx3", "组2");
                ColumnGroupHeader c3 = GetAdContactHeader(columns, "ds1", "ds4", "组3");
                ColumnGroupHeader c4 = GetAdContactHeader(columns, "dx1", "dx3", "组4");
                c2.GroupHeaders.Add(c3); c2.GroupHeaders.Add(c4);
    
                panel.ColumnHeader.GroupHeaders.Add(c1);
                panel.ColumnHeader.GroupHeaders.Add(c2);
            }
            private void addrows(SuperGridControl SGC)
            {
                for (int i = 0; i < 100; i++)
                {
                    GridRow Dfr = SGC.PrimaryGrid.NewRow();
                    Dfr[0].Value = i;
                    Dfr[1].Value = i;
                    Dfr[2].Value = i;
                    SGC.PrimaryGrid.Rows.Add(Dfr);
                }
            }
            #endregion
    
        }
    View Code
  • 相关阅读:
    SQL数据库数据优化SQL优化总结( 百万级数据库优化方案)
    三星S8相机黑画面解决
    三星Galaxy S8 刷机经验记录
    2018.12.02 Socket编程之初识Socket
    工作至今
    巧用std::shared_ptr全局对象释放单例内存
    C++标准库之迭代器
    Phone 3rd Recovery
    进电机之两相双极性步进电机仿真
    使用Pretues仿真Arduino驱动步进电机
  • 原文地址:https://www.cnblogs.com/happyqiang/p/10418237.html
Copyright © 2011-2022 走看看