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; } } }
/// <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(); }