nuMedirecMultiRadio.xjs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Script type="xscript4.0"><![CDATA[class nuMedirecMultiRadio extends Div
  3. {
  4. /*******************************************************************************
  5. * 멤버변수
  6. ******************************************************************************/
  7. private var PADDING_SIZE = 5;
  8. private var TEXT_WIDTH = 12;
  9. private var MARGIN_SIZE = 19//20;//22;
  10. private var LINE_SPACING = 16;
  11. private var oBindDataset;
  12. private var sBindColumn;
  13. private var sDispText;
  14. private var aRadio;
  15. private var _draw = false; //Grid 를 다시 그릴지 여부 (처음에 한번 그린다음에 true로 바뀜
  16. private var oBindDataset;
  17. private var _bCheckAll = false;
  18. private var RUNAFTERLOAD = null;
  19. private var classname = "nuMedirecMultiRadio";
  20. public var columncount; // 컬럼 갯수
  21. public var _binddataset;//_binddataset; // bind dataset
  22. public var codecolumn; // bind col
  23. public var datacolumn; // bind head col
  24. public var _paddingsize;
  25. public var _onitemclick; //체크값이 변경되었을 경우 실행할 함수명 2016.10.07 추가
  26. public var _onitemchanged; //체크값이 변경되었을 경우 실행할 함수명 2016.10.07 추가
  27. //2015.12.10 by 이봉욱 - 기록서식에서 컨트롤 사용 시 checkbox 스타일 관련 속성추가
  28. public var _lineSpacing; //checkbox 행간격(ex: 16)
  29. //public var readonly = true;
  30. /*******************************************************************************
  31. * 생성자 && OnDraw
  32. ******************************************************************************/
  33. /**
  34. * @desc 생성자 생성에 필요한 값들을 정의하자.
  35. * @param sName - 객체이름
  36. * @param iLeft
  37. * @param iTop
  38. * @param iRight
  39. * @param iBottom
  40. */
  41. function nuMedirecMultiRadio( sName, iLeft, iTop, iRight, iBottom ) {
  42. if( !isNull(sName) )
  43. this.name = sName;
  44. if( !isNull(iLeft) )
  45. this.position.left = iLeft;
  46. if( !isNull(iTop) )
  47. this.position.top = iTop;
  48. if( !isNull(iRight) )
  49. this.position.right = iRight;
  50. if( !isNull(iBottom) )
  51. this.position.bottom = iBottom;
  52. //this.class = "nuMedirecMultiRadio";
  53. aRadio = new Array();
  54. }
  55. /**
  56. * 객체를 그릴때마다 기본적으로 호출되는 함수
  57. * checkbox를 그리자.
  58. */
  59. function OnDraw(Canvas, EventArgs)
  60. {
  61. DefaultDraw(Canvas.getPainter());
  62. if(_draw==true)return;
  63. //if(!isNull(oBindDataset)) return;
  64. //checkbox 생성
  65. reDraw();
  66. //_draw = true;
  67. if( RUNAFTERLOAD != null ) {
  68. RUNAFTERLOAD();
  69. RUNAFTERLOAD = null;
  70. }
  71. }
  72. /**
  73. * @desc multicheckbox 를 다시 그린다.
  74. */
  75. function reDraw() {
  76. //if( isNull(datacolumn) || isNull(codecolumn) )
  77. if( isNull(codecolumn) )
  78. return;
  79. if( isNull(_binddataset) )
  80. return;
  81. var orgDataset = eval(_binddataset);
  82. //oBindDataset = eval(_binddataset);
  83. oBindDataset = getInternalDataSet(_binddataset + "_" + this.name);//getDataSet(_binddataset + "_" + this.name);
  84. // trace("Dataset 생성 : " + _binddataset + "_" + this.name);
  85. // trace("Org Dataset : " + orgDataset);
  86. // trace("Org Dataset : " + orgDataset.saveXML());
  87. //oBindDataset.assign(orgDataset);
  88. oBindDataset.loadXML(orgDataset.saveXML());
  89. oBindDataset.name = _binddataset + "_" + this.name;
  90. // trace("Dataset 복사 완료: " + oBindDataset.name);
  91. // trace(oBindDataset.saveXML());
  92. if( isNull( oBindDataset ) )
  93. return;
  94. oBindDataset.onrowposchanged.addHandler( bindDataset_onrowposchanged );
  95. //0. col text 와 col size를 dataset 기준으로 결정하자.
  96. var iColSize = 0;
  97. var aDataCol = new Array();
  98. var aCodeCol = new Array();
  99. for( var i=0; i<oBindDataset.rowcount; i++) {
  100. var value = oBindDataset.getColumn(i, codecolumn);
  101. aCodeCol[i] = value;
  102. if(!isNull(datacolumn)){
  103. var text = oBindDataset.getColumn(i, datacolumn);
  104. aDataCol[i] = text;
  105. }
  106. }
  107. iColSize = aCodeCol.length;//aDataCol.length;
  108. //1. 기존에 등록되어 있는 obj 를 지우자.
  109. for( var i=0; i<aRadio.length; i++ ) {
  110. var objRadio = aRadio[i];
  111. this.removeChild( objRadio.name );
  112. // Destroy Object
  113. objRadio.destroy();
  114. objRadio = null;
  115. }
  116. aRadio = new Array(); //array 초기화
  117. //3. column 마다 최대 길이를 알아내오자.
  118. var iColCnt = isNull(columncount) ? oBindDataset.rowcount :
  119. (columncount == -1 ? oBindDataset.rowcount : columncount);
  120. var aMaxColSize = new Array();
  121. for(var i = 0; i < iColSize; i++){
  122. this.scrollbars = "none";
  123. var iWidthx = MARGIN_SIZE;
  124. if(!isNull(datacolumn))
  125. iWidthx += fn_getTextSize(aDataCol[i], "Dotum", 9);
  126. if( aMaxColSize[i%iColCnt] < iWidthx || aMaxColSize[i%iColCnt] == null){
  127. aMaxColSize[i%iColCnt] = iWidthx;
  128. }
  129. }
  130. //4. Radio 를 그리기 시작하자.
  131. var iLeft = 0;
  132. var iWidth = 150;
  133. var iTop = 0;
  134. var iPadding = 7;
  135. iRowIdx = 0; //줄번호
  136. iColIdx = 0; //col번호
  137. // if( isNull(_paddingsize) ) _paddingsize = 0;
  138. // else _paddingsize = parseInt(_paddingsize);
  139. if( isNull(_paddingsize) ) {
  140. iPadding = isNull(oBindDataset) ? 0 : ((oBindDataset.rowcount == iColCnt) ? PADDING_SIZE : 0)
  141. }
  142. else iPadding = parseInt(_paddingsize);
  143. for(var i=0; i<iColSize; i++) {
  144. var iMaxColSize = aMaxColSize[ iColIdx ];
  145. iWidth = aMaxColSize[i%iColCnt];
  146. //left, top 좌표값 지정
  147. if( iColCnt == 0 ) {
  148. iTop = 0;
  149. } else {
  150. if(!isNull(_lineSpacing)){
  151. iTop = _lineSpacing * iRowIdx;
  152. }else{
  153. iTop = LINE_SPACING * iRowIdx;//MARGIN_SIZE * iRowIdx;
  154. }
  155. //지정한 col 갯수만큼이 되면 줄바꿈
  156. if( i % iColCnt == 0 ) {
  157. iLeft = 0;
  158. }
  159. }
  160. if( (i+1) % iColCnt == 0 ) {
  161. iRowIdx ++;
  162. iColIdx = 0;
  163. } else {
  164. iColIdx++;
  165. }
  166. //새로운 Radio 생성---------------------------------------
  167. var objId = this.name + "_" + aCodeCol[i];//aDataCol[i];//"Radio"+i;
  168. var objRadio = new Radio(objId, iLeft + 2, iTop + 2, iLeft + iWidth, iTop + 16);
  169. if(!isNull(this.class)){
  170. objRadio.class = this.class;
  171. }
  172. if(!isNull(this.refdegnitemno)){
  173. objRadio.refdegnitemno = this.refdegnitemno;
  174. }
  175. objRadio.classname = this.classname;
  176. this.addChild(objId, objRadio);
  177. var dsTemp = new Dataset();
  178. dsTemp.copyData(oBindDataset);
  179. dsTemp.filterstr = "valcd == '"+aCodeCol[i]+"'";
  180. //var dsName = "ds_radio_" + _binddataset + "_" + i;
  181. //var dsName = "ds_" + this.name + "_" + _binddataset + "_" + i;
  182. var dsName = "ds_radio_" + oBindDataset.name + "_" + i;
  183. var dsMultiRadio = getInternalDataSet(dsName);//getDataSet(dsName);//new Dataset()//getDataSet(dsName);
  184. //parent.addChild(dsName, dsMultiRadio);
  185. objRadio.codecolumn = codecolumn;
  186. if(!isNull(datacolumn))
  187. objRadio.datacolumn = datacolumn;
  188. dsMultiRadio.copyData(dsTemp, true);
  189. dsMultiRadio.name = dsName;
  190. objRadio.innerdataset = dsMultiRadio;//dsName;
  191. // trace("♬♬♬♬♬♬♬♬♬♬ objRadio.value : " + objRadio.value)
  192. // trace("♬♬♬♬♬♬♬♬♬♬ dsMultiRadio : \n" + dsMultiRadio.saveXML());
  193. //trace("♬♬♬♬♬♬♬♬♬♬ objRadio.innerdataset : " + objRadio.innerdataset);
  194. //trace("♬♬♬♬♬♬♬♬♬♬ objRadio.innerdataset : \n" + eval(objRadio.innerdataset).saveXML());
  195. objRadio.onkeydown.addHandler( nuMultiRadio_onkeydown );
  196. objRadio.onitemclick.addHandler( nuMultiRadio_onitemclick );
  197. objRadio.onitemchanged.addHandler( nuMultiRadio_onitemchanged );
  198. objRadio.show();
  199. aRadio[i] = objRadio;
  200. //left 좌표값 이동
  201. if( iPadding > 0 ) {
  202. iLeft += iWidth + iPadding;
  203. }else{
  204. iLeft += iWidth;
  205. }
  206. }
  207. //2015.05.13 데이터셋의 갯수가 많아서 스크롤을 생성해야 할 경우가 발생하여 추가
  208. this.resetScroll();
  209. if(this.enable == false) {
  210. this.enable = true;
  211. this.enable = false;
  212. }
  213. _draw = true;
  214. }
  215. /*******************************************************************************
  216. * 확장함수
  217. ******************************************************************************/
  218. /**
  219. * @desc checkbox에 필요한 값을 dataset에서 읽어와서 바인드하자
  220. */
  221. function setBindDataset() {
  222. return;
  223. // if( isNull(oBindDataset) ) return;
  224. //
  225. // var iBaseIdx = 0;
  226. // for(var i=0; i<aRadio.length - iBaseIdx; i++) {
  227. // trace("!!!!!!!여기가 수상하다.");
  228. // var objRadio = aRadio[iBaseIdx + i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
  229. //
  230. // if( oBindDataset.rowcount <= i ) continue;
  231. //
  232. // // 2013.08.28 이길용 수정, setCheckVall시에 이벤트 타는것 방지.
  233. // objRadio.enableevent = false;
  234. //
  235. // var sBindVal = oBindDataset.getColumn( i, codecolumn );
  236. // objRadio.value = sBindVal;
  237. //
  238. // objRadio.enableevent = true;
  239. // }
  240. }
  241. /**
  242. * @desc checkbox에 값이 변경되면 dataset에 값을 바인드하자.
  243. */
  244. function getBindDataset() {
  245. return;
  246. // if( isNull(oBindDataset) ) return;
  247. //
  248. // var iBaseIdx = 0;
  249. // for(var i=0; i<aCheckBox.length - iBaseIdx; i++) {
  250. // var objCheckBox = aCheckBox[iBaseIdx + i]; //'전체'가 포함되어 있을때 idx 가 한칸 뒤로
  251. //
  252. // if( oBindDataset.rowcount <= i ) continue;
  253. //
  254. // oBindDataset.setColumn( i, codecolumn, objCheckBox.value );
  255. // }
  256. }
  257. /**
  258. * @desc DataSet이 존재한다면 그대로 들고 오고 없다면 생성해서 가지고 오자.
  259. * @param sDsNm - DataSet Name
  260. * @return - 생성된 DataSet
  261. */
  262. function getInternalDataSet( sDsNm ) {
  263. var oDS;
  264. if( !this.isValidObject( sDsNm ) ) {
  265. oDS = new Dataset(sDsNm);
  266. oDS.name = sDsNm;
  267. this.addChild(sDsNm, oDS);
  268. } else {
  269. oDS = eval(sDsNm);
  270. }
  271. return oDS;
  272. }
  273. /**
  274. * @desc 값 반환
  275. * @param sGubun 구분자
  276. * @return check 된 code value
  277. */
  278. public function getValue() {
  279. if( isNull(oBindDataset) ) return;
  280. var nRow = oBindDataset.findRow("checked", "1");
  281. if(nRow == -1)
  282. return "";
  283. return oBindDataset.getColumn(nRow, "valcd");
  284. }
  285. /**
  286. * @desc 값 바인드
  287. * @param sBindVal 바인드 시킬 코드 값
  288. * @param sGubun 구분자
  289. */
  290. public function setValue( sValue ) {
  291. //trace("♬♬♬♬♬♬♬ call setValue ===> " + sValue + ", oBindDataset : " + oBindDataset + ", _binddataset : " + _binddataset + ", eval(_binddataset) : " + eval(_binddataset));
  292. //if( isNull(oBindDataset) ) return;
  293. //if( isNull(oBindDataset) ) {
  294. while(_draw == false){
  295. trace( this.name + " draw 여부 : " + _draw );
  296. reDraw();
  297. }
  298. //}
  299. //oBindDataset = eval(_binddataset);
  300. var nRow = oBindDataset.findRowAs(codecolumn, sValue);//7자리 코드(basecd) 기반으로 Setting 가능하도록
  301. //trace("setValue ===> " + sValue + ", " + nRow);
  302. var objRdo;
  303. for(var i=0; i < oBindDataset.rowcount; i++)
  304. {
  305. var valCd = oBindDataset.getColumn(i, codecolumn);
  306. var objNm = this.name + "_" + valCd;
  307. objRdo = this.all[objNm];
  308. if(nRow == i)
  309. {
  310. if(oBindDataset.getColumn(i, "checked") != "1")
  311. {
  312. objRdo.value = valCd;
  313. oBindDataset.setColumn(i, "checked","1");
  314. var ev = new ItemChangeEventInfo();
  315. //nuMultiRadio_onitemchanged(objRdo, ev);
  316. objRdo.onitemchanged.fireEvent(objRdo, ev);
  317. }
  318. }
  319. else
  320. {
  321. var oldValue = objRdo.value;
  322. //trace("oldValue ===> " + oldValue);
  323. objRdo.value = null;
  324. oBindDataset.setColumn(i, "checked","0");
  325. if(!isNull(oldValue)){
  326. var ev = new ItemChangeEventInfo();
  327. objRdo.onitemchanged.fireEvent(objRdo, ev);
  328. }
  329. }
  330. }
  331. }
  332. /*******************************************************************************
  333. * 유틸함수
  334. ******************************************************************************/
  335. /**
  336. * @desc 입력값이 null에 해당하는 경우 모두를 한번에 체크한다.
  337. * @param sValue 체크할 문자열( 예 : null 또는 undefined 또는 "" 또는 "abc" )
  338. * @return sValue가 undefined, null, NaN, "", Array.length = 0인 경우 = true, 이외의 경우 = false
  339. */
  340. private function isNull(sValue)
  341. {
  342. if( new String(sValue).valueOf() == "undefined") return true;
  343. if( sValue == null ) return true;
  344. if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined" ) ) return true;
  345. if( sValue.length == 0 ) return true;
  346. return false;
  347. }
  348. /*
  349. * Function Name : fn_getTextSize
  350. * Description : Text Size 반환
  351. * Parameter : 사이즈를 계산할 문자열, 폰트네임, 폰트사이즈
  352. * Return : 계산된 Size
  353. * Example : fn_getTextSize("XPLATFORM", "Dotum", 9);
  354. */
  355. function fn_getTextSize(sString, sFontName, nFontSize)
  356. {
  357. var objFont = new Font;
  358. objFont.size = nFontSize;
  359. objFont.name = sFontName;
  360. var objPainter = this.canvas.getPainter();
  361. var objTextSize = objPainter.getTextSize(sString, objFont);
  362. return objTextSize.cx;
  363. }
  364. /**
  365. * @desc 현재 컨트롤의 전체이름을 반환한다.
  366. * @param
  367. * @return fullName : 현재 컨트롤의 전체이름
  368. */
  369. function getComponentFullName(){
  370. var fullName = "";
  371. var obj = this;
  372. while(!isNull(obj.parent.name) && (obj.parent.toString().toUpperCase() != "[OBJECT CHILDFRAME]")){
  373. fullName = obj.name + (isNull(fullName)?"":"_") + fullName;
  374. obj = obj.parent;
  375. }
  376. //trace("[nuMultiCheckbox] This Component Full name : " + fullName);
  377. return fullName;
  378. }
  379. /**
  380. * XPlatform Component 타입 리턴
  381. * @param obj : 확인할 Component 객체
  382. * @return string
  383. */
  384. function fn_xpCompTypeOf(obj)
  385. {
  386. var type;
  387. if( obj && (typeof obj == "object") && !obj.hasOwnProperty ){
  388. var s = obj.toString();
  389. if(s.indexOf("object") > -1){
  390. type = s.substr(8, s.length-9);
  391. }else{
  392. type = s;
  393. }
  394. }
  395. return type;
  396. }
  397. //innerdataset을 구하기 위해 추가. 2019.02.28 한지현대리 요청
  398. public function getInnerdataset()
  399. {
  400. var oForm = getBaseForm();
  401. var tmpDs = oForm.objects[_binddataset];
  402. return tmpDs;
  403. }
  404. private function getBaseForm(){
  405. var oForm = this;
  406. while( isNull((oForm = oForm.parent).url) ){
  407. if( oForm.toString() == "[object Form]" )
  408. break;
  409. }
  410. return oForm;
  411. }
  412. /*******************************************************************************
  413. * Event 영역
  414. ******************************************************************************/
  415. /**
  416. * @desc checkbox를 클릭했을때
  417. */
  418. function nuMultiRadio_onitemclick(obj:Radio, e:RadioMouseEventInfo)
  419. {
  420. //trace("Call!!! nuMultiRadio_onitemclick ===> " + obj.value + ", " + e.itemvalue);
  421. if( isNull( oBindDataset ) )
  422. return;
  423. if(isNull(obj.value))
  424. setValue(e.itemvalue);
  425. else
  426. setValue("");
  427. return;
  428. var nRow = oBindDataset.findRow(codecolumn, e.itemvalue);
  429. var objRdo;
  430. //trace("oBindDataset.getRowCount() ==> " + oBindDataset.getRowCount());
  431. for(var i=0; i < oBindDataset.getRowCount(); i++)
  432. {
  433. var valCd = oBindDataset.getColumn(i, "valcd");
  434. var objNm = this.name + "_" + valCd;
  435. objRdo = this.all[objNm];//eval("rdo_multi_"+i);
  436. //trace("objRdo == > " + objRdo);
  437. if(nRow == i)
  438. {
  439. if(oBindDataset.getColumn(i, "checked") == "1")
  440. {
  441. objRdo.value = null;
  442. oBindDataset.setColumn(i, "checked","0");
  443. }
  444. else
  445. {
  446. //test
  447. //objRdo.value = null;
  448. objRdo.value = valCd;
  449. oBindDataset.setColumn(i, "checked","1");
  450. }
  451. }
  452. else
  453. {
  454. objRdo.value = null;
  455. oBindDataset.setColumn(i, "checked","0");
  456. }
  457. }
  458. if(!isNull(_onitemclick))
  459. eval(_onitemclick + "(obj, e)");
  460. }
  461. function nuMultiRadio_onitemchanged(obj:Radio, e:ItemChangeEventInfo)
  462. {
  463. //trace("Call!!! nuMultiRadio_onitemchanged ==> " + obj.name + ", " + obj.value + ", " + e.postvalue);
  464. var focusdObj = this.getFocus();
  465. //trace("obj ==> " + obj + ", focusdObj ==> " + focusdObj);
  466. // trace("obj.parent ==> " + obj.parent.name + ", focusdObj.parent ==> " + focusdObj.parent.name);
  467. // trace("focusdObj ==> " + focusdObj.name + ", " + focusdObj.value + ", " + e.postvalue);
  468. if( !isNull(focusdObj)){
  469. if(obj.parent == focusdObj.parent && obj != focusdObj)
  470. {
  471. if(!isNull(obj.value))
  472. obj.value = null;
  473. obj = focusdObj; }
  474. }
  475. //trace("Call!!! nuMultiRadio_onitemchanged ==> " + _onitemchanged);
  476. if(!isNull(_onitemchanged))
  477. eval(_onitemchanged + "(obj, e)");
  478. }
  479. function nuMultiRadio_onkeydown(obj:Radio, e:KeyEventInfo)
  480. {
  481. if( isNull( oBindDataset ) )
  482. return;
  483. if(e.keycode == 37 || //left
  484. e.keycode == 38 || //top
  485. e.keycode == 39 || //right
  486. e.keycode == 40) //bottom
  487. {
  488. var nRow = oBindDataset.findRow(codecolumn, obj.value);
  489. //trace("!!!!!!!old nRow : " + nRow);
  490. //trace("!!!!!!!oBindDataset.rowcount - 1 : " + (oBindDataset.rowcount - 1));
  491. if(nRow == oBindDataset.rowcount - 1){
  492. if(e.keycode == 39 || e.keycode == 40)
  493. nRow = 0;
  494. else{
  495. nRow = nRow - 1;
  496. if(nRow < 0){
  497. nRow = 0;
  498. }
  499. }
  500. }
  501. else if(nRow != -1){
  502. if(e.keycode == 39 || e.keycode == 40)
  503. nRow = nRow + 1;
  504. else{
  505. nRow = nRow - 1;
  506. if(nRow < 0)
  507. nRow = oBindDataset.rowcount - 1;
  508. }
  509. }else if(nRow == -1){
  510. nRow = 0;
  511. }
  512. var valCd = oBindDataset.getColumn(nRow, codecolumn);
  513. //trace("!!!!!!!new nRow : " + nRow + ", " + valCd);
  514. var objNm = this.name + "_" + valCd;
  515. var objRdo = this.all[objNm];
  516. objRdo.setFocus();
  517. setValue(valCd);
  518. }
  519. }
  520. function AddItemChangedHandler(pFunc){
  521. while(_draw == false){
  522. trace( this.name + " draw 여부 : " + _draw );
  523. reDraw();
  524. }
  525. if( isNull( oBindDataset ) )
  526. return;
  527. for(var i=0; i < oBindDataset.rowcount; i++)
  528. {
  529. var valCd = oBindDataset.getColumn(i, "valcd");
  530. var objNm = this.name + "_" + valCd;
  531. var objRdo = this.all[objNm];
  532. if(isNull(objRdo))
  533. continue;
  534. objRdo.onitemchanged.addHandler(pFunc);
  535. }
  536. }
  537. /**
  538. * @desc dataset의 rowposition 이 변경되었을때
  539. */
  540. function bindDataset_onrowposchanged(obj:Dataset, e:DSRowPosChangeEventInfo)
  541. {
  542. //trace("bindDataset_onrowposchanged");
  543. setBindDataset();
  544. }
  545. }
  546. ]]></Script>