{"TYPE":"Single","MTX_MODULE_INFO":[{"MODULE_CODE":"MOD99EA14A1B54B2063EAFA00DCDCEF9A3F","MODULE_SUBJECT":"스마트에디터 활용하여 데이터 저장","USE_AUTHORITY":"0","EDIT_AUTHORITY":"-1","MODULE_DESCRIPTION":"DataGrid와 Add-In 컴포넌트를 활용하여 데이터를 저장합니다.\nAdd-In 컴포넌트 배치 후 Class 옵션을 SmartEditor로 변경합니다.\nSmartEditor를 활용하여 텍스트 데이터 저장 시 html 데이터로 저장됩니다. (DB 컬럼 유형 Text 추천)","SCRIPT_TEXT":"/**\n * ============================================================\n * 스마트에디터 활용 데이터 저장하기\n * ============================================================\n * 설명    : 스마트에디터에 작성한 내용을 그리드에 반영하고 저장합니다.\n *           화면 로드 시 기존 데이터를 에디터에 불러오며,\n *           저장 버튼 클릭 시 편집 내용을 DB에 저장합니다.\n *\n * Arguments:\n *   [0] {string} dgName          - 데이터를 저장할 그리드 컨트롤 ID\n *   [1] {string} fldName         - 에디터 내용을 저장할 컬럼 이름\n *   [2] {string} ADDIN_CONTENTS  - 스마트에디터 Addin 컨트롤 ID\n *   [3] {string} btnSave         - 저장 버튼 컨트롤 ID\n *   [4] {string} planName        - 저장 시 실행할 ExecutePlan 이름\n * ============================================================\n */\n\nvar dgName          = Matrix.getObject(arguments[0]);\nvar fldName         = arguments[1];\nvar ADDIN_CONTENTS  = Matrix.getObject(arguments[2]);\nvar btnSave         = Matrix.getObject(arguments[3]);\nvar planName        = arguments[4];\n\nvar addinCeontents          = null;\nvar EDITOR_LOADING_MAX_TRY_COUNT = 10;\n\n/**\n * Addin 로딩 딜레이 해소를 위한 함수\n * 에디터가 완전히 로드될 때까지 최대 maxTryCount 횟수만큼 재시도합니다.\n *\n * @param {function} callback    - 에디터 로드 완료 후 실행할 함수\n * @param {number}   maxTryCount - 최대 재시도 횟수\n */\nvar AddinOnLoad = function (callback, maxTryCount) {\n    var delayedSetValue = function (tryCount) {\n        tryCount++;\n        try {\n            if (maxTryCount > tryCount) {\n                callback();\n            }\n        } catch (e) {\n            window.setTimeout(delayedSetValue.bind(null, tryCount), 50);\n        }\n    };\n    delayedSetValue(0);\n};\n\n// 에디터 초기화 및 기본값 세팅\nAddinOnLoad(function () {\n    addinCeontents = ADDIN_CONTENTS.getScriptClass(\"BIMatrix.SmartEditor.SmartEditor\");\n    addinCeontents.SetValue('<p><span style=\"color: rgb(255, 0, 0);\">test</span></p><p>&nbsp;</p><p>&nbsp;</p>');\n}, EDITOR_LOADING_MAX_TRY_COUNT);\n\n// 그리드 데이터 로드 완료 시 기존 내용을 에디터에 표시\ndgName.OnDataBindEnd = function (s, e) {\n    var contents = dgName.GetRow(0).GetValue(fldName);\n    addinCeontents.SetValue(contents);\n};\n\n// 저장 버튼 클릭 시 에디터 내용을 그리드에 반영 후 저장\nbtnSave.OnClick = function (sender, args) {\n    dgName.GetRow(0).SetValue(fldName, addinCeontents.GetValue());\n    dgName.EndUpdate();\n    dgName.ChangeRowStateAt(0, 'U');\n\n    Matrix.ExecutePlan(planName, null, function (p) {\n        if (p.Success == false) {\n            Matrix.Alert(p.Message);\n            return;\n        }\n        Matrix.doRefresh(dgName);\n        alert(\"저장하였습니다.\");\n    });\n};","MODULE_TYPE":"","RESULT_TYPE":"","ORIGINAL_MODULE_CODE":"","CREATE_USER":"matrix","MODIFY_USER":"auduser","MODULE_SEQ":"14","WF_YN":"","EVENT_YN":"N","ATTR1":"","ATTR2":"","ATTR3":"", "MTX_MODULE_PARAMS":[{"MODULE_CODE":"MOD99EA14A1B54B2063EAFA00DCDCEF9A3F","PARAM_SEQ":"1","PARAM_TYPE":"INP003","NULLABLE":"N","PARAM_DESCRIPTION":"에디터 내용을 저장할 데이터그리드 선택","DEFAULT_VALUE":"","ATTR1":"","ATTR2":"","ATTR3":""},{"MODULE_CODE":"MOD99EA14A1B54B2063EAFA00DCDCEF9A3F","PARAM_SEQ":"2","PARAM_TYPE":"INP001","NULLABLE":"N","PARAM_DESCRIPTION":"스마트에디터의 내용을 저장할 데이터그리드 컬러명 입력","DEFAULT_VALUE":"","ATTR1":"","ATTR2":"","ATTR3":""},{"MODULE_CODE":"MOD99EA14A1B54B2063EAFA00DCDCEF9A3F","PARAM_SEQ":"3","PARAM_TYPE":"INP004","NULLABLE":"N","PARAM_DESCRIPTION":"내용을 작성할스마트에디터 Addin 컨트롤 선택","DEFAULT_VALUE":"","ATTR1":"","ATTR2":"","ATTR3":""},{"MODULE_CODE":"MOD99EA14A1B54B2063EAFA00DCDCEF9A3F","PARAM_SEQ":"4","PARAM_TYPE":"INP004","NULLABLE":"N","PARAM_DESCRIPTION":"저장 버튼 선택","DEFAULT_VALUE":"","ATTR1":"","ATTR2":"","ATTR3":""},{"MODULE_CODE":"MOD99EA14A1B54B2063EAFA00DCDCEF9A3F","PARAM_SEQ":"5","PARAM_TYPE":"INP011","NULLABLE":"N","PARAM_DESCRIPTION":"실행할 ExecutionPlan(실행 계획) 이름 입력","DEFAULT_VALUE":"","ATTR1":"","ATTR2":"","ATTR3":""}]}]}