function clsForm() { var that = this; this.dt = new DataTable(); this.dt_detail = new DataTable(); this.str_namespace = "display.form"; this.str_form_name = "FormName"; this.str_display_name = "%namespace%.%FormName%.%EleName%"; this.flg_error = false; this.error_msg = null; this.event_defined = []; this.functions = null; this.required_mark = " *"; // 必輸欄位顯示的符號 this.refreshing_listbox = false; this.set_message = function (ele_name, str) { try { if (str == "") $(this.str_namespace + "." + this.str_form_name + "." + ele_name + ".message").innerHTML = ""; else $(this.str_namespace + "." + this.str_form_name + "." + ele_name + ".message").innerHTML = "
" + str; } catch (e) { //window.status = "clsForm.set_message() 錯誤訊息:" + e.Message; try { $(ele_name + ".message").innerHTML = "
" + str; } catch (e) { } } } this.clear_message = function () { var dt = this.dt; for (var row = 0; row < dt.MaxRow(); row++) { var ele_name = dt.getValueByRow(row, "ELE_NAME"); this.set_message(ele_name, ""); } } this.clear_detail_message = function (dt) { if (typeof(dt) == "undefined") return; for (var row = 0; row < dt.MaxRow(); row++) { var ele_name = dt.getValueByRow(row, "ELE_NAME"); this.set_message(ele_name, ""); } } this.get_schema = function (str_url, str_element_list) { var _dt = new DataTable(); this.dt = new DataTable(); alert("clsForm.get_schema()"); try { var str_result = _dt.connect(str_url, str_element_list); this.dt.ImportXML(_dt.getValue("XML"), "NewDataSet", "", 0, -1); return (true); } catch (e) { alert("clsForm.get_schema() 發生錯誤!\n 錯誤訊息:" + e.Message); return (false); } } //*************************************************************************************************** // schema_dt, detail_row, control_name 為 Grid 使用 this.create_textbox = function (row, element_name, element_param, str_url, str_element_list, schema_dt, detail_row, control_name, _value, _name) //*************************************************************************************************** { var required = false; if (typeof (schema_dt) == "undefined") { var detail = false var dt = this.dt; } else { var detail = true; var dt = schema_dt; } var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = new StringBuilder(); _display_content.Append(str_HEAD); var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_TAIL = dt.getValueByRow(row, "TAIL"); var str_WATERMARK = dt.getValueByRow(row, "WATERMARK"); var str_URL = dt.getValueByRow(row, "URL"); str_URL = str_URL.ReplaceAll("%page_name%", str_page_name); var str_display_name = this.str_display_name; var element_id = ""; // if (detail) // element_id = element_name + "_" + detail_row.toString(); // else element_id = element_name; // var style = ""; switch (str_TYPE.toUpperCase()) { case "COLOR": // 調色盤 _display_content.Append("
"); _display_content.replace("%name%", element_name); str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); $(str_display_name).innerHTML = _display_content.ToString(); $j("[id='" + element_name + "_picker']").ColorPicker({ flat: true, color: '#00ff00', onSubmit: function (hsb, hex, rgb) { set_element_value(this.parent().attr("EDITOR"), hex); }, onChange: function (hsb, hex, rgb) { set_element_value(this.parent().attr("EDITOR"), hex); } }); $j("[id='" + element_name + "_btn']").attr("TAG", "0"); $j("[id='" + element_name + "_btn']").attr("PICKER", element_name + "_picker"); $j("[id='" + element_name + "_picker']").hide(); $j("[id='" + element_name + "_picker']").attr("EDITOR", element_name); $j("[id='" + element_name + "_btn']").bind('click', function () { if ($j(this).attr("TAG") == "0") { //$j("[id='" + $j(this).attr("PICKER") + "']").ColorPickerSetColor( $j("[id='" + $j(this).attr("PICKER") + "']").show(); $j(this).attr("TAG", "1"); } else { $j("[id='" + $j(this).attr("PICKER") + "']").hide(); $j(this).attr("TAG", "0"); } }); $j("[name='" + element_name + "']").keyup(function () { try { if (this.value.length == 6) $j("[id='" + this.name + "_btn']").css('backgroundColor', '#' + get_element_value(this.name)); } catch (e) { }; } ); // 定義取得value的function function getValueColor(ele_name) { return ($j("[name='" + ele_name + "']").val()); } function setValueColor(ele_name, ele_value) { $j("[name='" + ele_name + "']").val(ele_value); $j("[id='" + ele_name + "_btn']").css('backgroundColor', '#' + ele_value); try { $j("[id='" + ele_name + "_picker']").ColorPickerSetColor(ele_value) } catch (e) { }; } controls.add(element_name, getValueColor, setValueColor); return; break; case "FILE": _display_content.Append("
"); _display_content.replace("%name%", element_name); str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); $(str_display_name).innerHTML = _display_content.ToString(); function createUploader() { var uploader = new qq.FileUploader({ element: document.getElementById(element_name), action: str_URL }); } if (this.functions == null) this.functions = new Array(); this.functions.push(createUploader); return; break; case "String".toUpperCase(): element_param += " size='%len%' maxlength='%len%'"; element_param = element_param.ReplaceAll("%len%", str_LEN); break; case "Numeric".toUpperCase(): var _length = parseInt(str_LEN, 10); if (str_DECIMAL != "" && str_DECIMAL != "0") _length += 1; element_param += " size='%len%' maxlength='%len%'"; style += "text-align:right;" element_param += " onblur=\"this.value=FormatKendo(this.value, " + str_LEN + ",'" + str_DECIMAL + "');\""; element_param = element_param.ReplaceAll("%len%", _length); break; case "Integer".toUpperCase(): element_param += " size='%len%' maxlength='%len%'"; style += "text-align:right;" element_param = element_param.ReplaceAll("%len%", str_LEN); break; case "Date".toUpperCase(): element_param += " size='10' maxlength='10'"; element_param = element_param.ReplaceAll("%len%", "10"); element_param += " onblur=\"if (this.value.length==8) this.value=this.value.substring(0,4)+'/'+this.value.substring(4,6)+'/'+this.value.substring(6,8);\""; break; case "Time".toUpperCase(): element_param += " size='%len%' maxlength='%len%'"; element_param = element_param.ReplaceAll("%len%", "5"); break; case "DateTime".toUpperCase(): element_param += " size='20' maxlength='20'"; break; case "YearMon".toUpperCase(): element_param += " size='7' maxlength='7'"; break; default: element_param += " size='20' maxlength='20'"; break; } var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" || this.str_namespace == "display.AddNew.form" || detail == true) && element_disabled != "1") { required = true; style += "border-color:red;"; } if (style != "") element_param += " style=\"" + style + "\""; str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); if (str_TYPE.toUpperCase() == "FILE") { _display_content.Append(""); } else _display_content.Append(""); if (str_TYPE.toUpperCase() == "BUTTON" && element_disabled != "1") { _display_content.Append(" "); } if (str_TYPE.toUpperCase() == "Date".toUpperCase() && element_disabled != "1") { var t_func = function () { var year = (new Date()).getFullYear() + 5; $j("[id='" + element_id + "']").kendoDatePicker({ format: "yyyy/MM/dd" } ); } this.push_function(t_func) } if (str_TYPE.toUpperCase() == "YearMon".toUpperCase() && element_disabled != "1") { var t_func = function () { $j("[id='" + element_id + "']").kendoDatePicker({ format: 'yyyy/MM', start: "year", depth: "year" }); } this.push_function(t_func); } if (str_TYPE.toUpperCase() == "Date".toUpperCase() || str_TYPE.toUpperCase() == "YearMon".toUpperCase()) controls.add(element_name, getValue, setValue); if (str_TYPE.toUpperCase() == "Numeric".toUpperCase()) controls.add(element_name, getNumValue, setNumValue); _display_content.Append(str_TAIL); if (required) { _display_content.Append(this.required_mark); }; _display_content.replace("%name%", element_name); _display_content.replace("%param%", element_param); // 定義取得value的function function getValue(ele_name) { if ($(ele_name).value == str_WATERMARK) return ""; if (str_TYPE.toUpperCase() == "Date".toUpperCase() || str_TYPE.toUpperCase() == "YearMon".toUpperCase()) { return $(ele_name).value.ReplaceAll("/", "") } return $j.trim($(ele_name).value); } function setValue(ele_name, ele_value) { ele_value = $j.trim(ele_value); if (str_TYPE.toUpperCase() == "Date".toUpperCase()) { $(ele_name).value = (ele_value == "" ? "" : ele_value.toString().substring(0, 4) + "/" + ele_value.toString().substring(4, 6) + "/" + ele_value.toString().substring(6, 8)); return; } if (str_TYPE.toUpperCase() == "YearMon".toUpperCase()) { $(ele_name).value = (ele_value == "" ? "" : ele_value.toString().substring(0, 4) + "" + ele_value.toString().substring(4, 6)); return; } $(ele_name).value = ele_value; } function getNumValue(ele_name) { return $(ele_name).value.ReplaceAll(",", ""); } function setNumValue(ele_name, ele_value) { $(ele_name).value = FormatKendo(ele_value, str_LEN, str_DECIMAL); } if (str_TYPE.toUpperCase() == "Date".toUpperCase()) { // alert (_display_content); } try { $(str_display_name).innerHTML = _display_content.ToString(); if ((str_TYPE.toUpperCase() == "Date".toUpperCase() || str_TYPE.toUpperCase() == "YearMon".toUpperCase()) && element_disabled != "1") t_func(); } catch (e) { alert("沒有這個物件可以使用:" + "display." + element_name); } } //*************************************************************************************************** this.create_html = function (row, element_name, element_param, str_url, str_element_list, schema_dt, detail_row, control_name, _value, _name) //*************************************************************************************************** { if (typeof(schema_dt) == "undefined") { var detail = false var dt = this.dt; } else { var detail = true; var dt = schema_dt; } var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = str_HEAD; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var str_TAIL = dt.getValueByRow(row, "TAIL"); if (element_param == "") { switch (str_TYPE.toUpperCase()) { case "String".toUpperCase(): case "Numeric".toUpperCase(): element_param = "size='%len%' maxlength='%len%'"; element_param = element_param.ReplaceAll("%len%", str_LEN); break; case "DateTime".toUpperCase(): element_param = "size='20' maxlength='20'"; break; default: element_param = "size='20' maxlength='20'"; break; } var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" ||this.str_namespace == "display.AddNew.form") && element_disabled != "1") { element_param += " style=\"border-color:red\""; required = true; } } var str_display_name = this.str_display_name; str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); _display_content += ""; _display_content = _display_content.ReplaceAll("%name%", element_name); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content += str_TAIL; if (required) { _display_content += this.required_mark; } ; $(str_display_name).innerHTML = _display_content; function getValue(ele_name) { return $j("[name='" + element_name + "']").html(); } function setValue(ele_name, ele_value) { $j("[name='" + element_name + "']").html(ele_value); } // 加入共用控制項 controls.add(element_name, getValue, setValue); } //*************************************************************************************************** this.create_daterange = function (row, element_name, element_param) //*************************************************************************************************** { var dt = this.dt; var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = "" + str_HEAD; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var str_TAIL = dt.getValueByRow(row, "TAIL"); var element_id = element_name + "1" ; var element_id2 = element_name + "2" ; if (element_param == "") { element_param = "size='10' maxlength='10'"; element_param = element_param.ReplaceAll("%len%", "10"); element_param += " onblur=\"if (this.value.length==8) this.value=this.value.substring(0,4)+'/'+this.value.substring(4,6)+'/'+this.value.substring(6,8);\""; var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" ||this.str_namespace == "display.AddNew.form") && element_disabled != "1") { required = true; element_param += " style=\"border-color:red\""; } } str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); _display_content += ""; var year = (new Date()).getFullYear() + 5; var t_func = function () { $j("[id='" + element_id + "']").kendoDatePicker({ format: "yyyy/MM/dd" }); } this.push_function (t_func) var t_func = function () { $j("[id='" + element_id2 + "']").kendoDatePicker({ format: "yyyy/MM/dd" }); } this.push_function (t_func) _display_content2 = _display_content; _display_content = _display_content.ReplaceAll("%name%", element_name + "1"); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content2 = _display_content2.ReplaceAll("%name%", element_name + "2"); _display_content2 = _display_content2.ReplaceAll("%param%", element_param); _display_content = _display_content + "~" + "  " + _display_content2; _display_content += str_TAIL + "" ; if (required) { _display_content += this.required_mark; } ; try { $(str_display_name).innerHTML = _display_content; } catch (e) { alert("Invalid object:" + "display." + element_name); } // 定義取得value的function function getValue(ele_name) { var _element = document.getElementsByName(ele_name+"1"); var _element2 = document.getElementsByName(ele_name+"2"); if (_element.length == 1 && _element2.length == 1) { return (_element[0].value.ReplaceAll("/", "") + "," + _element2[0].value.ReplaceAll("/", "")); } } function setValue(ele_name, ele_value) { if (ele_value == "") ele_value = ","; var values = ele_value.split(","); var _element = document.getElementsByName(ele_name+"1"); var _element2 = document.getElementsByName(ele_name+"2"); if (_element.length == 1 && _element2.length == 1) { _element[0].value = (values[0] == "" ? "" : values[0].toString().substring(0, 4) + "/" + values[0].toString().substring(4, 6) + "/" + values[0].toString().substring(6, 8)); _element2[0].value = (values[1] == "" ? "" : values[1].toString().substring(0, 4) + "/" + values[1].toString().substring(4, 6) + "/" + values[1].toString().substring(6, 8)); } } // 加入共用控制項 controls.add(element_name, getValue, setValue); } //*************************************************************************************************** this.create_time = function (row, element_name, element_param, str_url, str_element_list, schema_dt, detail_row, control_name, _value, _name) //*************************************************************************************************** { if (typeof(schema_dt) == "undefined") { var detail = false var dt = this.dt; } else { var detail = true; var dt = schema_dt; } var str_HEAD = dt.getValueByRow(row, "HEAD"); var _display_content = ""; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var str_LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var str_TAIL = dt.getValueByRow(row, "TAIL"); var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); var len = dt.getValueByRow(row, "LEN"); element_param += " size='%len%' maxlength='%len%' "; if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" ||this.str_namespace == "display.AddNew.form") && element_disabled != "1") { required = true; element_param += " style=\"border-color:red\""; } if (element_disabled == "1") { element_param += " disabled=\"true\""; } str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); _display_content += ""; // ----------------------------------------------------------------------------- _display_content2 = _display_content; _display_content = _display_content.ReplaceAll("%events%", "onkeyup='autoTab(\"" + element_name + "_h\", \"" + element_name + "_m\",\"" + len + "\");'"); _display_content = _display_content.ReplaceAll("%name%", element_name + "_h"); _display_content = _display_content.ReplaceAll("%param%", element_param); _display_content2 = _display_content2.ReplaceAll("%name%", element_name + "_m"); _display_content2 = _display_content2.ReplaceAll("%param%", element_param); _display_content2 = _display_content2.ReplaceAll("%events%", ""); _display_content = _display_content.ReplaceAll("%len%", len); _display_content2 = _display_content2.ReplaceAll("%len%", 2); _display_content = _display_content + " : " + _display_content2; _display_content += str_TAIL; if (required) { _display_content += this.required_mark; } ; try { $(str_display_name).innerHTML = str_HEAD + _display_content; } catch (e) { alert("沒有這個物件可以使用:" + "display." + element_name); } // 定義取得value的function, 由 get_element_value 呼叫 function getValue(ele_name) { var _element = document.getElementsByName(ele_name+"_h"); var _element2 = document.getElementsByName(ele_name+"_m"); if (_element.length == 1 && _element2.length == 1) { if (_element[0].value == "" || _element2[0].value == "") return (""); else return (parseInt(_element[0].value,10) * 60 + parseInt(_element2[0].value,10)); } } function setValue(ele_name, ele_value) { var _element = document.getElementsByName(ele_name+"_h"); var _element2 = document.getElementsByName(ele_name+"_m"); if (_element.length == 1 && _element2.length == 1) { if (ele_value == "") { _element[0].value=""; _element2[0].value=""; } else { _element[0].value = Format(parseInt(ele_value / 60,10), "00"); _element2[0].value = Format(parseInt(ele_value % 60,10), "00"); } } } // 加入共用控制項 controls.add(element_name, getValue, setValue); } //*************************************************************************************************** this.create_iframe = function (row, element_name, element_param) //*************************************************************************************************** { var dt = this.dt; var str_URL = dt.getValueByRow(row, "URL"); var _display_content = ""; var str_NOT_NULL = dt.getValueByRow(row, "NOT_NULL"); var str_NUMERIC = dt.getValueByRow(row, "NUMERIC"); var str_TYPE = dt.getValueByRow(row, "TYPE"); var str_DECIMAL = dt.getValueByRow(row, "DECIMAL"); var LEN = dt.getValueByRow(row, "LEN"); var str_display_name = this.str_display_name; var required = false; var element_disabled = dt.getValueByRow(row, "ELE_DISABLED"); // element_param = "width='%width%' height='%height%'"; //element_param = element_param.ReplaceAll("%width%", LEN[0]); //element_param = element_param.ReplaceAll("%height%", LEN[1]); if (str_NOT_NULL == "1" && (this.str_namespace == "display.Edit.form" ||this.str_namespace == "display.AddNew.form") && element_disabled != "1") { required = true; element_param += " style=\"border-color:red\""; } if (element_disabled == "1") { element_param += " disabled=\"true\""; } str_display_name = str_display_name.ReplaceAll("%namespace%", this.str_namespace); str_display_name = str_display_name.ReplaceAll("%FormName%", this.str_form_name); str_display_name = str_display_name.ReplaceAll("%EleName%", element_name); // _display_content += ""; _display_content = "