164893eda7a4e0a3882b005975a2b61496b03f34.svn-base 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using Janus.Windows.GridEX;
  6. using System.Drawing;
  7. using System.Collections;
  8. namespace IControls_FireManager
  9. {
  10. // Janus Gridex 관련 함수는 여기 클래스에서 전담한다
  11. public static class _Gridex
  12. {
  13. /* 샘플
  14. // 컬럼 관리 리스트
  15. List<GridEXColumn> GridEXColumnList = new List<GridEXColumn>();
  16. // 컬럼 추가
  17. GridEXColumnList.Add(_Gridex.Column_Add(gridEX_DeviceListInfo,ColumnType.Text,EditType.TextBox,ButtonStyle.NoButton, "test1"));
  18. GridEXColumnList.Add(_Gridex.Column_Add(gridEX_DeviceListInfo, ColumnType.Text, EditType.TextBox,ButtonStyle.ButtonCell, "test2"));
  19. GridEXColumnList.Add(_Gridex.Column_Add(gridEX_DeviceListInfo, ColumnType.CheckBox, EditType.CheckBox,ButtonStyle.NoButton, "test3"));
  20. // 컬럼셋 추가 (컬럼 생성 개수에 맞게)
  21. GridEXColumnSet gridEXColumnSet = _Gridex.ColumnSet_Add(gridEX_DeviceListInfo, null, null, 3, 400);
  22. // 컬럼셋 위치 조절
  23. _Gridex.ColumnSet_AddColumn(gridEX_DeviceListInfo, gridEXColumnSet, "test1", 0);
  24. _Gridex.ColumnSet_AddColumn(gridEX_DeviceListInfo, gridEXColumnSet, "test2", 1);
  25. _Gridex.ColumnSet_AddColumn(gridEX_DeviceListInfo, gridEXColumnSet, "test3", 2);
  26. // 컬럼 사이즈
  27. _Gridex.Column_Width(GridEXColumnList[0], 200);
  28. // 컬럼
  29. _Gridex.Column_Data_Add(gridEX_DeviceListInfo, true, "test1=1;test2=2;test3=3");
  30. */
  31. // cyim - 2012.8.13
  32. ////
  33. //// 예제 - 수신기 노드를 선택하면 4가지 타입의 데이타가 표시됩니다
  34. //// -> 텍스트박스(일반) , 체크박스 , 콤보박스, 버튼
  35. //// 헤더문구는 UI_WORKFRAME_RECEIVER_COLUMNNAME =>"Text;Checkbox;Button;Combobox"; 가 있다고 가정합니다.
  36. //// 컬럼을 제어할수 있는 GridEXColumnList_Receiver 의 리스트에는 각각 Text;Checkbox;Button;Combobox 정보가 있습니다.
  37. ////
  38. //// 일반
  39. //if(ColumnName=="Text")
  40. // GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.NoButton, ColumnName));
  41. //// 체크박스
  42. //else if (ColumnName == "Checkbox")
  43. // GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.CheckBox, EditType.CheckBox, ButtonStyle.NoButton, ColumnName));
  44. //// 버튼
  45. //else if (ColumnName == "Button")
  46. // GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.TextBox, ButtonStyle.ButtonCell, ColumnName));
  47. //// 콤보박스
  48. //else if (ColumnName == "Combobox")
  49. //{
  50. // //콤보박스안에 글자를 삽입한후 컬럼을 추가한다
  51. // GridEXColumnList_Receiver.Add(_Gridex.Column_Add(Gridex, ColumnType.Text, EditType.Combo, ButtonStyle.NoButton, ColumnName,"test1;test2"));
  52. //}
  53. // 컬럼추가
  54. public static GridEXColumn Column_Add(Janus.Windows.GridEX.GridEX gridEX, ColumnType Columntype, EditType Edittype, ButtonStyle Buttonstyle, bool AllowSort, string ColumnName)
  55. {
  56. GridEXColumn NewGridEXColumn = new Janus.Windows.GridEX.GridEXColumn();
  57. NewGridEXColumn.ColumnType = Columntype;
  58. NewGridEXColumn.EditType = Edittype;
  59. NewGridEXColumn.ButtonStyle = Buttonstyle;
  60. if (Buttonstyle == ButtonStyle.ButtonCell) NewGridEXColumn.ButtonDisplayMode = CellButtonDisplayMode.Always;
  61. NewGridEXColumn.Caption = ColumnName;
  62. NewGridEXColumn.Key = ColumnName;
  63. NewGridEXColumn.HeaderAlignment = TextAlignment.Center;
  64. NewGridEXColumn.TextAlignment = TextAlignment.Center;
  65. NewGridEXColumn.LineAlignment = TextAlignment.Center;
  66. NewGridEXColumn.WordWrap = true;
  67. NewGridEXColumn.AllowSize = true;
  68. NewGridEXColumn.AutoSizeMode = ColumnAutoSizeMode.AllCells;
  69. NewGridEXColumn.MaxLines = 100;
  70. NewGridEXColumn.Trimming = Trimming.NoTrimming;
  71. NewGridEXColumn.BoundMode = ColumnBoundMode.Unbound;
  72. if (AllowSort == true) NewGridEXColumn.SortIndicator = SortIndicator.Automatic;
  73. else NewGridEXColumn.SortIndicator = SortIndicator.None;
  74. NewGridEXColumn.AllowSort = AllowSort;
  75. gridEX.RootTable.Columns.Add(NewGridEXColumn);
  76. return NewGridEXColumn;
  77. }
  78. public static GridEXColumn Column_Add(Janus.Windows.GridEX.GridEX gridEX, ColumnType Columntype, EditType Edittype, ButtonStyle Buttonstyle, string ColumnName, ArrayList ComboboxItems)
  79. {
  80. GridEXColumn NewGridEXColumn = new Janus.Windows.GridEX.GridEXColumn();
  81. NewGridEXColumn.ColumnType = Columntype;
  82. NewGridEXColumn.EditType = Edittype;
  83. NewGridEXColumn.ButtonStyle = Buttonstyle;
  84. NewGridEXColumn.Caption = ColumnName;
  85. NewGridEXColumn.Key = ColumnName;
  86. NewGridEXColumn.HeaderAlignment = TextAlignment.Center;
  87. NewGridEXColumn.TextAlignment = TextAlignment.Center;
  88. NewGridEXColumn.LineAlignment = TextAlignment.Center;
  89. NewGridEXColumn.WordWrap = true;
  90. NewGridEXColumn.AllowSize = true;
  91. NewGridEXColumn.AutoSizeMode = ColumnAutoSizeMode.AllCells;
  92. NewGridEXColumn.MaxLines = 100;
  93. NewGridEXColumn.Trimming = Trimming.NoTrimming;
  94. NewGridEXColumn.BoundMode = ColumnBoundMode.Unbound;
  95. gridEX.RootTable.Columns.Add(NewGridEXColumn);
  96. if (Edittype == EditType.Combo)
  97. {
  98. // 콤보박스에 추가할 헤더를 찾는다
  99. GridEXColumn column = gridEX.RootTable.Columns[ColumnName];
  100. column.HasValueList = true;
  101. column.EditButtonDisplayMode = CellButtonDisplayMode.Always;
  102. GridEXValueListItemCollection valueList = column.ValueList;
  103. // 콤보박스의 경우 특별히 추가될 아이템이 존재한다
  104. valueList.PopulateValueList(ComboboxItems);
  105. }
  106. return NewGridEXColumn;
  107. }
  108. // 컬럼 가로사이즈
  109. public static void Column_Width(GridEXColumn ColumnName, int Width)
  110. {
  111. ColumnName.Width = Width;
  112. }
  113. // 컬럼셋추가
  114. public static GridEXColumnSet ColumnSet_Add(Janus.Windows.GridEX.GridEX gridEX, string ColumnSetName, string Title, int Count,int Width)
  115. {
  116. GridEXColumnSet NewGridEXColumnSet = gridEX.RootTable.ColumnSets.Add();
  117. NewGridEXColumnSet.Caption = Title;
  118. NewGridEXColumnSet.HeaderAlignment = TextAlignment.Center;
  119. NewGridEXColumnSet.Key = ColumnSetName;
  120. NewGridEXColumnSet.ColumnCount = Count;
  121. NewGridEXColumnSet.Width = Width; // 실제 컬럼 가로 사이즈
  122. return NewGridEXColumnSet;
  123. }
  124. // 컬럼셋에 컬럼을 추가
  125. public static void ColumnSet_AddColumn(Janus.Windows.GridEX.GridEX gridEX, GridEXColumnSet gridEXColumnSet, string ColumnName, int Index) // index 는 0부터 시작함
  126. {
  127. gridEXColumnSet.Add(gridEX.RootTable.Columns[ColumnName], 0, Index);
  128. }
  129. // 컬럼키를 모두 조회 (결과는 ArrauList)
  130. public static ArrayList Get_ColumnHeaderName(Janus.Windows.GridEX.GridEX gridEX)
  131. {
  132. ArrayList result = new ArrayList();
  133. for(int i=0;i<gridEX.RootTable.Columns.Count;i++)
  134. result.Add(gridEX.RootTable.Columns[i].Key);
  135. return result;
  136. }
  137. // 컬럼키를 모두 조회 (결과는 String)
  138. public static string[] Get_ColumnHeadersName(Janus.Windows.GridEX.GridEX gridEX)
  139. {
  140. string [] result = new string[gridEX.RootTable.Columns.Count];
  141. for(int i=0;i<gridEX.RootTable.Columns.Count;i++)
  142. {
  143. result[i] = gridEX.RootTable.Columns[i].Key;
  144. }
  145. return result;
  146. }
  147. //
  148. // 색상 조절 1
  149. // 컨디션 조건을 등록하는 경우 사전에 미리 등록된 값이 변경되면 해당되는 컬럼의 배경색을 바꾼다
  150. //
  151. // 컬럼 배경색 컨디션 속성 생성
  152. public static bool BackColorFormatCondition_Create(Janus.Windows.GridEX.GridEX gridEX, Color TargetColor, string[] ColumnNames, string CompareColumn_Key, string CompareColumn_Value)
  153. {
  154. try
  155. {
  156. // ColumnNames 예시 -> "test1;test2"
  157. foreach (GridEXColumn Columnn in gridEX.RootTable.Columns)
  158. {
  159. for (int i = 0; i < ColumnNames.Length; i++)
  160. {
  161. if (ColumnNames[i] == Columnn.Key)
  162. {
  163. GridEXFormatCondition gGridEXFormatCondition = new GridEXFormatCondition(gridEX.RootTable.Columns[CompareColumn_Key], ConditionOperator.Equal, CompareColumn_Value);
  164. gGridEXFormatCondition.TargetColumn = Columnn;
  165. gGridEXFormatCondition.FormatStyle.BackColor = TargetColor;
  166. gridEX.RootTable.FormatConditions.Add(gGridEXFormatCondition);
  167. }
  168. }
  169. }
  170. return true;
  171. }
  172. catch (Exception e)
  173. {
  174. // LOG
  175. _Event.DebugView_SendMessage_Write(e.ToString());
  176. return false;
  177. }
  178. }
  179. // 컬럼 배경색 컨디션 속성 초기화
  180. public static bool BackColorFormatCondition_Clear(Janus.Windows.GridEX.GridEX gridEX)
  181. {
  182. try
  183. {
  184. gridEX.RootTable.FormatConditions.Clear();
  185. return true;
  186. }
  187. catch (Exception e)
  188. {
  189. // LOG
  190. _Event.DebugView_SendMessage_Write(e.ToString());
  191. return false;
  192. }
  193. }
  194. // 컬럼 데이터 삽입 (단, string 형태의 데이터만 허용한다)
  195. // Key_Data 의 예시 "Key1=Data1;Key2=Data2"
  196. public static void Column_Data_Add(Janus.Windows.GridEX.GridEX gridEX, bool top, string Key_Data) // ascending descending
  197. {
  198. try
  199. {
  200. GridEXRow row;
  201. if (top == true)
  202. row = gridEX.AddItem(0);
  203. else
  204. row = gridEX.AddItem();
  205. // 속성 이름 임시 저장소
  206. string Temp_Names = _Convert.String_to_Key_Data(Key_Data, true, false);
  207. // 제거 문자대로 분리시켜버림
  208. string[] Column_Names = Temp_Names.Split(_Convert.Result_Char);
  209. // 속성 값 임시 저장소
  210. string Temp_Values = _Convert.String_to_Key_Data(Key_Data, false, false);
  211. // 제거 문자대로 분리시켜버림
  212. string[] Column_Values = Temp_Values.Split(_Convert.Result_Char);
  213. row.BeginEdit();
  214. for (int i = 0; i < Column_Names.Length; i++)
  215. {
  216. if (row.Cells[Column_Names[i]].Column.ColumnType == ColumnType.CheckBox)
  217. {
  218. row.Cells[Column_Names[i]].Value = Convert.ToBoolean(Column_Values[i]);
  219. }
  220. else
  221. {
  222. row.Cells[Column_Names[i]].Value = Column_Values[i];
  223. }
  224. }
  225. row.EndEdit();
  226. }
  227. catch (Exception e)
  228. {
  229. // LOG
  230. _Event.DebugView_SendMessage_Write(e.ToString());
  231. }
  232. }
  233. // 컬럽 데이터 편집
  234. public static void Column_Data_Edit(Janus.Windows.GridEX.GridEX gridEX, string Target_Key_Data, string Key_Data)
  235. {
  236. try
  237. {
  238. // 속성 이름 임시 저장소
  239. string Temp_Names = _Convert.String_to_Key_Data(Key_Data, true, false);
  240. // 제거 문자대로 분리시켜버림
  241. string[] Column_Names = Temp_Names.Split(_Convert.Result_Char);
  242. // 속성 값 임시 저장소
  243. string Temp_Values = _Convert.String_to_Key_Data(Key_Data, false, false);
  244. // 제거 문자대로 분리시켜버림
  245. string[] Column_Values = Temp_Values.Split(_Convert.Result_Char);
  246. // 속성 이름 임시 저장소
  247. string Temp_Names_Target = _Convert.String_to_Key_Data(Target_Key_Data, true, false);
  248. // 제거 문자대로 분리시켜버림
  249. string[] Column_Names_Target = Temp_Names_Target.Split(_Convert.Result_Char);
  250. // 속성 값 임시 저장소
  251. string Temp_Values_Target = _Convert.String_to_Key_Data(Target_Key_Data, false, false);
  252. // 제거 문자대로 분리시켜버림
  253. string[] Column_Values_Target = Temp_Values_Target.Split(_Convert.Result_Char);
  254. GridEXRow[] row = gridEX.GetRows();
  255. // 편집
  256. foreach (GridEXRow editrow in row)
  257. {
  258. for (int j = 0; j < Column_Names_Target.Length; j++)
  259. {
  260. if (editrow.Cells[Column_Names_Target[j]].Value.ToString() == Column_Values_Target[j])
  261. {
  262. editrow.BeginEdit();
  263. for (int i = 0; i < Column_Names.Length; i++)
  264. {
  265. if (editrow.Cells[Column_Names[i]].Column.ColumnType == ColumnType.CheckBox)
  266. {
  267. editrow.Cells[Column_Names[i]].Value = Convert.ToBoolean(Column_Values[i]);
  268. }
  269. else
  270. {
  271. editrow.Cells[Column_Names[i]].Value = Column_Values[i];
  272. }
  273. }
  274. editrow.EndEdit();
  275. }
  276. }
  277. }
  278. }
  279. catch (Exception e)
  280. {
  281. // LOG
  282. _Event.DebugView_SendMessage_Write(e.ToString());
  283. }
  284. }
  285. }
  286. }