SPMMB01400_버튼환경설정.xrw 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. <?xml version="1.0" encoding="EUC-KR"?>
  2. <?xml-stylesheet type="text/css" href="../../../com/commonweb/css/common.css" ?>
  3. <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/2002/01/xforms" xmlns:ev="http://www.w3.org/2001/xml-events">
  4. <xhtml:head>
  5. <xhtml:title>button환경설정</xhtml:title>
  6. <model id="model1">
  7. <instance id="instance1">
  8. <root xmlns="">
  9. <main>
  10. <cond>
  11. <scrnkindcd/>
  12. </cond>
  13. <info>
  14. <btnevninfo>
  15. <btnevnlist>
  16. <useyn/>
  17. <btncd/>
  18. <btnnm/>
  19. <scrnkindcd/>
  20. </btnevnlist>
  21. </btnevninfo>
  22. <userbtnevninfo>
  23. <userbtnevnlist>
  24. <btnnm/>
  25. <btnseq/>
  26. <btncd/>
  27. <scrnkindcd/>
  28. </userbtnevnlist>
  29. </userbtnevninfo>
  30. </info>
  31. <title>
  32. <usernm/>
  33. </title>
  34. </main>
  35. <send>
  36. <reqdata/>
  37. <savedata/>
  38. </send>
  39. <hidden>
  40. <userbtnevninfo>
  41. <userbtnevnlist>
  42. <btnnm/>
  43. <btnseq/>
  44. <btncd/>
  45. <scrnkindcd/>
  46. </userbtnevnlist>
  47. </userbtnevninfo>
  48. </hidden>
  49. <init>
  50. <cond>
  51. <M0290/>
  52. </cond>
  53. <msrght>
  54. <mouserght>
  55. <label>삭제</label>
  56. <func>fDeleteRow</func>
  57. <status/>
  58. </mouserght>
  59. </msrght>
  60. </init>
  61. </root>
  62. </instance>
  63. <script type="javascript" ev:event="xforms-ready">
  64. <![CDATA[
  65. //화면종류를 공통코드로 받아옴
  66. zbcfGetCodeList(
  67. new Array("M0290"),
  68. new Array("/root/init/cond")
  69. );
  70. //model.setValue("/root/main/title/usernm", getUserInfo("usernm") + "님 선택");
  71. //그리드 상태를 초기화
  72. model.removeNodeset("/root/main/info/btnevninfo/btnevnlist");
  73. model.removeNodeset("/root/main/info/userbtnevninfo/userbtnevnlist");
  74. model.refresh();
  75. //화면종류를 첫 데이타를 보여줌
  76. cmb_scrnkindcd.select(0);
  77. //화면종류를 가지고 버튼명을 조회
  78. model.copyNode("/root/send/reqdata","/root/main/cond");
  79. //전체 버튼 조회
  80. submit("TRMMB01401");
  81. //사용자 버튼 조회
  82. submit("TRMMB01402");
  83. //조회한 전체 개수
  84. var rows = grd_btnevnlist.rows - grd_btnevnlist.fixedRows;
  85. for(var i = 1 ; i <= rows ; i++){
  86. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/useyn", 'true');
  87. }
  88. //사용자별 버튼명 조회
  89. var userrows = grd_userbtnevnlist.rows- grd_userbtnevnlist.fixedRows;
  90. //전체와 사용자별을 같은 코드를 선택을 없앰
  91. for(var i =1 ; i <= userrows ; i++){
  92. btncd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + i + "]/btncd");
  93. for(var j = 1 ; j <= rows ; j++){
  94. var cd = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + j + "]/btncd");
  95. if(cd == btncd){
  96. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + j + "]/useyn", 'false');
  97. }
  98. }
  99. }
  100. ]]>
  101. </script>
  102. <submission id="TRMMB01401" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/info/btnevninfo"/>
  103. <submission id="TRMMB01402" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/reqdata" resultref="/root/main/info/userbtnevninfo"/>
  104. <submission id="TXMMB01401" mediatype="application/x-www-form-urlencoded" method="post" ref="/root/send/savedata" resultref="/root/main/info"/>
  105. <submission id="TRZBC00101" mediatype="application/x-www-form-urlencoded" method="post"/>
  106. <script type="javascript">
  107. <![CDATA[
  108. //선택된 row삭제
  109. function fDeleteRow(){
  110. //상태값을 삭제로..
  111. model.setValue("/root/init/msrght/mouserght/status",'d');
  112. //선택한 로우를 지움
  113. deleteSelectedRows(grd_userbtnevnlist, true);
  114. }
  115. ]]>
  116. </script>
  117. </model>
  118. <script type="javascript" src="../../../com/commonweb/js/common.js"/>
  119. <script type="javascript" src="../../../com/commonweb/js/tfHelper.js"/>
  120. <script type="javascript" src="../../../com/commonweb/js/dateHelper.js"/>
  121. <script type="javascript" src="../../../com/basiccodeweb/js/ZBC001.js"/>
  122. </xhtml:head>
  123. <xhtml:body pagewidth="480" pageheight="550" guideline="1,449;" style="margin-left:8; margin-top:8; margin-right:8; margin-bottom:8; ">
  124. <shape id="roundrect1" appearance="roundrect" ellipsewidth="10" ellipseheight="10" style="left:0px; top:6px; width:449px; height:39px; background-color:#fffbf2; border-color:#ffd799; "/>
  125. <caption id="caption2" class="search_name" style="left:20px; top:15px; width:105px; height:17px; ">화면 종류 :</caption>
  126. <line id="line3" style="x1:355px; y1:10px; x2:355px; y2:40px; border-color:#ffe4bb; border-left-style:solid; "/>
  127. <button id="btn_req" class="btn1_letter2" navindex="6" style="left:367px; top:15px; width:56px; height:22px; ">
  128. <caption>조회</caption>
  129. <script type="javascript" ev:event="DOMActivate">
  130. <![CDATA[
  131. //화면종류를 가지고 버튼명을 조회
  132. model.copyNode("/root/send/reqdata","/root/main/cond");
  133. //전체 버튼 조회
  134. submit("TRMMB01401");
  135. //사용자 버튼 조회
  136. submit("TRMMB01402");
  137. //전체 버튼 개수
  138. var rows = grd_btnevnlist.rows - grd_btnevnlist.fixedRows;
  139. for(var i = 1 ; i <= rows ; i++){
  140. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/useyn", 'true');
  141. }
  142. //사용자별 버튼명 조회
  143. var userrows = grd_userbtnevnlist.rows- grd_userbtnevnlist.fixedRows;
  144. //전체와 사용자별을 같은 코드를 선택을 없앰
  145. for(var i =1 ; i <= userrows ; i++){
  146. btncd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + i + "]/btncd");
  147. for(var j = 1 ; j <= rows ; j++){
  148. var cd = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + j + "]/btncd");
  149. if(cd == btncd){
  150. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + j + "]/useyn", 'false');
  151. }
  152. }
  153. }
  154. ]]>
  155. </script>
  156. </button>
  157. <caption id="caption25" class="tit_2" style="left:0px; top:59px; width:105px; height:13px; ">전체</caption>
  158. <line id="line1" class="line_1" style="x1:0px; y1:76px; x2:213px; y2:76px; "/>
  159. <datagrid id="grd_btnevnlist" nodeset="/root/main/info/btnevninfo/btnevnlist" caption="선택^button코드^Button명" colsep="^" colwidth="40, 0, 150" dataheight="25" extendlastcol="noscroll" mergecellsfixedrows="bycolrec" rowheader="seq" rowsep="|" navindex="7" style="left:0px; top:81px; width:213px; height:459px; ">
  160. <col ref="useyn" type="checkbox"/>
  161. <col ref="btncd"/>
  162. <col ref="btnnm"/>
  163. <script type="javascript" ev:event="ondblclick">
  164. <![CDATA[
  165. if (grd_btnevnlist.isCell(event.target) && grd_btnevnlist.mouseRow >= grd_btnevnlist.fixedRows) {
  166. //신규입력 상태값
  167. model.makeNode("/root/main/cond/status");
  168. model.setValue("/root/main/cond/status", 'i');
  169. //중복여부 확인 변수
  170. var dupl = 0;
  171. //선택한 전체버튼 로우
  172. var row = grd_btnevnlist.row;
  173. //총 사용자별 그리드 개수
  174. var rows = grd_userbtnevnlist.rows;
  175. //총 사영자별 버튼 개수
  176. var Urows = grd_userbtnevnlist.rows- grd_userbtnevnlist.fixedRows;
  177. //전체 버튼의 버튼코드, 버튼명, 화면종류 를 받아옴
  178. var cd = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + row + "]/btncd");
  179. var nm = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + row + "]/btnnm");
  180. var kind = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + row + "]/scrnkindcd");
  181. //선택된 버튼이 사용자 버튼에 존재하는 지 확인
  182. for(var j=1 ; j <= rows ; j++){
  183. //코드값과 명을 받아옴
  184. var userbtncd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + j + "]/btncd");
  185. var userbtnnm = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + j + "]/btnnm");
  186. //코드가 같은 것이 있는지 확인 있는 경우 메세지
  187. if(cd == userbtncd){
  188. messageBox(userbtnnm + " 버튼명이 ","E006");
  189. dupl = dupl + 1;
  190. }
  191. }
  192. //중복된 코드가 없는 경우
  193. if(dupl == 0){
  194. //사용자 버튼 그리드에 로우 추가
  195. grd_userbtnevnlist.addrow(false);
  196. //현재 사용자 버튼 그리드에 선택된 버튼이 하나도 없을 경우
  197. if(rows == 1){
  198. //첫번째 로우에 버튼코드, 버튼명, 화면종류, 조회순서을 세팅
  199. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/btncd", cd);
  200. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/btnnm", nm);
  201. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/scrnkindcd", kind);
  202. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/btnseq", '1');
  203. //전체 버튼 그리드에 선택된 로우의 선택을 선택해제
  204. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + row + "]/useyn", 'false');
  205. }else{
  206. //사용자버튼 그리드에 선택된 버튼이 있는 경우
  207. //사용자별 총 버튼 개수의 마지막 조회순서값을 받아옴
  208. var seq = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + Urows + "]/btnseq");
  209. //계산가능하게 변경
  210. var btnseq = parseInt(seq);
  211. //버튼코드, 버튼명, 화면종류, 조회순서을 세팅
  212. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/btncd", cd);
  213. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/btnnm", nm);
  214. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/scrnkindcd", kind);
  215. //조회순서는 마지막 조회순서에서 1증가하여 세팅
  216. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + rows + "]/btnseq", btnseq+1);
  217. //전체 버튼 그리드에 선택된 로우의 선택을 선택해제
  218. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + row + "]/useyn", 'false');
  219. }
  220. }
  221. }
  222. model.refresh();
  223. ]]>
  224. </script>
  225. </datagrid>
  226. <caption id="caption3" class="tit_2" style="left:215px; top:59px; width:50px; height:13px; ">선택</caption>
  227. <line id="line2" class="line_1" style="x1:215px; y1:76px; x2:450px; y2:76px; "/>
  228. <datagrid id="grd_userbtnevnlist" nodeset="/root/main/info/userbtnevninfo/userbtnevnlist" caption="Button명^Button코드^화면종류^조회순서" colsep="^" colwidth="213, 0, 0, 10" dataheight="25" extendlastcol="noscroll" mergecellsfixedrows="bycolrec" rowheader="update" rowsep="|" navindex="7" style="left:215px; top:81px; width:235px; height:459px; ">
  229. <col ref="btnnm"/>
  230. <col ref="btncd"/>
  231. <col ref="scrnkindcd"/>
  232. <col ref="btnseq" type="input" visibility="hidden" style="text-align:center; "/>
  233. <script type="javascript" ev:event="onmousedown">
  234. <![CDATA[
  235. //마우스 오른쪽을 누르면 삭제 팝업이 뜨고 선택시 선택한 row를 삭제
  236. if (grd_userbtnevnlist.isCell(event.target) && grd_userbtnevnlist.mouseRow >= grd_userbtnevnlist.fixedRows) {
  237. //에러가 나면 이전 상태로 만들어 주기위해 저장하여 둠
  238. model.copyNode("/root/hidden/userbtnevninfo","/root/main/info/userbtnevninfo");
  239. //오른쪽 팝업을 보이게 true로 한다.
  240. app.showPopupMenu(true);
  241. //오른쪽 마우스 선택시 삭제창이 나타나면 선택한 row삭제
  242. window.setPopupMenu(true, "/root/init/msrght/mouserght", "label", "func", false);
  243. } else {
  244. window.setPopupMenu(false);
  245. }
  246. ]]>
  247. </script>
  248. <script type="javascript" ev:event="xforms-value-changed">
  249. <![CDATA[
  250. //복사를 했다는 상태를 나타내서 수정인것을 나타냄
  251. model.makeNode("/root/main/cond/status");
  252. model.setValue("/root/main/cond/status", 'u');
  253. //에러가 나면 이전 상태로 만들어 주기위해 저장하여 둠
  254. model.copyNode("/root/hidden/userbtnevninfo","/root/main/info/userbtnevninfo");
  255. //조회순서가 변경되면 변경된 조회순서보다 큰것은 모두 조회순서들을 1씩 증가
  256. //변경한 로우
  257. var row = grd_userbtnevnlist.row;
  258. //사용자 버튼 선택 그리드 총 수
  259. var rows = grd_userbtnevnlist.rows - grd_userbtnevnlist.fixedRows;
  260. //변경한 로우의 조회순서값
  261. var seq = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row + "]/btnseq");
  262. //조회순서값을 계산가능하게..
  263. seq = parseInt(seq);
  264. //그리드를 총 비교하기 위해 루프를 돔
  265. for(var i= 1 ; i <= rows ; i++){
  266. //조회순서값을 받아옴
  267. var rowseq = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist["+ i + "]/btnseq");
  268. //변경한 로우의 조회순서값과 이행의 로우의 조회순서값을 비교하여 같거나 큰경우 변경하고 그 행의 조회순서는 변경안되게 한다.
  269. if((rowseq >= seq) && (i != row)){
  270. //변경한 조회순서보다 1씩 증가를 위해 값을 증가
  271. seq = seq + 1;
  272. //증가한 조회순서를 로우에 변경
  273. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + i + "]/btnseq",seq);
  274. //변경한 로우를 update상태로 변경
  275. grd_userbtnevnlist.rowStatus(i) = 2;
  276. }
  277. }
  278. model.refresh();
  279. ]]>
  280. </script>
  281. </datagrid>
  282. <select1 id="cmb_scrnkindcd" ref="/root/main/cond/scrnkindcd" navindex="1" appearance="minimal" style="left:115px; top:14px; width:140px; height:19px; ">
  283. <choices>
  284. <itemset nodeset="/root/init/cond/M0290">
  285. <label ref="cdnm"/>
  286. <value ref="cdid"/>
  287. </itemset>
  288. </choices>
  289. <script type="javascript" ev:event="xforms-value-changed">
  290. <![CDATA[
  291. //화면종류가 변경되면 조회
  292. btn_req.dispatch("DOMActivate");
  293. ]]>
  294. </script>
  295. </select1>
  296. <button id="btn_copy" class="btn2_letter2" style="left:168px; top:54px; width:42px; height:19px; ">
  297. <caption>복사</caption>
  298. <script type="javascript" ev:event="DOMActivate">
  299. <![CDATA[
  300. //복사를 했다는 상태를 나타내서 신규입력인것을 나타냄
  301. model.makeNode("/root/main/cond/status");
  302. model.setValue("/root/main/cond/status", 'i');
  303. //전체버튼 선택 개수
  304. var rows = grd_btnevnlist.rows;
  305. //사용자 버튼 선택 개수
  306. var userrows = grd_userbtnevnlist.rows - grd_userbtnevnlist.fixedRows;
  307. var count = 0;
  308. var row = 0;
  309. //사용자 버튼 선택된 마지막 로우의 조회순서
  310. var seq = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + userrows + "]/btnseq");
  311. //조회순서 값이 null이면 0 값을 입력
  312. if (isNull(seq)) {
  313. seq = 0;
  314. }
  315. //조회순서 계산 가능
  316. var kind = parseInt(seq);
  317. //전체 버튼에서 선택 되어 있는 버튼을 복사 버튼을 누르면 모두 사용자 선택버튼 쪽으로 복사
  318. for(var i=1; i <= rows ; i++){
  319. //중복여부 확인 변수
  320. var dupl = 0;
  321. //선택되어 있는지 값받아옴
  322. var check = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/useyn");
  323. //버튼코드, 버튼명, 화면종류 값 받아옴
  324. var btncd = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/btncd");
  325. var btnnm = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/btnnm");
  326. var scrnkindcd = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/scrnkindcd");
  327. //선택되어 있는 경우 사용자 버튼선택에 존재하지 않으므로 복사
  328. if(check == 'true'){
  329. //선택된 버튼이 사용자 버튼에 존재하는 지 확인
  330. for(var j=1 ; j <= userrows ; j++){
  331. //코드값과 명을 받아옴
  332. var userbtncd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + j + "]/btncd");
  333. var userbtnnm = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + j + "]/btnnm");
  334. //코드가 같은 것이 있는지 확인 있는 경우 메세지
  335. if(btncd == userbtncd){
  336. messageBox(userbtnnm + " 버튼명이 ","E006");
  337. dupl = dupl + 1;
  338. }
  339. }
  340. //중복된 코드가 없는 경우
  341. if(dupl == 0){
  342. //복사한 개수
  343. count = count +1;
  344. //조회순서값을 1씩 증가
  345. kind = kind + 1;
  346. //로우를 한줄 생성
  347. grd_userbtnevnlist.addrow(false);
  348. //한줄 성생된 로우 값
  349. row = userrows+count;
  350. //받아온 코드, 명, 화면종류를 셋하고 조회순서로 셋한다.
  351. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row + "]/btncd", btncd);
  352. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row + "]/btnnm", btnnm);
  353. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row + "]/btnseq", kind);
  354. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row + "]/scrnkindcd", scrnkindcd);
  355. //전체 그리드에서 선택된 것을 선택 해제
  356. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/useyn",'false');
  357. }
  358. }
  359. }
  360. model.refresh();
  361. ]]>
  362. </script>
  363. </button>
  364. <button id="btn_save" class="btn5_letter2" style="left:408px; top:54px; width:42px; height:19px; ">
  365. <caption>저장</caption>
  366. <script type="javascript" ev:event="DOMActivate">
  367. <![CDATA[
  368. //상태값을 받아옴
  369. var status = model.getValue("/root/init/msrght/mouserght/status");
  370. //중복여부 확인변수
  371. var dupl = 'false';
  372. //사용자 선택 버튼 개수
  373. var rows = grd_userbtnevnlist.rows;
  374. //버튼명을 저장할 변수
  375. var nm = null;
  376. //등록할때의 상태값
  377. var status = model.getValue("/root/main/cond/status");
  378. //삭제할 때의 상태값
  379. var delstatus = model.getValue("/root/init/msrght/mouserght/status");
  380. //등록할 때의 상태값인경우
  381. if(status == 'i'){
  382. //그리드이 상태가 변한 데이타를 가져감
  383. model.setValue("/root/send/savedata",grd_userbtnevnlist.getUpdateData());
  384. //상태값을 초기화
  385. model.setValue("/root/main/cond/status",'');
  386. }else if(status == 'u'){
  387. //그리드이 상태가 변한 데이타를 가져감
  388. model.setValue("/root/send/savedata",grd_userbtnevnlist.getUpdateData());
  389. //상태값을 초기화
  390. model.setValue("/root/main/cond/status",'');
  391. }else if(delstatus == 'd'){
  392. //삭제인 경우
  393. xPath = "/root/main/info/userbtnevninfo/userbtnevnlist";
  394. var savedata ="m▦rownum▦btnnm▦btncd▦scrnkindcd▦btnseq▩";
  395. //멀티로 선택한 데이타의 개수를 받아옴
  396. var selectedrows = grd_userbtnevnlist.selectedRows;
  397. //사용자버튼선택 그리드의 개수를 받아옴
  398. var sRowCnt = grd_userbtnevnlist.rows - grd_userbtnevnlist.fixedRows;
  399. //멀티로 선택한 로우값을 저장할 변수
  400. var row = new Array();
  401. //멀티로 선택한 로우값을 변수에 저장
  402. for(var i = selectedrows-1 ; i >= 0 ; i--){
  403. row[i] = grd_userbtnevnlist.selectedRow(i);
  404. }
  405. //data를 보냄
  406. for(var i = selectedrows-1 ; i >= 0 ; i--){
  407. savedata += "d" + "▦";
  408. savedata += row[i] + "▦";
  409. savedata += model.getValue(xPath+"["+row[i]+"]/btnnm" ) + "▦";
  410. savedata += model.getValue(xPath+"["+row[i]+"]/btncd" ) + "▦";
  411. savedata += model.getValue(xPath+"["+row[i]+"]/scrnkindcd" ) + "▦";
  412. savedata += model.getValue(xPath+"["+row[i]+"]/btnseq" ) + "▩";
  413. }
  414. //받아온 데이타를 보냄
  415. model.setValue("/root/send/savedata",savedata);
  416. //상태값을 초기화
  417. model.setValue("/root/init/msrght/mouserght/status",'');
  418. }
  419. //저장하러 간다
  420. if (submit("TXMMB01401")){
  421. //저장이 완료되면 초기화
  422. //model.copyNode("/root/send/reqdata", "");
  423. //model.setValue("/root/send/savedata", "");
  424. //전체의 총 개수
  425. var rows = grd_btnevnlist.rows - grd_btnevnlist.fixedRows;
  426. //전체의 선택을 모두 선택상태로 만듬
  427. for(var i = 1 ; i <= rows ; i++){
  428. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + i + "]/useyn", 'true');
  429. }
  430. //사용자 버튼 선택 개수를 받아옴
  431. var userrows = grd_userbtnevnlist.rows- grd_userbtnevnlist.fixedRows;
  432. //사용자 선택 개수와 전체버튼 개수 코드를 비교하여 같은 것이 있는 경우 선택 해제
  433. for(var i =1 ; i <= userrows ; i++){
  434. btncd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + i + "]/btncd");
  435. for(var j = 1 ; j <= rows ; j++){
  436. var cd = model.getValue("/root/main/info/btnevninfo/btnevnlist[" + j + "]/btncd");
  437. if(cd == btncd){
  438. model.setValue("/root/main/info/btnevninfo/btnevnlist[" + j + "]/useyn", 'false');
  439. }
  440. }
  441. }
  442. //제대로 저장되었다고 상태값을 보내고 창닫음
  443. opener.javascript.setParameter ( "SPMMB01400_rtn", "Y" );
  444. window.close();
  445. } else {
  446. //저장이 완료되면 초기화
  447. model.copyNode("/root/send/reqdata", "");
  448. model.setValue("/root/send/savedata", "");
  449. //저장이 되지 않았다는 상태값을 보내고 창닫음
  450. opener.javascript.setParameter ( "SPMMB01400_rtn", "N" );
  451. window.close();
  452. }
  453. model.refresh();
  454. ]]>
  455. </script>
  456. </button>
  457. <output id="opt_usernm" ref="/root/main/title/usernm" style="left:230px; top:56px; width:90px; height:19px; font-weight:bold; "/>
  458. <button id="button1" class="btn2_letter2" style="left:320px; top:54px; width:42px; height:19px; ">
  459. <caption>올림</caption>
  460. <script type="javascript" ev:event="DOMActivate">
  461. <![CDATA[
  462. //수정을 했다는 상태를 나타내서 수정인것을 나타냄
  463. model.makeNode("/root/main/cond/status");
  464. model.setValue("/root/main/cond/status", 'u');
  465. //멀티로 선택된 로우 개수
  466. var selectedRows = grd_userbtnevnlist.selectedRows;
  467. //선택된 로우행 저장
  468. var row = new Array();
  469. //다음로우의 버튼명 변수
  470. var nextrownm = new Array();
  471. //다음 로우의 코드 변수
  472. var nextrowcd = new Array();
  473. //다음 로우의 화면종류코드 변수
  474. var nextrowkindcd = new Array();
  475. //멀티로 선택된 개수대로 변수에 저장
  476. for (var i= selectedRows-1 ; i >= 0 ; i--){
  477. //선택된 로우행을 변수에 저장
  478. row[i] = grd_userbtnevnlist.selectedrow(i);
  479. //버튼명, 버튼코드, 화면종류를 받아옴
  480. nextrownm[i] = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row[i] + "]/btnnm");
  481. nextrowcd[i] = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row[i] + "]/btncd");
  482. nextrowkindcd[i] = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row[i] + "]/scrnkindcd");
  483. //선택된 로우가 첫번째 로우일 경우
  484. if(i == 0){
  485. var nextrow = row[i] - 1;
  486. }
  487. //선택된 로우가 마지막 로우일 경우
  488. if(i == selectedRows-1){
  489. var next = row[i];
  490. }
  491. }
  492. //마지막 로우가 가장 위일 경우 메세지
  493. if(nextrow == 0){
  494. messageBox("올림을", "E001");
  495. }else{
  496. //올림으로 선택한 첫번째 로우의 위의 로우의 버튼명, 버튼코드, 화면종류를 미리 저장
  497. var rownm = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + nextrow + "]/btnnm");
  498. var rowcd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + nextrow + "]/btncd");
  499. var rowkindcd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + nextrow + "]/scrnkindcd");
  500. //멀티로 선택된 로우의 가장 마지막 로우부터 상태값들을 저장
  501. for (var i= selectedRows-1 ; i >= 0 ; i--){
  502. var Srow = row[i]-1;
  503. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + Srow + "]/btnnm", nextrownm[i] );
  504. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + Srow + "]/btncd", nextrowcd[i]);
  505. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + Srow + "]/scrnkindcd", nextrowkindcd[i]);
  506. grd_userbtnevnlist.rowStatus(Srow) = 2;
  507. }
  508. //가장마지막 로우에 가장 먼저 미리 저장해둔 값을 넣어둠
  509. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + next + "]/btnnm", rownm);
  510. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + next + "]/btncd", rowcd);
  511. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + next + "]/scrnkindcd", rowkindcd);
  512. grd_userbtnevnlist.rowStatus(next) = 2;
  513. }
  514. model.refresh();
  515. //이동된 row를 select 처리함
  516. if( row.length > 0 ){
  517. for(var i=0; i<row.length; i++){
  518. grd_userbtnevnlist.select(row[i], 0, row[i], grd_userbtnevnlist.cols-1) = false;
  519. grd_userbtnevnlist.AddListSelect(row[i]-1);
  520. }
  521. }
  522. ]]>
  523. </script>
  524. </button>
  525. <button id="button2" class="btn2_letter2" style="left:363px; top:54px; width:42px; height:19px; ">
  526. <caption>내림</caption>
  527. <script type="javascript" ev:event="DOMActivate">
  528. <![CDATA[
  529. //수정을 했다는 상태를 나타내서 수정인것을 나타냄
  530. model.makeNode("/root/main/cond/status");
  531. model.setValue("/root/main/cond/status", 'u');
  532. //총 로우의 개수
  533. var rows = grd_userbtnevnlist.rows;
  534. //멀티로 선택된 로우 개수
  535. var selectedRows = grd_userbtnevnlist.selectedRows;
  536. //선택된 로우행 저장
  537. var row = new Array();
  538. //다음로우의 버튼명 변수
  539. var nextrownm = new Array();
  540. //다음 로우의 코드 변수
  541. var nextrowcd = new Array();
  542. //다음 로우의 화면종류코드 변수
  543. var nextrowkindcd = new Array();
  544. //멀티로 선택된 개수대로 변수에 저장
  545. for (var i= selectedRows-1 ; i >= 0 ; i--){
  546. //선택된 로우행을 변수에 저장
  547. row[i] = grd_userbtnevnlist.selectedrow(i);
  548. //버튼명, 버튼코드, 화면종류를 받아옴
  549. nextrownm[i] = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row[i] + "]/btnnm");
  550. nextrowcd[i] = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row[i] + "]/btncd");
  551. nextrowkindcd[i] = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + row[i] + "]/scrnkindcd");
  552. //선택된 로우가 마지막 로우일 경우
  553. if(i == selectedRows-1){
  554. var nextrow = row[i] + 1;
  555. }
  556. //선택된 로우가 첫번째 로우일 경우
  557. if(i == 0){
  558. var next = row[i];
  559. }
  560. }
  561. //마지막 로우가 가장 아래일 경우 메세지
  562. if(nextrow == rows){
  563. messageBox("내림을", "E001");
  564. }else{
  565. //내림으로 선택한 첫번째 로우의 아래의 로우의 버튼명, 버튼코드, 화면종류를 미리 저장
  566. var rownm = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + nextrow + "]/btnnm");
  567. var rowcd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + nextrow + "]/btncd");
  568. var rowkindcd = model.getValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + nextrow + "]/scrnkindcd");
  569. //멀티로 선택된 로우의 가장 마지막 로우부터 상태값들을 저장
  570. for (var i= selectedRows-1 ; i >= 0 ; i--){
  571. var Srow = row[i]+1;
  572. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + Srow + "]/btnnm", nextrownm[i] );
  573. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + Srow + "]/btncd", nextrowcd[i]);
  574. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + Srow + "]/scrnkindcd", nextrowkindcd[i]);
  575. grd_userbtnevnlist.rowStatus(Srow) = 2;
  576. }
  577. //가장마지막 로우에 가장 먼저 미리 저장해둔 값을 넣어둠
  578. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + next + "]/btnnm", rownm);
  579. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + next + "]/btncd", rowcd);
  580. model.setValue("/root/main/info/userbtnevninfo/userbtnevnlist[" + next + "]/scrnkindcd", rowkindcd);
  581. grd_userbtnevnlist.rowStatus(next) = 2;
  582. }
  583. model.refresh();
  584. //이동된 row를 select 처리함
  585. if( row.length > 0 ){
  586. for(var i=0; i<row.length; i++){
  587. grd_userbtnevnlist.select(row[i], 0, row[i], grd_userbtnevnlist.cols-1) = false;
  588. grd_userbtnevnlist.AddListSelect(row[i]+1);
  589. }
  590. }
  591. ]]>
  592. </script>
  593. </button>
  594. </xhtml:body>
  595. </xhtml:html>