private void SetarBold()
        {
            C1.Win.C1FlexGrid.CellStyle cs = gridRoteiros.Styles.Add("FontBold");
            cs.Font = new Font(gridRoteiros.Font.Name, gridRoteiros.Font.Size, FontStyle.Bold);

            for (int i = 1; i < gridRoteiros.Rows.Count; i++)
            {
                if (gridRoteiros.Rows[i].Node.Row[2].Equals(String.Empty))
                {
                    gridRoteiros.Rows[i].Style = cs;
                }
            }
        }
예제 #2
0
        /// <summary>
        /// FlexGrid를 트리 형식으로 구성한다.
        /// e.g.) felxGrid.x_TreeSetting(datasource, 0, 1, false, false, false);
        /// </summary>
        /// <param name="flexGrid"></param>
        /// <param name="dt">바인딩을 위한 데이터 소스(데이터 소스는 표현될 트리와 동일한 형식으로 구성되어 있어야 함. 트리 노드에 나타날 컬럼과 현재 노드의 레벨이 반드시 지정되어 있어야 함</param>
        /// <param name="treeCol">트리노드에 나타날 컬럼의 인덱스</param>
        /// <param name="levelCol">노드의 레벨 정보를 가지고 있는 컬럼의 인덱스</param>
        /// <param name="expandLevel">처음 로드시 확장될 레벨 값 (e.g. 0으로 지정된 경우 최상위 노드만 보여지고 나머지 레벨은 접혀있음)</param>
        /// <param name="isVertical">트리를 수직으로 표현할 지를 결정. 즉 노드의 수평 라인을 제거</param>
        /// <param name="isHeader">헤더 표시 여부</param>
        /// <param name="isTopLevel">최상위 노드 표시 여부</param>
        /// <remarks>
        /// -------------------------------------
        /// | treeCol     | level | etc1 | etc2 |
        /// -------------------------------------
        /// | 대분류 Data |   0   | etc1 | etc2 |
        /// -------------------------------------
        /// | 소분류 Data |   1   | etc1 | etc2 |
        /// -------------------------------------
        /// | 중분류 Data |   2   | etc1 | etc2 |
        /// -------------------------------------
        ///
        /// e.g.) flexGrid.x_TreeSetting(datasource, 0, 1, false, false, false);
        /// </remarks>
        public static void x_TreeSetting(this C1FlexGrid flexGrid, System.Data.DataTable dt, int treeCol, int levelCol, int expandLevel, bool isVertical, bool isHeader, bool isTopLevel)
        {
            int START_ROW = 0;
            int END_ROW   = 0;

            treeCol  += 10;
            levelCol += 10;
            if (dt.Rows.Count == 0)
            {
                return;
            }

            flexGrid.BeginUpdate();

            //Tree 초기화(ROW선 없앰)
            if (isVertical)
            {
                C1.Win.C1FlexGrid.CellStyle cs = flexGrid.Styles.Normal;
                cs.Border.Direction = C1.Win.C1FlexGrid.BorderDirEnum.Vertical;
            }

            flexGrid.Tree.Column  = treeCol;
            flexGrid.Tree.Style   = TreeStyleFlags.Simple;
            flexGrid.AllowMerging = AllowMergingEnum.Nodes;
            flexGrid.Tree.Indent  = 1;

            //최상위레벨 존재하는 경우
            if (isTopLevel)
            {
                flexGrid.Rows.Count = dt.Rows.Count + flexGrid.Rows.Fixed + 1;
                START_ROW           = 1;
                END_ROW             = dt.Rows.Count + 1;
                flexGrid.SetData(flexGrid.Rows.Fixed, levelCol, 0);
                flexGrid.SetData(flexGrid.Rows.Fixed, treeCol, "[전체]");
                flexGrid.Rows[flexGrid.Rows.Fixed].IsNode     = true;
                flexGrid.Rows[flexGrid.Rows.Fixed].Node.Level = 0;
            }
            else
            {
                flexGrid.Rows.Count = dt.Rows.Count + flexGrid.Rows.Fixed;
                START_ROW           = 0;
                END_ROW             = dt.Rows.Count;
            }

            for (int i = START_ROW; i < END_ROW; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    if (flexGrid.Cols.Count == 0)
                    {
                        flexGrid.SetData(i + flexGrid.Rows.Fixed, j, dt.Rows[i - START_ROW][j]);
                    }
                    else if (flexGrid.Cols.Count > 0 && FlexGridFindCol(flexGrid, dt.Columns[j].ColumnName) > -1)
                    {
                        flexGrid.SetData(i + flexGrid.Rows.Fixed, dt.Columns[j].ColumnName, dt.Rows[i - START_ROW][j]);
                    }
                    else
                    {
                        continue;
                    }
                }
                // 로우에 노드를 만든다
                flexGrid.Rows[i + flexGrid.Rows.Fixed].IsNode = true;
                // 노드의 레벨을 설정(Level)
                flexGrid.Rows[i + flexGrid.Rows.Fixed].Node.Level = ToInt(flexGrid.Rows[i + flexGrid.Rows.Fixed][levelCol]);
            }

            //노드확장 수준 결정
            if (isTopLevel)
            {
                flexGrid.Rows[flexGrid.Rows.Fixed].Node.Collapsed = true;
            }

            for (int i = START_ROW; i < END_ROW; i++)
            {
                //확장레벨보다 하위레벨이면 Collapse처리
                if (ToInt(flexGrid.Rows[i + flexGrid.Rows.Fixed][levelCol]) >= expandLevel)
                {
                    flexGrid.Rows[i + flexGrid.Rows.Fixed].Node.Collapsed = true;
                }
                else
                {
                    flexGrid.Rows[i + flexGrid.Rows.Fixed].Node.Collapsed = false;
                }
            }

            //헤더표시 여부
            if (!isHeader)
            {
                for (int i = 0; i < flexGrid.Rows.Fixed; i++)
                {
                    flexGrid.Rows.Remove(i);
                }

                flexGrid.Rows.Fixed = 0;
            }

            flexGrid.EndUpdate();
            flexGrid.Refresh();
        }