非常棒的可以下拉的textarea框,一定不可错过哟,实用
WEBASP.NET
当前位置:
开发者网络
>>
网页特效
>>
技 巧 类
>> 内容
精彩推荐
分类最新特效
分类热点特效
非常棒的可以下拉的textarea框,一定不可错过哟,实用
日期:2005-06-16
人气:
【字体:
大
中
小
】【
收藏此文
】
<HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=gb2312'> <TITLE>非常棒的可以下拉的textarea框,一定不可错过哟,实用</TITLE> </HEAD> <BODY > <style> .BODY { FONT-SIZE: 9pt; } TABLE.datatable { CURSOR: default; BORDER-COLLAPSE: collapse } TABLE.datatable THEAD { FONT-SIZE: 9pt; BACKGROUND-COLOR: #e0e0e0; TEXT-ALIGN: center } TABLE.datatable TBODY { FONT-SIZE: 9pt } TABLE.datatable TFOOT { FONT-SIZE: 9pt; BACKGROUND-COLOR: #e0e0e0; TEXT-ALIGN: center } TABLE.datatable TR.tr1 { BACKGROUND-COLOR: white } TABLE.datatable TR.tr2 { BACKGROUND-COLOR: whitesmoke } TABLE.datatable TR.active_tr { BACKGROUND-COLOR: #e0f0ff; } TABLE.datatable TR.current_tr { BACKGROUND-COLOR: #ffebcd; } TABLE.datatable TD.active_cell { BACKGROUND-COLOR: #ffffe0; } TABLE.dropdowntable { BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; CURSOR: default; BORDER-BOTTOM: gray 1px solid; BORDER-COLLAPSE: collapse } TABLE.dropdowntable THEAD { FONT-WEIGHT: bolder; FONT-SIZE: 9pt; BACKGROUND-COLOR: #d7ebeb; TEXT-ALIGN: center } TABLE.dropdowntable TBODY { FONT-SIZE: 9pt } TABLE.dropdowntable TFOOT { FONT-SIZE: 9pt; BACKGROUND-COLOR: #d7ebeb } TABLE.dropdowntable TR.tr1 { BACKGROUND-COLOR: #f0f9ff } TABLE.dropdowntable TR.tr2 { BACKGROUND-COLOR: #e0f0ff } TABLE.dropdowntable TR.active_tr { BACKGROUND-COLOR: #ffebcd } TABLE.dropdowntable TR.current_tr { BACKGROUND-COLOR: #ffebcd; } .editor { FONT-SIZE: 9pt; BORDER-RIGHT: DarkGray 1px solid; BORDER-TOP: DarkGray 1px solid; SCROLLBAR-FACE-COLOR: window; SCROLLBAR-HIGHLIGHT-COLOR: lightgrey; BORDER-LEFT: DarkGray 1px solid; SCROLLBAR-SHADOW-COLOR: gray; SCROLLBAR-3DLIGHT-COLOR: window; BORDER-BOTTOM: DarkGray 1px solid; SCROLLBAR-DARKSHADOW-COLOR: window; } .active_editor { FONT-SIZE: 9pt; BORDER-RIGHT: #333333 1px solid; BORDER-TOP: #333333 1px solid; SCROLLBAR-FACE-COLOR: #f0f9ff; SCROLLBAR-HIGHLIGHT-COLOR: lightgrey; BORDER-LEFT: #333333 1px solid; SCROLLBAR-SHADOW-COLOR: gray; SCROLLBAR-3DLIGHT-COLOR: #f0f9ff; BORDER-BOTTOM: #333333 1px solid; SCROLLBAR-DARKSHADOW-COLOR: #f0f9ff; BACKGROUND-COLOR: #e0f0ff; } .dockeditor { FONT-SIZE: 9pt; BORDER-RIGHT: #333333 1px solid; BORDER-TOP: #333333 1px solid; SCROLLBAR-FACE-COLOR: window; SCROLLBAR-HIGHLIGHT-COLOR: lightgrey; BORDER-LEFT: #333333 1px solid; SCROLLBAR-SHADOW-COLOR: gray; SCROLLBAR-3DLIGHT-COLOR: window; BORDER-BOTTOM: #333333 1px solid; SCROLLBAR-DARKSHADOW-COLOR: window } .button { BORDER-RIGHT: DarkGray 1px solid; BORDER-TOP: DarkGray 1px solid; FONT-SIZE: 9pt; BORDER-LEFT: DarkGray 1px solid; CURSOR: hand; BORDER-BOTTOM: DarkGray 1px solid; HEIGHT: 22px; BACKGROUND-COLOR: #d4d0c8; } .button_down { BORDER-RIGHT: #dddddd 1px solid; BORDER-TOP: #666666 1px solid; FONT-SIZE: 9pt; BORDER-LEFT: #666666 1px solid; CURSOR: hand; BORDER-BOTTOM: #dddddd 1px solid; HEIGHT: 22px; BACKGROUND-COLOR: #fff1da } TABLE.datapilot { CURSOR: default; } TABLE.datapilot BUTTON { CURSOR: hand; HEIGHT: 20px } .editorholder { } .datascrollbar { CURSOR: hand; } TABLE.tree { BORDER-RIGHT: silver 1px solid; BORDER-TOP: silver 1px solid; BORDER-LEFT: silver 1px solid; CURSOR: default; BORDER-BOTTOM: silver 1px solid; BORDER-COLLAPSE: collapse } TABLE.tree TBODY { FONT-SIZE: 9pt } TABLE.tree TR.tr1 { HEIGHT: 20px; BACKGROUND-COLOR: white } TABLE.tree TR.tr2 { HEIGHT: 20px; BACKGROUND-COLOR: white } TABLE.tree TR.active_tr { HEIGHT: 20px; BACKGROUND-COLOR: #ffebcd } TABLE.tree TR.rightclick_tr { HEIGHT: 20px; BACKGROUND-COLOR: #e0f0ff } TABLE.tree BUTTON { BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; MARGIN-BOTTOM: 2px; BORDER-LEFT: gray 1px solid; WIDTH: 11px; CURSOR: hand; MARGIN-RIGHT: 3px; BORDER-BOTTOM: gray 1px solid; HEIGHT: 15px } TABLE.tree IMG { MARGIN-RIGHT: 2px } .fieldlabel { font-size:9pt; } .datalabel { font-size:9pt; } .tabpage { border-bottom: gray 1px solid; font-size:9pt; cursor: default; } #CalendarTable { BORDER-COLLAPSE: collapse; BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; FONT-SIZE: 9pt; BORDER-LEFT: gray 1px solid; BORDER-BOTTOM: gray 1px solid; CURSOR: default } #CalendarTable .calendar_title { BACKGROUND-COLOR: #e4e4e4; } #CalendarTable .calendar_footer { BACKGROUND-COLOR: #e4e4e4; } #CalendarTable .calendar_week { BACKGROUND-COLOR: #e4e4e4; } #CalendarTable .calendar_data { BACKGROUND-COLOR: #f0f9ff; } .title1 { HEIGHT: 26; FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: #2f2f2f; MARGIN-BOTTOM: 4pt; filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=1, StartColorStr=silver, EndColorStr=white) } .title2 { HEIGHT: 20; BACKGROUND-COLOR: #d4d0c8; BORDER-RIGHT: 1px outset; BORDER-TOP: 1px outset; MARGIN-BOTTOM: 2px; BORDER-LEFT: 1px outset; BORDER-BOTTOM: 1px outset; BORDER-COLLAPSE: collapse; FONT-SIZE: 9pt } .footer1 { BACKGROUND-COLOR: white; MARGIN-BOTTOM: 2pt; } DIV { SCROLLBAR-FACE-COLOR: Gainsboro; SCROLLBAR-HIGHLIGHT-COLOR: gray; SCROLLBAR-SHADOW-COLOR: gray; SCROLLBAR-3DLIGHT-COLOR: Gainsboro; SCROLLBAR-DARKSHADOW-COLOR: Gainsboro; SCROLLBAR-ARROW-COLOR: gray; } </style> <script language="javascript"> <!-- //---- General Setting ---- var xForm_Library_path = "/xform/_xForm_Library/"; var showSubmitCommand = false; var disableSystemContextMenu = false; //---- String Table ---- var constErrType = "错误类型"; var constErrDescription = "错误描述"; var constErrUnknown = "未知错误!"; var constErrDataType = "数据超长或类型不匹配!"; var constErrKeyViolence = "主键或外键约束错误!"; var constErrUnsupportBrowse = "由于您使用的不是 Microsoft Internet Explorer 5.0 或更高版本的浏览器,您将无法获得本页面正确的显示结果!\n本页面中使用的 xForm 技术推荐您使用 Microsoft Internet Explorer 5.5 或更高版本的浏览器,以获得最佳的运行效果。"; var constErrDownLoadFailed = "下载数据失败!"; var constErrUpdateFailed = "保存数据失败!"; var constErrAddDataField = "您不能对已完成初始化的记录集添加字段!"; var constErrEmptyFieldName = "字段名不能为空!"; var constErrCantFindMasterField = "主表字段%s不存在!"; var constErrCantFindDetailField = "从表字段%s不存在!"; var constErrLoadPageOnDetailDataset = "已建立主从绑定的从表记录集不能执行分批下载!"; var constErrLoadPageAfterSort = "已进行客户端排序的记录集不能执行分批下载!"; var constErrFieldValueRequired = "字段[%s]的内容不能为空!"; var constErrKeyFieldRequired = "没有定义主键字段!"; var constErrUpdateFieldRequired = "没有可更新的字段!"; var constErrTypeInt = "您输入的值[%s]不是一个有效的整数!"; var constErrTypeNumber = "您输入的值[%s]不是一个有效的数字!"; var constErrTypeDate = "您输入的值[%s]不是一个有效的日期型值!"; var constErrTypeDateTime = "您输入的值[%s]不是一个有效的日期+时间型值!"; var constErrTypeTime = "您输入的值[%s]不是一个有效的时间型值!"; var constErrOutOfDropDownList = "您输入了无效的值!"; var constErrNoCurrentRecord = "由于记录集没有当前记录而无法修改字段值!"; var constDatasetConfirmCancel = "您确定要撤消对当前记录的修改吗?"; var constDatasetConfirmDelete = "您确定要删除当前记录吗?"; var constDatasetMoveFirst = "移动到第一条记录"; var constDatasetPrevPage = "向前翻页"; var constDatasetMovePrev = "移动到上一条记录"; var constDatasetMoveNext = "移动到下一条记录"; var constDatasetNextPage ="向后翻页"; var constDatasetMoveLast = "移动到最后一条记录"; var constDatasetInsertRecord = "插入一条新记录"; var constDatasetAppendRecord = "添加一条新记录"; var constDatasetDeleteRecord = "删除当前记录"; var constDatasetEditRecord = "修改当前记录"; var constDatasetCancelRecord = "撤销对当前记录的修改"; var constDatasetUpdateRecord = "确认对当前记录的修改"; var constBtnInsertRecord = "插入"; var constBtnAppendRecord = "添加"; var constBtnDeleteRecord = "删除"; var constBtnEditRecord = "修改"; var constBtnCancelRecord = "撤销"; var constBtnUpdateRecord = "确认"; var constJanuary = "一月"; var constFebrary = "二月"; var constMarch = "三月"; var constApril = "四月"; var constMay = "五月"; var constJune = "六月"; var constJuly = "七月"; var constAugust = "八月"; var constSeptember = "九月"; var constOctober= "十月"; var constNovember = "十一月"; var constDecember = "十二月"; var constMonday = "一"; var constTuesday = "二"; var constWednesday = "三"; var constThursday = "四"; var constFriday = "五"; var constSaturday = "六"; var constSunday = "日"; var constLastYear = "上一年"; var constNextYear = "下一年"; var constLastMonth = "上个月"; var constNextMonth = "下个月"; var constToday = "今天"; var constDownLoadingData = "正在下载数据..."; var constCancelSort = "不排序"; //--> //----------------------- // xForm v2.0 // Developer: bao yilei // Nov, 2001 //----------------------- var _rightclick_row=null; function initTree(tree){ for (var i=1; i<=8; i++){ var tmpDataset=tree.getAttribute("dataset"+i); if (typeof(tmpDataset)!="undefined") eval("tree.dataset"+i+"="+tmpDataset+";"); } tree.repeatrow=tree.rows[0].cloneNode(true); tree.deleteRow(0); var nodes=new pArray(); nodes.level=1 nodes.tree=tree; tree.nodes=nodes; } function getTreeNodeStyle(row){ if (row.rowIndex % 2) return "tr1"; else return "tr2"; } function refreshTreeNodeColor(row){ var tree=getTableByRow(row); var selectNode=tree.selectNode; if (selectNode && selectNode.row==row){ row.className="active_tr"; } else{ row.className=getTreeNodeStyle(row); } } function refreshTreeColor(tree, startIndex){ var row; var maxIndex=tree.rows.length-1; for(var i=startIndex; i<=maxIndex; i++){ row=tree.rows[i]; refreshTreeNodeColor(row); } } function refreshTree(tree){ clearChildTreeNodes(tree); expandTreeNode(tree); var nodes=tree.nodes; setActiveTreeNode(tree, nodes.firstUnit); } function refreshTreeNode(node){ var row=node.row; if (row){ for(var i=0; i<row.cells.length; i++) refreshElementValue(row.cells[i]); } } function insertTreeNode(tree, parentNode, label, tag, record, mode, node){ function getSlideNext(node){ if (node){ var result=node.nextUnit; if (!result) result=getSlideNext(node.parentNode); return result; } } var nodes, level; if (parentNode){ if (!parentNode.childNodes) parentNode.childNodes=new pArray(); nodes=parentNode.childNodes; level=parentNode.level; } else{ nodes=tree.nodes; level=0; } if (!nodes) return; var newNode=new Object(); newNode.tree=tree; newNode.level=level+1; newNode.parentNode=parentNode; newNode.label=label; newNode.tag=tag; newNode.record=record; newNode.hasChild=true; newNode.expanded=false; var newRow; if (!parentNode || (parentNode && (parentNode.expanding || parentNode.expanded))){ var _mode, _node; switch (mode){ case "begin":{ _node=nodes.firstUnit; if (_node){ _mode="before"; } else{ _mode="after"; if (node) _node=node.parentNode; } break; } case "before":{ _node=node; _mode="before"; break; } case "after":{ _node=node.nextUnit; if (_node){ _mode="before"; } else{ _node=getSlideNext(node.parentNode); if (_node){ _mode="before"; } else{ _mode="end"; } } break; } default:{ _node=getSlideNext(parentNode); if (_node){ _mode="before"; } else{ _mode="end"; } break; } } if (!_node){ _mode="end"; } else{ var row=_node.row; } newRow=tree.repeatrow.cloneNode(true); switch (_mode){ case "begin":{ tree.tBodies[0].insertAdjacentElement("afterBegin", newRow); break; } case "before":{ row.insertAdjacentElement("beforeBegin", newRow); break; } case "after":{ row.insertAdjacentElement("afterEnd", newRow); break; } default:{ tree.tBodies[0].insertAdjacentElement("beforeEnd", newRow); break; } } newRow.cells[0].node=newNode; newNode.row=newRow; } pArray_insert(nodes, mode, node, newNode); if (parentNode){ parentNode.hasChild=true; refreshTreeNode(parentNode); } if (tree.selectNode==null) setActiveTreeNode(tree, newNode); var eventName=getElementEventName(tree, "onInitTreeNode"); fireUserEvent(eventName, [tree, newNode]); refreshTreeNode(newNode); if (newRow) refreshTreeColor(tree, newRow.rowIndex); return newNode; } function deleteTreeNode(node){ var tree=node.tree; var nodes; if (node.parentNode) nodes=node.parentNode.childNodes; else nodes=tree.nodes; collapseTreeNode(tree, node); pArray_delete(nodes, node); if (node.row){ var rowIndex=node.row.rowIndex; node.row.removeNode(true); refreshTreeColor(tree, rowIndex); node.row=null; } if (node==tree.rightSelectNode) tree.rightSelectNode=null; if (node==tree.selectNode) tree.selectNode=null; if (node.parentNode){ var parentNode=node.parentNode; parentNode.hasChild=(parentNode.childNodes)?parentNode.childNodes.length:false; refreshTreeNode(parentNode); } } function _expandTreeNode(node){ var nodes=node.childNodes; if (!nodes) return; var tree=node.tree; var row=node.row; var _node=nodes.firstUnit; while (_node){ var newRow=tree.repeatrow.cloneNode(true); row.insertAdjacentElement("afterEnd", newRow); newRow.cells[0].node=_node; _node.row=newRow; refreshTreeNode(_node); row=newRow; _node=_node.nextUnit; } _node=nodes.firstUnit; while (_node){ if (_node.expanded) _expandTreeNode(_node); _node=_node.nextUnit; } } function expandTreeNode(tree, node){ try{ if (node){ if (node.expanded) return; var eventName=getElementEventName(tree, "beforeExpandNode"); var event_result=fireUserEvent(eventName, [tree, node]); if (event_result) throw event_result; node.expanding=true; } if (node && node.childNodes){ _expandTreeNode(node); } else{ var level=(node)?node.level:0; eval("var child_dataset=tree.getAttribute(\"dataset"+(level+1)+"\");"); if (child_dataset){ if (level>0){ eval("var dataset=tree.getAttribute(\"dataset"+level+"\");"); if (dataset) dataset.setRecord(node.record); } var record=child_dataset.getFirstRecord(); while (record){ insertTreeNode(tree, node, record[0], null, record); record=record.getNextRecord(); } } } var eventName=getElementEventName(tree, "afterExpandNode"); fireUserEvent(eventName, [tree, node]); if (node){ node.expanded=true; node.hasChild=(node.childNodes)?node.childNodes.length:false; refreshTreeColor(node.tree, node.row.rowIndex); refreshTreeNode(node); } } catch (e){ processException(e); } finally{ if (node) node.expanding=false; } } function _collapseTreeNode(node){ if (!node.childNodes) return; var _node=node.childNodes.firstUnit; while (_node){ if (_node==_node.tree.selectNode){ _node.tree.selectNode=null; setActiveTreeNode(_node.tree, _node.tree.nodes.firstUnit); } _collapseTreeNode(_node); if (_node.row) _node.row.removeNode(true); _node=_node.nextUnit; } } function collapseTreeNode(tree, node){ try{ if (!node) return; if (!node.expanded) return; var eventName=getElementEventName(tree, "beforeCollapseNode"); var event_result=fireUserEvent(eventName, [tree, node]); if (event_result) throw event_result; _collapseTreeNode(node); var eventName=getElementEventName(tree, "beforeCollapseNode"); fireUserEvent(eventName, [tree, node]); node.expanded=false; refreshTreeColor(node.tree, node.row.rowIndex); refreshTreeNode(node); } catch (e){ processException(e); } } function clearChildTreeNodes(tree, node){ function deleteNodes(nodes){ var unit=nodes.firstUnit; var _unit; while (unit){ _unit=unit; unit=unit.nextUnit; deleteTreeNode(_unit); } } if (node){ if (node.childNodes){ deleteNodes(node.childNodes); delete(node.childNodes); } } else{ var nodes=tree.nodes; if (nodes) { deleteNodes(nodes); } } } function TreeNodeClick(tree, node){ if (node && node.expanded){ collapseTreeNode(tree, node); } else{ expandTreeNode(tree, node); } } function setActiveTreeNode(tree, node){ var old_node=tree.selectNode; var old_row, row; if (old_node) old_row=old_node.row; if (node) row=node.row; if (old_row!=row){ tree.selectNode=node; if (old_row) refreshTreeNodeColor(old_row); if (row) refreshTreeNodeColor(row); clearTimeout(tree.timeout_id); _stored_element=[tree, node]; var eventName=getElementEventName(tree, "onNodeChanged"); if (isUserEventDefined(eventName)) tree.timeout_id=setTimeout("fireUserEvent("+eventName+", _stored_element);", 400); } } function resetRightClickRow(){ try{ if (_rightclick_row) refreshTreeNodeColor(_rightclick_row); } catch (e){ //do nothing } finally{ _rightclick_row=null; } } function _tree_expendclick(button){ var cell=button.treenode; var row=getRowByCell(cell); var node=row.cells[0].node; var tree=getTableByRow(row); TreeNodeClick(tree, node); event.cancelBubble=true; } function _tree_onmousedown(row){ if (event.srcElement.id=="_button_expand") return; var tree=getTableByRow(row); var selectNode=tree.selectNode; var node=row.cells[0].node; if (event.button==2){ if (isTrue(tree.getAttribute("rightSelect"))){ tree.rightSelectNode=node; row.className="rightclick_tr"; try{ if (_rightclick_row) refreshTreeNodeColor(_rightclick_row); } catch (e){ //do nothing } _rightclick_row=row; setTimeout("resetRightClickRow()", 1000); } else setActiveTreeNode(tree, node); } else{ setActiveTreeNode(tree, node); } } function processTreeKeyDown(tree, keycode){ function getCurrentNode(){ var node=tree.selectNode; if (!node){ var nodes=tree.nodes; node=nodes.firstUnit; } return node; } switch (keycode){ //Left case 37:{ var node=getCurrentNode(); if (node && node.hasChild && node.expanded){ TreeNodeClick(tree, node); } break; } //Up case 38:{ var node=getCurrentNode(); var rowIndex=node.row.rowIndex; if (rowIndex>0){ setActiveTreeNode(tree, tree.rows[rowIndex-1].cells[0].node); } break; } //Right case 39:{ var node=getCurrentNode(); if (node && node.hasChild && !node.expanded){ TreeNodeClick(tree, node); } break; } //Down case 40:{ var node=getCurrentNode(); var rowIndex=node.row.rowIndex; if (rowIndex+1<tree.rows.length){ setActiveTreeNode(tree, tree.rows[rowIndex+1].cells[0].node); } break; } } } function _tree_onkeydown(tree){ processTreeKeyDown(tree, event.keyCode); } //----------------------- // xForm v2.0 // Developer: bao yilei // Nov, 2001 //----------------------- var _activeElement=null; var _activeEditor=null; var _activeTable=null; var _dropdown_window=null; var _app_id="", _page_id=""; var _document_loading=false; var _stored_element=null; var _array_dataset=new Array(); var _tabpage_list=new Array(); var _skip_activeChanged=false; function getIEVersion(){ var index=window.clientInformation.userAgent.indexOf("MSIE"); if (index<0){ return ""; } else{ return window.clientInformation.userAgent.substring(index+5, index+8); } } function getRowByCell(cell){ return cell.parentElement; } function getTableByCell(cell){ var tbody=getRowByCell(cell).parentElement; if (tbody) return tbody.parentElement; } function getTableByRow(row){ var tbody=row.parentElement; if (tbody) return tbody.parentElement; } function getElementEventName(element, eventName){ var result=""; if (element.attrib!="dockeditor") result=element.id+"_"+eventName; else{ var holder=element.editorHolder; if (holder) result=holder.id+"_"+eventName; } return result; } function isUserEventDefined(function_name){ if (function_name=="") return false; var result; eval("result=(typeof("+function_name+")!=\"undefined\");"); return result; } function fireUserEvent(function_name, param){ var result; var paramstr=""; for(i=0; i<param.length; i++){ if (i==0) paramstr="param["+i+"]"; else paramstr=paramstr+",param["+i+"]"; } if (isUserEventDefined(function_name)) eval("result="+function_name+"("+paramstr+");"); return result; } function processActiveElementChanged(activeElement){ function isChildofTable(obj) { var result=null; var tmpObj; if (obj.getAttribute("attrib")=="dockeditor") tmpObj=obj.editorHolder; else tmpObj=obj; if (tmpObj.getAttribute("attrib")=="tablecell") result=getTableByCell(tmpObj); return result; } function set_activeEditor(editor){ if (_activeEditor!=editor){ if (_activeEditor){ if (needUpdateEditor){ if (_activeEditor.window==window) updateEditorInput(_activeEditor); else _activeEditor.window.updateEditorInput(_activeEditor); } if (typeof(hideDropDownBtn)!="undefined") hideDropDownBtn(); switch (_activeEditor.getAttribute("attrib")){ case "editor":{ _activeEditor.className="editor"; break; } case "dockeditor":{ hideDockEditor(_activeEditor); break; } } _activeEditor.use_keyField=false; refreshElementValue(_activeEditor); } if (editor && !editor.readOnly){ var field=getElementField(editor); if (editor.getAttribute("attrib")=="editor"){ editor.className="active_editor"; if (field){ editor.dataType=field.dataType; editor.editorType=field.editorType; } } if (field) editor.maxLength=(field.size>0)?field.size:2147483647; if (editor.getAttribute("dataType")=="date" || editor.getAttribute("dataType")=="datetime") editor.dropDown_mode="date"; editor.contentEditable=(!isTrue(editor.getAttribute("dropDown_fixed"))); editor.use_keyField=true; refreshElementValue(editor); if (!isTrue(editor.getAttribute("dropDown_fixed")) && !compareText(editor.type, "checkbox")) editor.select(); if (typeof(showDropDownBtn)!="undefined"){ showDropDownBtn(editor); if (isTrue(editor.getAttribute("autoDropDown"))){ showDropDownBox(editor);} } } _activeEditor=editor; } } function processElementBlur(){ var doblur=(activeElement!=_activeEditor); if (_activeElement){ if (typeof(_dropdown_btn)!="undefined" && _dropdown_btn){ doblur=doblur && (_activeElement!=_dropdown_btn) && (activeElement!=_dropdown_btn); } if (typeof(_dropdown_box)!="undefined" && _dropdown_box){ var editor=_dropdown_box.editor; doblur=doblur && (activeElement!=editor) && (!isChild(activeElement, _dropdown_box)); } if (doblur){ if (_activeEditor && _activeEditor.dropDown_visible){ if (typeof(hideDropDownBox)!="undefined") hideDropDownBox(); hideStatusLabel(window); } set_activeEditor(null); } } else{ doblur=false; } if (activeElement==document.body && _skip_activeChanged){ _skip_activeChanged=false; return; } if ((doblur || !_activeEditor)){ var activeTable=isChildofTable(activeElement); if (_activeTable!=activeTable){ if (_activeTable){ _activeTable.focused=false; var row=_activeTable.activeRow; if (row) refreshTableRowStyle(row); var eventName=getElementEventName(_activeTable, "onBlur"); fireUserEvent(eventName, [_activeTable]); } _activeTable=activeTable; if (_activeTable){ _activeTable.focused=true; var row=_activeTable.activeRow; if (row) refreshTableRowStyle(row); var eventName=getElementEventName(_activeTable, "onFocus"); fireUserEvent(eventName, [_activeTable]); } } } } try{ if (window.closed) return; if (activeElement==_activeElement) return; if (activeElement){ processElementBlur(); switch (activeElement.getAttribute("attrib")){ case "tablecell":{ var row=getRowByCell(activeElement); var table=getTableByRow(row); var dataset=getElementDataset(activeElement); table._activeCell=activeElement; table._activeCellIndex=activeElement.cellIndex; if (row.record){ if (dataset.window==window) _dataset_setRecord(dataset, row.record); else dataset.window._dataset_setRecord(dataset, row.record); } setActiveTableCell(row, activeElement.cellIndex); break; } case "editor":; case "dockeditor":{ set_activeEditor(activeElement); break; } } } _activeElement=activeElement; } catch(e){ processException(e); } } function _document_onpropertychange() { if (event.propertyName=="activeElement") processActiveElementChanged(document.activeElement); } function _document_onkeydown(){ switch (event.keyCode){ case 123:{ if (_app_id && _page_id){ showModalDialog(xForm_Library_path+"tool/property.asp?app_id="+_app_id+"&page_id="+_page_id+"&modal_mode=1", document, "dialogHeight: 440px; dialogWidth: 600px; center: Yes; help: No; resizable: Yes; status: No"); } break; } } } function _document_oncontextmenu(){ event.returnValue=(!disableSystemContextMenu); if (typeof(_array_menu)=="undefined") return; for(var i=0; i<_array_menu.length; i++){ var strHolders=_array_menu[i].popupHolders; if (getValidStr(strHolders)!=""){ var arrayHolder=strHolders.split(","); for(var j=0; j<arrayHolder.length; j++){ if (arrayHolder[j]=="") continue; var needPopup; eval("needPopup=isChild(event.srcElement,"+arrayHolder[j]+")"); if (needPopup){ showPopupMenu(_array_menu[i]); event.returnValue=false; return; } } } } } function _control_onkeydown() { function getCell(element){ if (element.getAttribute("attrib")=="tablecell") return element; else if (element.in_table) return element.editorHolder; } function processTab(element){ var obj=null; if (element.in_table){ obj=element.editorHolder; } else{ obj=element; } if (!obj) return; if (event.shiftKey) obj=getPriorTabElement(obj); else obj=getNextTabElement(obj); if (obj){ try{ obj.focus(); event.returnValue=false; } catch(e){ event.returnValue=true; } } } element=event.srcElement; if (isDropdownBoxVisible()){ if (_dropdown_window) _dropdown_window.processDropDownKeyDown(event.keyCode); event.returnValue=true; } else{ var rowindex, colindex; switch (event.keyCode) { //Tab case 9:{ processTab(element); break; } //Enter case 13:{ if (!compareText(element.tagName, "textarea") || event.shiftKey || event.ctrlKey || event.altKey){ var cell=getCell(element); if (cell && !event.shiftKey){ var row=getRowByCell(cell); var table=getTableByRow(row); var maxIndex=checkTableCellIndex(table, 9999, 9999); if (row.rowIndex==maxIndex[0] && cell.cellIndex==maxIndex[1] && !isTrue(table.getAttribute("readOnly"))){ var dataset=getElementDataset(element); dataset.insertRecord("end"); dataset.modified=false; setActiveTableCell(table.activeRow, 0); } else processTab(element); } } break; } //ESC case 27:{ if (!element.modified){ var dataset=getElementDataset(element); if (!dataset || dataset.state=="none") break; var cell=getCell(element); if (cell && !isTrue(getTableByCell(cell).getAttribute("readOnly"))){ if (isTrue(getTableByCell(cell).getAttribute("confirmCancel"))){ if (confirm(constDatasetConfirmCancel)){ dataset.cancelRecord(); } } else{ dataset.cancelRecord(); } } } else{ setElementValue(element, element.old_value); } event.returnValue=false; break; } //Left case 37:{ var cell=getCell(element); if (cell){ if ((event.ctrlKey) || (event.altKey)){ var table=getTableByCell(cell); var rowIndex=getRowByCell(cell).rowIndex; var cellIndex=cell.cellIndex; cellIndex--; setFocusTableCell(table, rowIndex, cellIndex); event.returnValue=false; } } break; } //Up case 38:{ var cell=getCell(element); if (cell){ var dataset=getElementDataset(element); if (dataset){ dataset.movePrev(); event.returnValue=false; } } else{ switch (element.getAttribute("dropDown_mode")){ case "staticlist":{ var fieldName=(element.getAttribute("dropDown_mapValue"))?"name":"value"; var tempDataset=getDropDownItems(element); var record=tempDataset.locate(fieldName, element.value); if (record){ tempDataset.setRecord(record); tempDataset.movePrev(); } processDropDownSelected(element, tempDataset.record, true); event.returnValue=false; break; } case "dataset":{ var tempDataset=element.getAttribute("dropDown_dataset"); if (typeof(tempDataset)=="string") tempDataset=getDatasetByID(tempDataset); if (tempDataset) tempDataset.movePrev(); processDropDownSelected(element, tempDataset.record, true); event.returnValue=false; break; } } } break; } //Right case 39:{ var cell=getCell(element); if (cell){ if ((event.ctrlKey) || (event.altKey)){ var table=getTableByCell(cell); var rowIndex=getRowByCell(cell).rowIndex; var cellIndex=cell.cellIndex; cellIndex++; setFocusTableCell(table, rowIndex, cellIndex); event.returnValue=false; } } break; } //Down case 40:{ if (event.altKey){ showDropDownBox(element); } else{ var cell=getCell(element); if (cell){ var table=getTableByCell(cell); var dataset=getElementDataset(element); if (dataset){ dataset.moveNext(); if (dataset.eof && !isTrue(table.getAttribute("readOnly")) && !isTrue(dataset.readOnly)){ dataset.insertRecord("end"); dataset.modified=false; } event.returnValue=false; } } else{ switch (element.getAttribute("dropDown_mode")){ case "staticlist":{ var fieldName=(element.getAttribute("dropDown_mapValue"))?"name":"value"; var tempDataset=getDropDownItems(element); var record=tempDataset.locate(fieldName, element.value); if (record){ tempDataset.setRecord(record); tempDataset.moveNext(); } processDropDownSelected(element, tempDataset.record, true); event.returnValue=false; break; } case "dataset":{ var tempDataset=element.getAttribute("dropDown_dataset"); if (typeof(tempDataset)=="string") tempDataset=getDatasetByID(tempDataset); if (tempDataset) tempDataset.moveNext(); processDropDownSelected(element, tempDataset.record, true); event.returnValue=false; break; } } } } break; } //Insert case 45:{ var cell=getCell(element); if (cell && !isTrue(getTableByCell(cell).getAttribute("readOnly"))){ var dataset=getElementDataset(element); if (!isTrue(dataset.readOnly)){ dataset.insertRecord("before"); dataset.modified=false; } } break; } //Delete case 46:{ var cell=getCell(element); if (cell && !isTrue(getTableByCell(cell).getAttribute("readOnly"))){ if (event.ctrlKey){ if (isTrue(getTableByCell(cell).getAttribute("confirmDelete"))){ var dataset=getElementDataset(element); if (!isTrue(dataset.readOnly) && confirm(constDatasetConfirmDelete)){ dataset.deleteRecord(); } } else{ var dataset=getElementDataset(element); dataset.deleteRecord(); } event.returnValue=false; } } break; } //F2 case 113:; //F7 case 118:{ showDropDownBox(element); break; } } } } function getAbsPosition(obj, offsetObj){ var _offsetObj=(offsetObj)?offsetObj:document.body; var x=obj.offsetLeft; var y=obj.offsetTop; var tmpObj=obj.offsetParent; while ((tmpObj!=_offsetObj) && tmpObj){ x+=tmpObj.offsetLeft+tmpObj.clientLeft-tmpObj.scrollLeft; y+=tmpObj.offsetTop+tmpObj.clientTop-tmpObj.scrollTop; tmpObj=tmpObj.offsetParent; } return ([x, y]); } function isChild(obj, parentObj) { var tmpObj=obj; var result=false; if (parentObj) { while (tmpObj) { if (tmpObj==parentObj){ result=true; break; } tmpObj=tmpObj.parentElement; } } return result; } function disableDocument(window){ if (typeof(_over_label)=="undefined"){ document.body.insertAdjacentHTML("beforeEnd", "<div id=_over_label language=javascript"+ " style=\"position: absolute; background-color: black; left:0; top:0; z-index: 9999; filter:alpha(opacity=30)\"></div>"); } document.body._documentDisabled=true; _over_label.style.width=document.body.clientWidth + document.body.scrollLeft; _over_label.style.height=document.body.clientHeight + document.body.scrollTop; _over_label.style.visibility="visible"; } function enableDocument(window){ _over_label.style.visibility="hidden"; document.body._documentDisabled=false; } function isDocumentEnable(){ return (!isTrue(document.body._documentDisabled)); } function initElementDataset(element){ var dataset=element.getAttribute("dataset"); if (dataset) setElementDataset(element, dataset); } function initElement(element){ var initChildren=true; var _attrib=element.getAttribute("attrib"); if (_attrib){ switch (_attrib){ case "fieldlabel":{ if (!element.className) element.className=_attrib; var dataset; var _dataset=element.getAttribute("dataset"); if (typeof(_dataset)=="string"){ dataset=getDatasetByID(_dataset); } else{ dataset=_dataset; } element.dataset=dataset; refreshElementValue(element); break; } case "columnheader":{ if (!element.className) element.className=_attrib; element.noWrap=true; element.onclick=_table_head_onclick; element.onmouseover=_table_head_onmouseover; element.onmouseout=_table_head_onmouseout; refreshElementValue(element); break; } case "columnfooter":{ if (!element.className) element.className=_attrib; refreshElementValue(element); break; } case "datalabel":{ if (!element.className) element.className=_attrib; initElementDataset(element); break; } case "editor":; case "dockeditor":{ if (!element.className) element.className=_attrib; if (getValidStr(element.getAttribute("dropdown_cached"))=="" && getIEVersion()>"5.0") element.dropdown_cached=true; initElementDataset(element); with (element){ if (tagName.toLowerCase()=="input" && compareText(type, "checkbox")){ style.borderColor="window"; onclick=_checkbox_onclick; } language="javascript"; onkeydown=_control_onkeydown; onkeypress=_editor_onkeypress; onpropertychange=_editor_onpropertychange; } break; } case "datatable":{ if (isTrue(element.getAttribute("isDropDownTable"))){ if (!element.className) element.className="dropdowntable"; } else{ if (!element.className) element.className="datatable"; } initElementDataset(element); initDataTable(element, !isTrue(element.getAttribute("skipRebuild"))); element.onkeydown=_control_onkeydown; initChildren=false; break; } case "tablecell":{ if (!element.className) element.className=_attrib; break; } case "datapilot":{ if (!element.className) element.className=_attrib; initElementDataset(element); initDataPilot(element); initChildren=false; break; } case "button":{ if (!element.className) element.className=_attrib; element.hideFocus=true; setButtonDown(element, element.getAttribute("down")) element.onmousedown=_button_onmousedown; element.onmouseover=_button_onmouseover; element.onmouseout=_button_onmouseout; break; } case "tree":{ if (!element.className) element.className=_attrib; initTree(element); initChildren=false; break; } case "tabpage":{ if (!element.className) element.className=_attrib; initTabPage(element); initChildren=false; break; } case "datascrollbar":{ if (!element.className) element.className=_attrib; initElementDataset(element); element.onlosecapture=_scrollbar_change; break; } default:{ if (element.className &&_attrib) element.className=_attrib; break; } } element.window=window; fireUserEvent("document_onInitElement", [element, _attrib]); } return initChildren; } function initElements(element){ if (compareText(element.getAttribute("attrib"), "tabpage")){ _tabpage_list[_tabpage_list.length]=element; } else{ if (!initElement(element)) return; } for (var i=0; i<element.children.length; i++){ initElements(element.children[i]); } } function uninitElement(element){ var _attrib=element.getAttribute("attrib"); switch (_attrib){ case "datalabel":; case "editor":; case "dockeditor":; case "datatable":; case "tablecell":; case "datapilot":; case "datascrollbar":{ if (typeof(setElementDataset)!="undefined") setElementDataset(element, null); break; } } } function uninitElements(element){ for(var i=0; i<_array_dataset.length; i++){ var dataset=_array_dataset[i]; if (dataset.window==window) dataset.setMasterDataset(null); } if (!element) element=document.body; for (var i=0; i<element.children.length; i++){ uninitElements(element.children[i]); } uninitElement(element); } function _window_onunload() { uninitElements(document.body); } function initTabPages(){ for (var i=0; i<_tabpage_list.length; i++){ initElement(_tabpage_list[i]); } } function initDocument(){ if (getIEVersion()<"5.0"){ alert(constErrUnsupportBrowser); return; } _document_loading=true; try{ with (document){ for(var i=0; i<_array_dataset.length; i++){ initDataset(_array_dataset[i]); } if (typeof(_setElementsProperties)!="undefined") _setElementsProperties(); initElements(body); for(var i=0; i<_array_dataset.length; i++){ var dataset=_array_dataset[i]; if (dataset.masterDataset && dataset.masterLinks){ dataset.setMasterDataset(dataset.masterDataset, dataset.masterLinks, dataset.detailSql); } dataset.refreshControls(); } setTimeout("initTabPages()", 0); language="javascript"; onpropertychange=_document_onpropertychange; onkeydown=_document_onkeydown; oncontextmenu=_document_oncontextmenu; } if (!window.onunload) window.onunload=_window_onunload; if (typeof(sizeDockEditor)!="undefined") setInterval("adjustControlsSize();", 300); processActiveElementChanged(document.activeElement); } finally{ _document_loading=false; } } var _ad_box=null; var _ad_interval=50; var _ad_count=_ad_interval; function adjustControlsSize(){ function showAD(){ _ad_count++; if (!_ad_box || _ad_count>_ad_interval){ if (_ad_box) _ad_box.removeNode(true); _ad_box=document.createElement("<A target='_blank' href='#' style='color: blue; font-size: 9pt; position: absolute'></A>"); _ad_box.innerText="www.webasp.net"; document.body.appendChild(_ad_box); _ad_count=0; _ad_interval=45+Math.random()*10; } _ad_box.style.left=document.body.clientWidth+document.body.scrollLeft-_ad_box.offsetWidth-6; _ad_box.style.top=document.body.clientHeight+document.body.scrollTop-_ad_box.offsetHeight-3; } if (typeof(sizeDockEditor)!="undefined"){ sizeDockEditor(); if (typeof(sizeDropDownBtn)!="undefined" && _activeEditor) sizeDropDownBtn(_activeEditor); if (typeof(sizeDropDownBox)!="undefined") sizeDropDownBox(); } showAD(); } function getPriorTabElement(obj){ var i=obj.sourceIndex-1; var elementCount=document.all.length var tmpObj, result=null; while (i>=0){ tmpObj=document.all[i]; if ((tmpObj!=obj && tmpObj.isTextEdit && tmpObj.tabIndex!=-1 && !tmpObj.disabled && !tmpObj.readOnly) || tmpObj.getAttribute("attrib")=="tablecell"){ result=document.all[i]; break; } i--; } return result; } function getNextTabElement(obj){ var i=obj.sourceIndex+1; var elementCount=document.all.length var tmpObj, result=null; while (i<elementCount){ tmpObj=document.all[i]; if ((tmpObj!=obj && tmpObj.isTextEdit && tmpObj.tabIndex!=-1 && !tmpObj.disabled && !tmpObj.readOnly) || tmpObj.getAttribute("attrib")=="tablecell"){ result=document.all[i]; break; } i++; } return result; } function getElementDataset(element){ switch (element.getAttribute("attrib")){ case "tablecell":{ var table=getTableByCell(element); if (table){ return table.getAttribute("dataset"); } break; } case "tablerow":{ var table=getTableByRow(element); if (table){ return table.getAttribute("dataset"); } break; } case "dockeditor":{ var holder=element.editorHolder; if (holder){ return getElementDataset(holder); } break; } default:{ return element.getAttribute("dataset"); break; } } } function getElementField(element){ var dataset=getElementDataset(element); if (!dataset) return; return dataset.getField(element.getAttribute("dataField")); } function getElementValue(element){ var eventName=getElementEventName(element, "onGetValue"); if (isUserEventDefined(eventName)){ var event_result=fireUserEvent(eventName, [element, value]); return event_result; } switch (element.getAttribute("attrib")){ case "editor":; case "dockeditor":{ switch (element.type.toLowerCase()){ case "checkbox":{ return element.checked; break; } default:{ var result; if (compareText(element.getAttribute("dropDown_mode"), "staticlist") && isTrue(element.getAttribute("dropDown_mapValue"))){ var items=getDropDownItems(element); if (items){ var item=items.find(["name"], [element.value]); if (item) result=item.getFieldText("value"); } } else result=element.value; return result; break; } } break; } case "datascrollbar":{ return element.Value; break; } default:{ return element.value; break; } } } function setElementValue(element, value){ function getEditorValue(element, value){ if (compareText(element.getAttribute("dropDown_mode"), "staticlist") && isTrue(element.getAttribute("dropDown_mapValue"))){ element.keyValue=value; var result=""; var items=getDropDownItems(element); if (items){ var item=items.find(["value"], [value]); if (item) result=item.getFieldText("name"); } return result; } else return getValidStr(value); } switch (element.getAttribute("attrib")){ case "fieldlabel":; case "columnfooter":; case "columnheader":{ var eventName=getElementEventName(element, "onSetValue"); if (isUserEventDefined(eventName)){ if (!fireUserEvent(eventName, [element, value])) break; } element.innerHTML=value; break; } case "datalabel":{ var eventName=getElementEventName(element, "onSetValue"); if (isUserEventDefined(eventName)){ if (!fireUserEvent(eventName, [element, value])) break; } element.innerText=value; break; } case "editor":; case "dockeditor":{ var eventName=getElementEventName(element, "onSetValue"); if (isUserEventDefined(eventName)){ if (!fireUserEvent(eventName, [element, value])) break; } switch (element.type.toLowerCase()){ case "checkbox":{ element.checked=isTrue(value); break; } default:{ element.value=getEditorValue(element, value); break; } } break; } case "tablecell":{ var eventName=getElementEventName(element, "onSetValue"); if (isUserEventDefined(eventName)){ if (!fireUserEvent(eventName, [element, value])) break; } var tmpHTML; switch (element.getAttribute("editorType")){ case "checkbox":{ if (isTrue(value)){ tmpHTML="<font face=Marlett size=2>a</font>"; } else{ tmpHTML="<font face=Webdings size=1 color=silver>c</font>"; } element.innerHTML=tmpHTML; break; } default:{ tmpHTML=getEditorValue(element, value); if (tmpHTML=="") tmpHTML=" "; element.innerText=tmpHTML; } } break; } case "treenode":{ var node=element.node; var canceled=false; var eventName=getElementEventName(getTableByCell(element), "onSetValue"); if (isUserEventDefined(eventName)){ canceled=(!fireUserEvent(eventName, [element, value])); } if (!canceled) element.innerHTML=value; var tmpHTML=""; if (node.imageUrl){ if (node.hasChild && node.expanded && node.expandImageUrl) tmpHTML="<img src=\""+node.expandImageUrl+"\" style=\"margin-right: 4px\">"; else tmpHTML="<img src=\""+node.imageUrl+"\" style=\"margin-right: 4px\">"; element.insertAdjacentHTML("afterBegin", tmpHTML); } var record=node.data; var button if (node.hasChild){ var button_img=(node.expanded)?"collapse.gif":"expand.gif"; button=document.createElement("<img id=_button_expand hideFocus=true src=\""+xForm_Library_path+"image/"+button_img+"\" width=11px height=11px"+ " language=javascript onclick=\"return _tree_expendclick(this);\" style=\"cursor: hand; margin-top: 3px; margin-left: 4px; margin-right: 4px\">"); button.treenode=element; element.insertAdjacentElement("afterBegin", button); } else{ element.insertAdjacentHTML("afterBegin", "<img id=_button_expand hideFocus=true src=\""+xForm_Library_path+"image/NoChild.gif\" width=11px height=11px"+ " style=\"cursor: hand; margin-top: 3px; margin-left: 4px; margin-right: 4px\">"); } tmpHTML=""; element.button=button; for(var i=1; i<node.level; i++){ tmpHTML+="????" } element.insertAdjacentHTML("afterBegin", tmpHTML); break; } case "datascrollbar":{ element.Value=value; element.old_value=element.Value; break; } default:{ element.value=value; } } } function refreshElementValue(element){ var dataset; var _attrib=element.getAttribute("attrib"); switch (_attrib){ case "fieldlabel":{ var label=element.getAttribute("dataField"); var field=getElementField(element); if (field){ label=field.label; if (isTrue(field.notNull) && !isTrue(field.readOnly) && !isTrue(field.dataset.readOnly)){ label="<font color=red>*</font>"+label; } } setElementValue(element, label); break; } case "columnheader":; case "columnfooter":{ var label=getValidStr(element.getAttribute("label")); var field=getElementField(element); if (label==""){ if (field){ label=field.label; if (isTrue(field.notNull) && !isTrue(field.readOnly) && !isTrue(field.dataset.readOnly)){ label="<font color=red>*</font>"+label; } } else{ label=getValidStr(element.getAttribute("dataField")); } } setElementValue(element, label); break; } case "tablecell":{ var row=getRowByCell(element); var record=row.record; var dataField=element.getAttribute("dataField"); if (dataField=="select") break; if (record) setElementValue(element, record.getFieldText(dataField)); else setElementValue(element, ""); break; } case "treenode":{ var node=element.node; if (node) setElementValue(element, node.label); else setElementValue(element, ""); break; } case "datascrollbar":{ dataset=getElementDataset(element); if (dataset){ if (dataset.bof){ setElementValue(element, element.Min); } else if (dataset.eof){ setElementValue(element, element.Max); } else{ setElementValue(element, element.Max/2); } element.old_value=getElementValue(element); } break; } default:{ dataset=getElementDataset(element); var value=""; if (dataset){ var fieldName; if (element.use_keyField && element.getAttribute("keyField")){ fieldName=element.getAttribute("keyField"); if (fieldName && dataset.getField(fieldName)) value=dataset.getFieldText(fieldName); else if (element.keyValue) value=element.keyValue; } else{ fieldName=element.getAttribute("dataField"); if (fieldName) value=dataset.getFieldText(fieldName); } setElementValue(element, value); } element.old_value=getElementValue(element); element.modified=false; break; } } } function refreshButtonColor(button){ if (isTrue(button.getAttribute("down"))){ button.className="button_down"; button.style.backgroundColor="#fff1da"; } else{ button.className="button"; button.style.backgroundColor="#d4d0c8"; } } function setButtonDown(button, down){ button.down=isTrue(down); refreshButtonColor(button); } function _button_onmousedown(){ var button=event.srcElement; var menu=button.getAttribute("menu"); if (typeof(menu)=="string" && menu!=""){ eval("menu="+menu); button.menu=menu; } if (menu){ showPopupMenu(menu, button); } } function _button_onmouseover(){ try{ var button=event.srcElement; if (button.disabled) return; button.style.backgroundColor="white"; if (_menu_frame){ var old_button=_menu_frame.button; if (old_button){ var menu=button.getAttribute("menu"); if (typeof(menu)=="string"){ eval("menu="+menu); button.menu=menu; } if (button==old_button){ clearTimeout(_menu_frame.timeout_id); } else if (menu){ showPopupMenu(menu, button); button.focus(); } } } } catch(e){ //do nothing } } function _button_onmouseout(){ try{ var button=event.srcElement; if (button.disabled) return; refreshButtonColor(button); if (button.menu_opened) hidePopupMenu(); } catch(e){ //do nothing } } function _scrollbar_change(){ var scrollbar=event.srcElement; var dataset=scrollbar.getAttribute("dataset"); var oldValue=scrollbar.old_value; if (scrollbar.Value!=oldValue){ dataset.move(scrollbar.Value-oldValue); refreshElementValue(scrollbar); } } function getDropDownItems(editor){ var items=editor._dropDown_items; if (!items){ initDropDownItems(editor); items=editor._dropDown_items; } return items; } function setDropDownItems(editor, items){ editor.dropDown_items=items; editor._dropDown_items=null; } function _initDropDownItems(itemsStr, mapValue){ if (!itemsStr) return null; var splitStr=";"; var arrayItem=createDataset(); arrayItem.id="_dropDown_items"; arrayItem.readOnly=true; if (mapValue){ var field; field=arrayItem.addField("name"); field=arrayItem.addField("value"); field.visible=false; var tmp=itemsStr.split(splitStr); var index; for (var i=0; i<tmp.length; i++ ){ index=tmp[i].indexOf("="); record=new Array(); record[0]=getDecodeStr(tmp[i].substr(0, index)); record[1]=getDecodeStr(tmp[i].substr(index+1)); pArray_insert(arrayItem, "end", null, record); } } else{ arrayItem.addField("value"); var tmp=itemsStr.split(splitStr); for (var i=0; i<tmp.length; i++ ){ record=new Array(); record[0]=getDecodeStr(tmp[i]); pArray_insert(arrayItem, "end", null, record); } } return arrayItem; } function initDropDownItems(editor){ var dropDown_items=editor.getAttribute("dropDown_items"); if (!dropDown_items) return; var items=_initDropDownItems(dropDown_items, isTrue(editor.getAttribute("dropDown_mapValue"))); if (!items) return; initDataset(items); editor._dropDown_items=items; } function isDropdownBoxVisible(){ if (typeof(_dropdown_box)!="undefined" && _dropdown_box) return (_dropdown_box.style.visibility=="visible") else return false; } function getStatusLabel(text){ if (typeof(_status_label)=="undefined"){ document.body.insertAdjacentHTML("beforeEnd", "<DIV id=_status_label nowrap style=\"position: absolute; visibility: hidden;"+ " padding-left: 16px; padding-right: 16px; height: 22px; font-size: 9pt; background-color: #e0f0ff; border: 1 solid silver; padding-top:3; z-index: 10000\"></DIV>"); } _status_label.innerHTML=text; } function showStatusLabel(parent_window, text, center){ parent_window.getStatusLabel(text); parent_window._status_label.style.visibility="visible"; if (center){ parent_window._status_label.style.posLeft=(document.body.clientWidth - _status_label.offsetWidth) / 2; parent_window._status_label.style.posTop=(document.body.clientHeight - _status_label.offsetHeight) / 2; parent_window.document.onmousemove=null; } else{ parent_window._document_onmousemove(); parent_window.document.onmousemove=parent_window._document_onmousemove; } } function hideStatusLabel(parent_window){ if (!parent_window.closed && parent_window._status_label){ parent_window.document.onmousemove=null; parent_window._status_label.style.visibility="hidden"; } } function _document_onmousemove(){ locateStatusLabel(event.x + document.body.scrollLeft+1, event.y + document.body.scrollTop+1); } function locateStatusLabel(x, y){ if (x==0 && y==0) return; var posX=document.body.clientWidth + document.body.scrollLeft - _status_label.offsetWidth; var posY=document.body.clientHeight + document.body.scrollTop - _status_label.offsetHeight; posX=(x<posX)?x:posX; posY=(y<posY)?y:posY; _status_label.style.posLeft=posX + 1; _status_label.style.posTop=posY + 1; } function initDataPilot(dataPilot){ if (!dataPilot.getAttribute("pageSize")){ var dataset=getElementDataset(dataPilot); if (dataset) dataPilot.pageSize=dataset.pageSize; } var pageSize=dataPilot.getAttribute("pageSize"); for(i=0; i<dataPilot.children.length; i++){ dataPilot.children[i].removeNode(true); } var buttons_str=getValidStr(dataPilot.getAttribute("buttons")); if (buttons_str=="" || compareText(buttons_str, "default")) buttons_str="movefirst,prevpage,moveprev,movenext,nextpage,movelast,appendrecord,deleterecord,cancelrecord,updaterecord"; else if (compareText(buttons_str, "readonly")) buttons_str="movefirst,prevpage,moveprev,movenext,nextpage,movelast"; buttons_str=buttons_str.toLowerCase(); var buttons=buttons_str.split(","); var row=dataPilot.insertRow(); row.align="center"; for(i=0; i<buttons.length; i++){ btn=document.createElement("<input type=button class=button hideFocus=true style=\"height: 22px\">"); btn.tabIndex=-1; btn.onmouseover=_button_onmouseover; btn.onmouseout=_button_onmouseout; btn.onclick=_datapilot_onclick; btn.dataset=dataPilot.getAttribute("dataset"); btn.buttonType=buttons[i]; btn.datapiolt=dataPilot; switch(buttons[i]){ case "movefirst":{ btn.style.fontFamily="Webdings"; btn.value="9"; btn.title=constDatasetMoveFirst; btn.style.width=30; break; } case "prevpage":{ btn.style.fontFamily="Webdings"; btn.value="7"; btn.title=constDatasetPrevPage; btn.style.width=30; break; } case "moveprev":{ btn.style.fontFamily="Webdings"; btn.value="3"; btn.title=constDatasetMovePrev; btn.style.width=30; break; } case "movenext":{ btn.style.fontFamily="Webdings"; btn.value="4"; btn.title=constDatasetMoveNext; btn.style.width=30; break; } case "nextpage":{ btn.style.fontFamily="Webdings"; btn.value="8"; btn.title=constDatasetNextPage; btn.style.width=30; break; } case "movelast":{ btn.style.fontFamily="Webdings"; btn.value=":"; btn.title=constDatasetMoveLast; btn.style.width=30; break; } case "insertrecord":{ btn.value=constBtnInsertRecord; btn.title=constDatasetInsertRecord; btn.style.width=45; break; } case "appendrecord":{ btn.value=constBtnAppendRecord; btn.title=constDatasetAppendRecord; btn.style.width=45; break; } case "deleterecord":{ btn.value=constBtnDeleteRecord; btn.title=constDatasetDeleteRecord; btn.style.width=45; break; } case "editrecord":{ btn.value=constBtnEditRecord; btn.title=constDatasetEditRecord; btn.style.width=45; break; } case "cancelrecord":{ btn.value=constBtnCancelRecord;; btn.title=constDatasetCancelRecord; btn.style.width=45; break; } case "updaterecord":{ btn.value=constBtnUpdateRecord; btn.title=constDatasetUpdateRecord; btn.style.width=45; break; } } btn.id=dataPilot.id+"_"+btn.buttonType; row.insertCell().appendChild(btn); } refreshDataPilot(dataPilot); } function setDataPilotButtons(dataPilot, buttons){ dataPilot.buttons=buttons; initDataPilot(dataPilot); } function refreshDataPilot(dataPilot){ function refreshButton(btn, enable){ btn.disabled=!enable; if (enable){ } else{ btn.style.backgroundColor="#d4d0c8"; } } var dataset=getElementDataset(dataPilot); var row=dataPilot.rows[0]; for(var i=0; i<row.cells.length; i++){ var btn=row.cells[i].children[0]; switch(btn.buttonType){ case "movefirst":; case "moveprev":{ refreshButton(btn, (dataset && !dataset.bof)); break; } case "prevpage":{ refreshButton(btn, (dataset && dataset.record && dataset.record.pageIndex>1)); break; } case "movenext":; case "movelast":{ refreshButton(btn, (dataset && !dataset.eof)); break; } case "nextpage":{ refreshButton(btn, (dataset && dataset.record && dataset.record.pageIndex<dataset.totalPage)); break; } case "insertrecord":; case "appendrecord":{ refreshButton(btn, (dataset && !dataset.readOnly)); break; } case "editrecord":{ refreshButton(btn, (dataset && !(dataset.bof && dataset.eof) && !dataset.readOnly)); break; } case "deleterecord":{ refreshButton(btn, (dataset && !(dataset.bof && dataset.eof) && !dataset.readOnly)); break; } case "cancelrecord":; case "updaterecord":{ refreshButton(btn, (dataset && (dataset.state=="insert" || dataset.state=="modify") && !dataset.readOnly)); break; } } fireUserEvent(getElementEventName(dataPilot, "onRefreshButton"), [dataPilot, btn, btn.buttonType, dataset]); } } function _datapilot_onclick(){ if (event.srcElement.disabled) return; var datapiolt=event.srcElement.datapiolt; var dataset=getElementDataset(datapiolt); var eventName=getElementEventName(datapiolt, "onButtonClick"); var event_result=fireUserEvent(eventName, [datapiolt, event.srcElement, event.srcElement.buttonType, dataset]); if (event_result) return; var pageSize=datapiolt.getAttribute("pageSize"); switch(event.srcElement.buttonType){ case "movefirst":{ dataset.moveFirst(); break; } case "prevpage":{ var pageIndex=(dataset.record)?dataset.record.pageIndex-1:1; dataset.moveToPage(pageIndex); break; } case "moveprev":{ dataset.movePrev(); break; } case "movenext":{ dataset.moveNext(); break; } case "nextpage":{ var pageIndex=(dataset.record)?dataset.record.pageIndex+1:1; dataset.moveToPage(pageIndex); break; } case "movelast":{ dataset.moveLast(); break; } case "insertrecord":{ dataset.insertRecord("before"); break; } case "appendrecord":{ dataset.insertRecord("end"); break; } case "editrecord":{ dataset_setState(dataset, "modify"); break; } case "deleterecord":{ if (isTrue(datapiolt.getAttribute("confirmDelete"))){ if (confirm(constDatasetDeleteRecord)) dataset.deleteRecord(); } else dataset.deleteRecord(); break; } case "cancelrecord":{ if (isTrue(datapiolt.getAttribute("confirmCancel"))){ if (confirm(constDatasetCancelRecord)) dataset.cancelRecord(); } else dataset.cancelRecord(); break; } case "updaterecord":{ dataset.updateRecord(); break; } } } function initTabPage(tabpage){ var tabItems=tabpage.getAttribute("tabItems"); if (!tabItems) return; var tabs=tabItems.split(";"); for(i=0; i<tabpage.children.length; i++){ tabpage.children[i].removeNode(true); } var row=tabpage.insertRow(); var cell=row.insertCell(); cell.firstcell=true; cell.innerHTML="<img src=\""+xForm_Library_path+"image/start_tab.gif\" width=8px height=22px>"; var label, tabcode, index; for(i=0; i<tabs.length; i++){ index=tabs[i].indexOf("="); if (index>=0){ label=tabs[i].substr(0, index); tabcode=tabs[i].substr(index+1); } else{ label=tabs[i]; tabcode=tabs[i]; } cell=row.insertCell(); cell.tab_index=i; cell.tab_code=tabcode; cell.style.backgroundColor="#e5e5e5"; cell.style.borderTop="gray 1px solid"; btn=document.createElement("<button hideFocus=true style=\"border-style: none; font-size: 9pt; cursor: hand\"></button>"); btn.value=label; btn.tabIndex=-1; btn.style.height=15; btn.style.backgroundColor="#e5e5e5"; btn.onclick=_tabpage_onclick; btn.onmouseover=_tabpage_onmouseover; btn.onmouseout=_tabpage_onmouseout; btn.tab=cell; cell.appendChild(btn); cell=row.insertCell(); if (i!=tabs.length-1){ cell.innerHTML="<img src=\""+xForm_Library_path+"image/tab.gif\" width=15px height=22px>"; } else{ cell.lastcell=true; cell.innerHTML="<img src=\""+xForm_Library_path+"image/end_tab.gif\" width=15px height=22px>"; } eval("if (typeof("+tabpage.id+"_"+tabcode+")!=\"undefined\"){ "+ tabpage.id+"_"+tabcode+".style.visibility=\"hidden\";"+ tabpage.id+"_"+tabcode+".style.position=\"absolute\";}"); } cell=row.insertCell(); cell.width="100%"; setActiveTabIndex(tabpage, 0); } function setTabs(tabpage, tabs){ tabpage.tabs=tabs; initTabPage(tabpage); } function _setActiveTab(cell){ try{ var row=getRowByCell(cell); var tabpage=getTableByRow(row); var selectCell=tabpage.selectTab; if (selectCell==cell) return; var oldCode=(selectCell)?selectCell.tab_code:""; var newCode=cell.tab_code; var eventName=getElementEventName(tabpage, "beforeTabChange"); var event_result=fireUserEvent(eventName, [tabpage, oldCode, newCode]); if (event_result) throw event_result; if (selectCell){ var prevCell=row.cells[selectCell.cellIndex-1]; var nextCell=row.cells[selectCell.cellIndex+1]; selectCell.style.backgroundColor="#e5e5e5"; selectCell.firstChild.style.backgroundColor="#e5e5e5"; selectCell.firstChild.style.fontWeight=""; if (prevCell.firstcell) prevCell.firstChild.src=xForm_Library_path+"image/start_tab.gif"; else prevCell.firstChild.src=xForm_Library_path+"image/tab.gif"; if (nextCell.lastcell) nextCell.firstChild.src=xForm_Library_path+"image/end_tab.gif"; else nextCell.firstChild.src=xForm_Library_path+"image/tab.gif"; eval("if (typeof("+tabpage.id+"_"+oldCode+")!=\"undefined\") "+tabpage.id+"_"+oldCode+".style.visibility=\"hidden\""); } var prevCell=row.cells[cell.cellIndex-1]; var nextCell=row.cells[cell.cellIndex+1]; cell.style.backgroundColor="#ffebcd"; cell.firstChild.style.backgroundColor="#ffebcd"; cell.firstChild.style.fontWeight="bold"; if (prevCell.firstcell) prevCell.firstChild.src=xForm_Library_path+"image/active_start_tab.gif"; else prevCell.firstChild.src=xForm_Library_path+"image/active_tab1.gif"; if (nextCell.lastcell) nextCell.firstChild.src=xForm_Library_path+"image/active_end_tab.gif"; else nextCell.firstChild.src=xForm_Library_path+"image/active_tab2.gif"; eval("if (typeof("+tabpage.id+"_"+newCode+")!=\"undefined\") "+tabpage.id+"_"+newCode+".style.visibility=\"\""); tabpage.selectTab=cell; tabpage.selectCode=cell.tab_code; tabpage.selectIndex=cell.tab_index; var eventName=getElementEventName(tabpage, "afterTabChange"); fireUserEvent(eventName, [tabpage, oldCode, newCode]); } catch(e){ processException(e); } } function setActiveTab(table, tabcode){ if (!tabcode) return; for(var i=0; i<table.cells.length; i++){ if (table.cells[i].tab_code==tabcode){ _setActiveTab(table.cells[i]); break; } } } function setActiveTabIndex(table, index){ for(var i=0; i<table.cells.length; i++){ if (table.cells[i].tab_index==index){ _setActiveTab(table.cells[i]); break; } } } function _tabpage_onclick(){ _setActiveTab(event.srcElement.tab); } function _tabpage_onmouseover(){ event.srcElement.style.color="blue"; event.srcElement.style.textDecorationUnderline=true; } function _tabpage_onmouseout(){ event.srcElement.style.color="black"; event.srcElement.style.textDecorationUnderline=false; } //----------------------- // xForm v2.0 // Developer: bao yilei // Nov, 2001 //----------------------- function _execSQL(SQL, connection, pageSize, absolutePage){ try{ if (SQL){ var _url=xForm_Library_path+"getdataset.asp?SQL="+escape(SQL)+"&conn_id="+escape(connection); if (!(pageSize>0)) pageSize=9999; _url+="&pageSize="+pageSize; if (absolutePage) _url+="&absolutePage="+absolutePage; else _url+="&absolutePage=1"; var XMLDoc=new ActiveXObject("MSXML.DOMDocument"); XMLDoc.async=false; XMLDoc.load(_url); var XMLRoot=XMLDoc.documentElement; if (isTrue(XMLRoot.selectSingleNode("SUCCESS").text)){ var result=new Object(); result.field_str=getValidStr(XMLRoot.selectSingleNode("FIELD").text); result.record_str=getValidStr(XMLRoot.selectSingleNode("RECORD").text); delete XMLDoc; return result; } else{ var error_text=XMLRoot.selectSingleNode("ERRORTEXT").text; delete XMLDoc; throw constErrDownLoadFailed+"\n"+constErrDescription+":"+error_text; } } } catch(e){ processException(e); } } function execSQL(SQL, connection, pageSize, absolutePage){ var result=_execSQL(SQL, connection, pageSize, absolutePage); if (result){ if (result.field_str!=""){ var dataset=createDataset("", result.field_str, result.record_str); dataset.pageSize=pageSize; initDataset(dataset); delete result; return dataset; } else{ return true; } } else return false; } function createParameters(){ var parameters=new Array(); parameters.setValue=parameters_setValue; parameters.getValue=parameters_getValue; return parameters; } function parameters_setValue(name, value){ var count=this.length; var founded=false; for (var i=0; i<count; i++){ if (compareText(this[i].name, name)){ founded=true; break; } } if (!founded){ i=count; this[i]=new Object(); } this[i].name=name; this[i].value=value; } function parameters_getValue(name){ var count=this.length; var founded=false; for (var i=0; i<count; i++){ if (compareText(this[i].name, name)){ return this[i].value; break; } } } function execStoredProcedure(commandText, connection, parameters, pageSize, absolutePage){ var dataset=null; try{ if (commandText){ var param_str=""; for(var i=0; i<parameters.length; i++){ param_str += "?m_names="+parameters[i].name+"?m_values="+parameters[i].value; } var _url=xForm_Library_path+"execStoredProc.asp?commandText="+escape(commandText)+"&conn_id="+escape(connection)+param_str; if (!(pageSize>0)) pageSize=9999; _url+="&pageSize="+pageSize; if (absolutePage) _url+="&absolutePage="+absolutePage; else _url+="&absolutePage=1"; var XMLDoc=new ActiveXObject("MSXML.DOMDocument"); XMLDoc.async=false; XMLDoc.load(_url); var XMLRoot=XMLDoc.documentElement; if (isTrue(XMLRoot.selectSingleNode("SUCCESS").text)){ var paramsNode=XMLRoot.selectSingleNode("PARAMS"); var param_names=paramsNode.selectSingleNode("NAME").text; var param_values=paramsNode.selectSingleNode("VALUE").text; if (param_names){ param_names=param_names.split(","); param_values=param_values.split(","); for(var i=0; i<param_names.length; i++){ if (parameters[i]) delete parameters[i]; parameters[i]=new Object(); parameters[i].name=param_names[i]; parameters[i].value=getDecodeStr(param_values[i]); } } if (XMLRoot.selectSingleNode("DATASET")){ var datasetNode=XMLRoot.selectSingleNode("DATASET"); var field_str=datasetNode.selectSingleNode("FIELD").text; var record_str=datasetNode.selectSingleNode("RECORD").text; if (field_str){ dataset=createDataset("", field_str, record_str); dataset.pageSize=pageSize; initDataset(dataset); } } delete XMLDoc; } else{ delete XMLDoc; throw constErrDownLoadFailed+"\n"+constErrDescription+":"+XMLRoot.selectSingleNode("errortext").text; } } return dataset; } catch(e){ processException(e); } } function getDatasetByID(ID){ for(var i=0; i<_array_dataset.length; i++){ if (_array_dataset[i].id==ID) return _array_dataset[i]; } var result; eval("if (typeof("+ID+")!=\"undefined\") result="+ID+";"); return result; } function setElementDataset(element, dataset){ var _dataset; if (typeof(dataset)=="string"){ _dataset=getDatasetByID(dataset); } else{ _dataset=dataset; } var old_dataset=element.getAttribute("dataset"); if (old_dataset){ var array=old_dataset.editors; if (array) pArray_ex_delete(array, element); } if (_dataset){ var array=_dataset.editors; if (!array){ array=new pArray(); _dataset.editors=array; } pArray_ex_insert(array, element); } element.dataset=_dataset; } function _dataset_getField(fields, fieldName){ var field=null; if (typeof(fieldName)=="number"){ field=fields[fieldName]; } else if (typeof(fieldName)=="string"){ var fieldIndex=fields["_index_"+fieldName.toLowerCase()]; if (!isNaN(fieldIndex)) field=fields[fieldIndex]; } return field; } function dataset_getField(fieldName){ var dataset=this; return _dataset_getField(dataset.fields, fieldName); } function appendFromDataString(dataset, recordStr, init){ if (!recordStr) return; var records=recordStr.split(";"); for(var i=0; i<records.length; i++){ var record=records[i].split(","); for(var j=0; j<record.length; j++){ record[j]=getDecodeStr(record[j]); } pArray_insert(dataset, "end", null, record); if (init) initRecord(record, dataset); } } function transferToDataString(dataset){ var result=""; var i=0; var record=dataset.getFirstRecord(); while (record){ if (i!=0) result+=";"; for(var j=0; j<dataset.fields.fieldCount; j++){ if (j!=0) result+=","; result+=getEncodeStr(record.getFieldText(j)); } record=record.getNextRecord(); i++; } return result; } function createDataset(ID, fieldStr, recordStr){ var dataset=new pArray(); dataset.fields=new Array(); dataset.fields.fieldCount=0; dataset.addField=dataset_addField; dataset.sourceType="custom"; dataset.pageSie=9999; dataset.totalPage=1; dataset.absolutePage=1; if (ID){ dataset.id=ID; _array_dataset[_array_dataset.length]=dataset; } if (fieldStr){ var fields=fieldStr.split(","); for(var i=0; i<fields.length; i++){ dataset.addField(fields[i]); } } appendFromDataString(dataset, recordStr); return dataset; } function dataset_addField(name, dataType){ var dataset=this; try{ if (getValidStr(name)=="") throw constErrEmptyFieldName; if (dataset.prepared) throw constErrAddDataField; name=name.toLowerCase(); var field=new Object; var i=dataset.fields.length; dataset.fields["_index_"+name]=i; dataset.fields[i]=field; dataset.fields.fieldCount++; field.index=i; field.dataset=dataset; field.fields=dataset.fields; field.name=name; field.label=name; field.fieldName=name; field.visible=true; field.dataType=dataType; switch (dataType){ case "int":; case "float":{ field.editorType="text"; field.align="right"; field.vAlign="top"; break; } case "longtext":{ field.editorType="textarea"; field.align="left"; field.vAlign="top"; break; } case "bool":{ field.editorType="checkbox"; field.align="middle"; field.vAlign="middle"; break; } case "date":{ field.editorType="text"; field.align="left"; field.vAlign="top"; field.size=10; break; } case "datetime":{ field.editorType="text"; field.align="left"; field.vAlign="top"; field.size=19; break; } case "time":{ field.editorType="text"; field.align="left"; field.vAlign="top"; field.size=8; break; } default:{ field.editorType="text"; field.align="left"; field.vAlign="top"; break; } } return field; } catch(e){ processException(e); } } function initFieldArray(dataset, fields){ var fieldCount=fields.fieldCount; fields.dataset=dataset; for(var i=0; i<fieldCount; i++){ if (dataset.id){ if (fields[i].id && typeof(_element_property)!="undefined"){ var root=_element_property[fields[i].id]; if (root){ var property_count=root.length; for(var j=0; j<property_count; j++) eval("fields[i]."+root[j].property+"=getDecodeStr(root[j].value)"); } } } fields[fieldCount+i]=new Object; fields[fieldCount+i].name="_cur_"+fields[i].name; fields["_index__cur_"+fields[i].name]=fieldCount+i; fields[fieldCount*2+i]=new Object; fields[fieldCount*2+i].name="_old_"+fields[i].name; fields["_index__old_"+fields[i].name]=fieldCount*2+i; fields[i].readOnly=isTrue(fields[i].readOnly); fireDatasetEvent(dataset, "onInitField", [dataset, fields[i]]); } } function initRecord(record, dataset, skipSaveOld){ record.dataset=dataset; record.fields=dataset.fields; record.recordState="none"; record.pageIndex=1; record.visible=true; record.saveOldValue=dataset._saveOldValue; record.getFieldValue=dataset._getFieldValue; record.getFieldText=dataset._getFieldText; record.setFieldValue=dataset._setFieldValue; record.getPrevRecord=dataset._getPrevRecord; record.getNextRecord=dataset._getNextRecord; if (!skipSaveOld) record.saveOldValue(); } function initDataset(dataset){ if (dataset.prepared) return; dataset.disableControlCount=1; dataset.disableEventCount=1; try{ if (dataset.id && typeof(_element_property)!="undefined"){ var root=_element_property[dataset.id]; if (root){ var property_count=root.length; for(var i=0; i<property_count; i++) eval("dataset."+root[i].property+"=getDecodeStr(root[i].value)"); } } dataset.window=window; dataset.bof=true; dataset.eof=true; dataset.state="none"; dataset.readOnly=isTrue(dataset.readOnly); dataset.sortFields=""; dataset.loadedPage=new Array(); if (dataset.absolutePage>0) dataset.loadedPage[dataset.absolutePage-1]=true; dataset._saveOldValue=record_saveOldValue; dataset._getFieldValue=record_getFieldValue; dataset._getFieldText=record_getFieldText; dataset._setFieldValue=record_setFieldValue; dataset._getPrevRecord=record_getPrevRecord; dataset._getNextRecord=record_getNextRecord; dataset.getField=dataset_getField; dataset.getFieldValue=dataset_getFieldValue; dataset.getFieldText=dataset_getFieldText; dataset.setFieldValue=dataset_setFieldValue; dataset.disableControl=dataset_disableControl; dataset.enableControl=dataset_enableControl; dataset.disableEvent=dataset_disableEvent; dataset.enableEvent=dataset_enableEvent; dataset.refreshControls=dataset_refreshControls; dataset.setRecord=dataset_setRecord; dataset.setReadOnly=dataset_setReadOnly; dataset.setFieldReadOnly=dataset_setFieldReadOnly; dataset.getFirstRecord=dataset_getFirstRecord; dataset.getLastRecord=dataset_getLastRecord; dataset.move=dataset_move; dataset.movePrev=dataset_movePrev; dataset.moveNext=dataset_moveNext; dataset.moveFirst=dataset_moveFirst; dataset.moveLast=dataset_moveLast; dataset.find=dataset_find; dataset.locate=dataset_locate; dataset.updateRecord=dataset_updateRecord; dataset.cancelRecord=dataset_cancelRecord; dataset.insertRecord=dataset_insertRecord; dataset.deleteRecord=dataset_deleteRecord; dataset.copyRecord=dataset_copyRecord; dataset.loadpage=dataset_loadpage; dataset.loadDetail=dataset_loadDetail; dataset.isPageLoaded=dataset_isPageLoaded; dataset.moveToPage=dataset_moveToPage; dataset.setMasterDataset=dataset_setMasterDataset; dataset.flushData=dataset_flushData; dataset.clearData=dataset_clearData; dataset.passData=dataset_passData; dataset.sort=dataset_sort; fireDatasetEvent(dataset, "onInitDataset", [dataset]); dataset.setReadOnly(isTrue(dataset.readOnly)); initFieldArray(dataset, dataset.fields); var record=dataset.firstUnit; while (record){ initRecord(record, dataset); record=record.nextUnit; } dataset.moveFirst(); dataset.prepared=true; } finally{ dataset.disableControlCount=0; dataset.disableEventCount=0; } } function _dataset_setMasterDataset(dataset, masterDataset, linkString, detailSql){ if (dataset.masterDataset){ var array=dataset.masterDataset.detailDatasets; if (array) pArray_ex_delete(array, dataset); } if (typeof(masterDataset)=="string") masterDataset=getDatasetByID(masterDataset); dataset.masterDataset=masterDataset; dataset.detailSql=detailSql; if (masterDataset){ var array=masterDataset.detailDatasets; if (!array){ array=new pArray(); masterDataset.detailDatasets=array; } pArray_ex_insert(array, dataset); var links=linkString.split(";"); var field, fieldName; dataset.masterLinks=new Array(); for(var i=0; i<links.length; i++){ index=links[i].indexOf("="); dataset.masterLinks[i]=new Object(); if (index>=0){ fieldName=links[i].substr(0, index); } else{ fieldName=links[i]; } field=masterDataset.getField(fieldName); if (field){ dataset.masterLinks[i].master_field=field.name; dataset.masterLinks[i].master_index=field.index; } else throw constErrCantFindMasterField.replace("%s", fieldName); if (index>=0){ fieldName=links[i].substr(index+1); } else{ fieldName=links[i]; } field=dataset.getField(fieldName); if (field){ dataset.masterLinks[i].detail_field=field.name; dataset.masterLinks[i].detail_index=field.index; } else{alert(dataset.id) throw constErrCantFindDetailField.replace("%s", fieldName); } } delete links; delete dataset.loaded_detail; dataset.loaded_detail=new Array; masterDataset.loadDetail(); } } function dataset_setMasterDataset(masterDataset, linkString, detailSql){ var dataset=this; try{ _dataset_setMasterDataset(dataset, masterDataset, linkString, detailSql); } catch (e){ processException(e); } } function _dataset_loadDetail(dataset){ if (!dataset.record) return; if (dataset.detailDatasets){ var unit=dataset.detailDatasets.firstUnit; while (unit && unit.data){ try{ var detail_dataset=unit.data; var keycode=""; for(var i=0; i<detail_dataset.masterLinks.length; i++){ keycode+=dataset.record[detail_dataset.masterLinks[i].master_index]; } var keycode_founded=false; for(var i=0; i<detail_dataset.loaded_detail.length; i++){ if (detail_dataset.loaded_detail[i]==keycode){ keycode_founded=true; break; } } if (!keycode_founded){ var dataset_inserted=false; var event_result=fireDatasetEvent(detail_dataset, "beforeLoadDetail", [detail_dataset, dataset]); if (event_result) throw event_result; if (detail_dataset.detailSql){ var SQL=detail_dataset.detailSql; for(var i=0; i<detail_dataset.masterLinks.length; i++){ var re="["+detail_dataset.masterLinks[i].master_field+"]"; SQL=SQL.replace(re, dataset.record[detail_dataset.masterLinks[i].master_index]); } var result=_execSQL(SQL, detail_dataset.connection); if (result) appendFromDataString(detail_dataset, result.record_str, true); delete result; } detail_dataset.loaded_detail[detail_dataset.loaded_detail.length]=keycode; } detail_dataset.refreshControls(); detail_dataset.moveFirst(); unit=unit.nextUnit; } catch (e){ processException(e); } } } } function dataset_loadDetail(){ var dataset=this; try{ _dataset_loadDetail(dataset); } catch (e){ processException(e); } } function dataset_isPageLoaded(pageIndex){ var dataset=this; return dataset.loadedPage[pageIndex-1]; } function _dataset_loadpage(dataset, pageIndex){ if (pageIndex<1 || pageIndex>dataset.totalPage || dataset.isPageLoaded(pageIndex)) return; if (dataset.masterDataset) throw constErrLoadPageOnDetailDataset; if (dataset.sortFields) throw constErrLoadPageAfterSort; var result=_execSQL(dataset.sql, dataset.connection, dataset.pageSize, pageIndex); if (result && result.record_str){ var tmpArray=new pArray(); appendFromDataString(tmpArray, result.record_str); var record=tmpArray.lastUnit; while (record){ initRecord(record, dataset); record.pageIndex=pageIndex; record=record.prevUnit; } var inserted=false; var record=dataset.lastUnit; while (record){ if (record.pageIndex<pageIndex){ pArray_insertArray(dataset, "after", record, tmpArray); inserted=true; break; } record=record.prevUnit; } if (!inserted) pArray_insertArray(dataset, "begin", null, tmpArray); delete tmpArray; dataset.loadedPage[pageIndex-1]=true; dataset.refreshControls(); } delete result; } function dataset_loadpage(pageIndex){ try{ var dataset=this; _dataset_loadpage(dataset, pageIndex); } catch (e){ processException(e); } } function _dataset_clearData(dataset){ dataset.disableControl(); try{ if (dataset.loaded_detail) delete dataset.loaded_detail; if (dataset.loadedPage) delete dataset.loadedPage; dataset.loadedPage=new Array(); if (dataset.absolutePage>0) dataset.loadedPage[dataset.absolutePage-1]=true; pArray_clear(dataset); dataset.moveFirst(); } finally{ dataset.enableControl(); dataset.refreshControls(); } } function dataset_clearData(){ try{ var dataset=this; _dataset_clearData(dataset); } catch (e){ processException(e); } } function _dataset_passData(to_dataset, mode, record, from_dataset){ pArray_insertArray(to_dataset, mode, record, from_dataset); } function dataset_passData(mode, record, from_dataset){ var dataset=this; pArray_insertArray(dataset, mode, record, from_dataset); } function freeDataset(dataset){ if (dataset.detailDatasets) pArray_clear(dataset.detailDatasets); if (dataset.editors) pArray_clear(dataset.editors); delete dataset.masterLinks; pArray_clear(dataset.fields); dataset.clearData(); delete dataset; } function _dataset_flushData(dataset, SQL, connection, pageSize, absolutePage){ dataset.disableControl(); try{ if (!SQL) SQL=dataset.sql; if (!connection) connection=dataset.connection; if (typeof(pageSize)=="undefined") pageSize=dataset.pageSize; if (typeof(absolutePage)=="undefined") absolutePage=dataset.absolutePage; dataset.clearData(); dataset.sql=SQL; dataset.connection=connection; dataset.pageSize=pageSize; dataset.absolutePage=absolutePage; var result=_execSQL(SQL, connection, pageSize, absolutePage); if (result){ appendFromDataString(dataset, result.record_str, true); dataset.moveFirst(); } delete result; } finally{ dataset.enableControl(); dataset.refreshControls(); } } function dataset_flushData(SQL, connection, pageSize, absolutePage){ try{ var dataset=this; _dataset_flushData(dataset, SQL, connection, pageSize, absolutePage) } catch (e){ processException(e); } } function dataset_moveToPage(pageIndex){ try{ var dataset=this; if (!dataset.isPageLoaded(pageIndex)) _dataset_loadpage(dataset, pageIndex); var record=dataset.getFirstRecord(); while (record){ if (record.pageIndex>=pageIndex){ _dataset_setRecord(dataset, record); break; } record=record.getNextRecord(); } } catch (e){ processException(e); } } function record_saveOldValue(){ var record=this; var fieldCount=record.fields.fieldCount; for(var i=0; i<fieldCount; i++){ record[fieldCount+i]=record[i]; record[fieldCount*2+i]=record[i]; } } function _dataset_sort(dataset, fields){ function quickSort(_array, _fields, _low, _high){ function compareRecord(record, _mid_data){ if (_fields.length>0){ var value1, value2; for (var i=0; i<_fields.length; i++){ if (_field[i].ascend){ value1=1; value2=-1; } else{ value1=-1; value2=1; } if (record.getFieldValue(_fields[i].index)>_mid_data[i]){ return value1; } else if (record.getFieldValue(_fields[i].index)<_mid_data[i]){ return value2; } } } else{ if (record.recordno>_mid_data[0]){ return 1; } else if (record.recordno<_mid_data[0]){ return -1; } } return 0; } var low=_low; var high=_high; var mid=getInt((low+high)/2); var mid_data=new Array(); if (_fields.length>0){ for (var i=0; i<_fields.length; i++) mid_data[i]=_array[mid].getFieldValue(_fields[i].index); } else{ mid_data[0]=_array[mid].recordno; } do { while (compareRecord(_array[low], mid_data)<0) low++; while (compareRecord(_array[high], mid_data)>0) high--; if (low<=high){ var tmp=_array[low]; _array[low]=_array[high]; _array[high]=tmp; low++; high--; } }while (low<=high) if (high>_low) quickSort(_array, _fields, _low, high); if (_high>low) quickSort(_array, _fields, low, _high); } var _field=new Array(); if (fields){ var fields_array=fields.split(","); for (var i=0; i<fields_array.length; i++){ _field[i]=new Object(); _field[i].ascend=true; var firstchar=fields_array[i].substring(0, 1); var fieldName; if (firstchar=="+" || firstchar=="-"){ if (firstchar=="-") _field[i].ascend=false; fieldName=fields_array[i].substring(1, fields_array[i].length); } else{ fieldName=fields_array[i]; } for (var j=0; j<dataset.fields.fieldCount; j++){ if (compareText(fieldName, dataset.fields[j].name)){ _field[i].index=j; break; } } } } function customSort(_array, _low, _high){ function compareRecord(record1, record2){ var event_name=getElementEventName(dataset, "onCompareRecord"); if (isUserEventDefined(event_name)){ return fireUserEvent(event_name, [record1.dataset, record1, record2]); } } var low=_low; var high=_high; var mid_record=_array[getInt((low+high)/2)]; do { while (compareRecord(_array[low], mid_record)<0) low++; while (compareRecord(_array[high], mid_record)>0) high--; if (low<=high){ var tmp=_array[low]; _array[low]=_array[high]; _array[high]=tmp; low++; high--; } }while (low<=high) if (high>_low) customSort(_array, _low, high); if (_high>low) customSort(_array, low, _high); } var _field=new Array(); if (fields){ if (fields!="#custom"){ var fields_array=fields.split(","); for (var i=0; i<fields_array.length; i++){ _field[i]=new Object(); _field[i].ascend=true; var firstchar=fields_array[i].substring(0, 1); var fieldName; if (firstchar=="+" || firstchar=="-"){ if (firstchar=="-") _field[i].ascend=false; fieldName=fields_array[i].substring(1, fields_array[i].length); } else{ fieldName=fields_array[i]; } for (var j=0; j<dataset.fields.fieldCount; j++){ if (compareText(fieldName, dataset.fields[j].name)){ _field[i].index=j; break; } } } } } if (!dataset.firstUnit) return; var tmp_array=new Array(); try{ var record=dataset.firstUnit; var i=0; while (record){ tmp_array[i++]=record; if (!dataset.sortFields) record.recordno=i; record=record.nextUnit; } dataset.sortFields=fields; if (fields!="#custom"){ quickSort(tmp_array, _field, 0, tmp_array.length-1); } else{ customSort(tmp_array, 0, tmp_array.length-1); } dataset.firstUnit=null; dataset.lastUnit=null; for (var i=0; i<tmp_array.length; i++){ pArray_insert(dataset, "end", null, tmp_array[i]); } dataset.refreshControls(); } finally{ delete tmp_array; for (var i=0; i<_field.length; i++) delete _field[i]; delete _field; } } function dataset_sort(fields){ try{ var dataset=this; _dataset_sort(dataset, fields); } catch (e){ processException(e); } } function dataset_setReadOnly(readOnly){ var dataset=this; dataset.readOnly=readOnly; _broadcastDatasetMsg(_notifyDatasetStateChanged, dataset); } function dataset_setFieldReadOnly(fieldName, readOnly){ var dataset=this; var field=dataset.getField(fieldName); if (field){ field.readOnly=readOnly; _broadcastFieldMsg(_notifyFieldStateChanged, dataset, dataset.record, field); } } function fireDatasetEvent(dataset, eventName, param){ if (dataset.disableEventCount>0) return; var result; result=fireUserEvent(getElementEventName(dataset, eventName), param); return result; } function dataset_isRecordValid(record){ if (!record) return false; else{ var result=(record.recordState!="delete" && record.recordState!="discard" && record.visible); var dataset=record.dataset; var masterDataset=dataset.masterDataset; if (result){ if (masterDataset){ if (!masterDataset.record) return false; for(var i=0; i<dataset.masterLinks.length; i++){ if (masterDataset.record[dataset.masterLinks[i].master_index]!= record[dataset.masterLinks[i].detail_index]){ result=false; break; } } } if (dataset.filtered && !(record==dataset.record && dataset.state!="none")){ var event_name=getElementEventName(dataset, "onFilterRecord"); if (isUserEventDefined(event_name)){ if (!fireUserEvent(event_name, [dataset, record])) result=false; } } } return result; } } function dataset_setBofnEof(dataset, BofValue, EofValue){ if (dataset.bof!=BofValue || dataset.eof!=EofValue){ dataset.bof=BofValue; dataset.eof=EofValue; _broadcastDatasetMsg(_notifyDatasetStateChanged, dataset, dataset.record); } } function _do_dataset_setRecord(dataset, record){ if (dataset.record!=record){ if (dataset.record){ _dataset_updateRecord(dataset); } if (dataset.detailDatasets){ var detailDataset=dataset.detailDatasets.firstUnit; while (detailDataset){ _dataset_updateRecord(detailDataset); detailDataset=detailDataset.nextUnit; } } var event_result=fireDatasetEvent(dataset, "beforeScroll", [dataset]); if (event_result) throw event_result; dataset.record=record; dataset.modified=false; if (dataset.disableControlCount<1) dataset.loadDetail(); fireDatasetEvent(dataset, "afterScroll", [dataset]); _broadcastDatasetMsg(_notifyDatasetCursorChanged, dataset, record); } } function _dataset_setRecord(dataset, record){ _do_dataset_setRecord(dataset, record); if (record){ dataset_setBofnEof(dataset, false, false); dataset_setBofnEof(dataset, false, false); } } function dataset_setRecord(record){ try{ _dataset_setRecord(this, record); } catch(e){ processException(e); } } function validateDatasetCursor(dataset){ var down_found=false, up_found=false; var record=dataset.record; while (record){ if (dataset_isRecordValid(record)){ _do_dataset_setRecord(dataset, record); up_found=true; break; } record=_record_getPrevRecord(record); } var record=dataset.record; while (record){ if (dataset_isRecordValid(record)){ _do_dataset_setRecord(dataset, record); down_found=true; break; } record=_record_getNextRecord(record); } if (!up_found && !down_found) _do_dataset_setRecord(dataset, null); dataset_setBofnEof(dataset, (!up_found), (!down_found)); } function dataset_setState(dataset, state){ dataset.state=state; _broadcastDatasetMsg(_notifyDatasetStateChanged, dataset, dataset.record); fireDatasetEvent(dataset, "onStateChanged", [dataset]); } function record_getFieldValue(fieldName){ var record=this; var fields=record.fields; var fieldIndex=-1; var result; if (fields){ if (typeof(fieldName)=="number"){ fieldIndex=fieldName; } else if (typeof(fieldName)=="string"){ fieldIndex=fields["_index_"+fieldName.toLowerCase()]; } if (!isNaN(fieldIndex) && fieldIndex!=-1){ result=getTypedValue(record[fieldIndex], fields[fieldIndex].dataType); } } return result; } function dataset_getFieldValue(fieldName){ var dataset=this; if (dataset.record) return dataset.record.getFieldValue(fieldName); else return ""; } function record_getFieldText(fieldName){ var record=this, field, result=""; var value=record.getFieldValue(fieldName); var field=record.dataset.getField(fieldName); switch (typeof(value)){ case "number":{ if (!isNaN(value)){ if (field.dataType=="float") return result=formatFloat(value, 2); else return result=value+""; } break; } case "object":{ if (!isNaN(value)){ if (field){ result=formatDateTime(value, field.dataType); } } break; } default:{ result=getValidStr(value); break; } } return result; } function dataset_getFieldText(fieldName){ var dataset=this; if (dataset.record) return dataset.record.getFieldText(fieldName); else return ""; } function _record_setFieldValue(record, fieldName, value){ var dataset=record.dataset; var fields=record.fields; var fieldIndex=-1; if (fields){ if (typeof(fieldName)=="number"){ fieldIndex=fieldName; } else if (typeof(fieldName)=="string"){ fieldIndex=fields["_index_"+fieldName.toLowerCase()]; } if (!isNaN(fieldIndex) && fieldIndex!=-1){ var event_result=fireDatasetEvent(dataset, "beforeChange", [dataset, fields[fieldIndex], value]); if (event_result) throw event_result; switch (fields[fieldIndex].dataType){ case "float":{ record[fieldIndex]=parseFloat(value); break; } case "int":{ if (typeof(value)=="number") record[fieldIndex]=Math.round(value); else record[fieldIndex]=Math.round(parseFloat(value)); break; } case "date":; case "datetime":{ if (typeof(value)=="object") record[fieldIndex]=value; else record[fieldIndex]=new Date(value); break; } case "time":{ if (typeof(value)=="object") record[fieldIndex]=value; else record[fieldIndex]=new Date("1900/1/1 "+value); break; } case "bool":{ record[fieldIndex]=isTrue(value); break; } default:{ record[fieldIndex]=getValidStr(value); break; } } dataset.modified=true; fireDatasetEvent(dataset, "afterChange", [dataset, fields[fieldIndex]]); if (dataset.state=="none") dataset_setState(dataset, "modify"); _broadcastFieldMsg(_notifyFieldDataChanged, dataset, record, fields[fieldIndex]); } } } function record_setFieldValue(fieldName, value){ try{ _record_setFieldValue(this, fieldName, value); } catch(e){ processException(e); } } function _record_getPrevRecord(record){ var _record=record; while (_record){ _record=_record.prevUnit; if (dataset_isRecordValid(_record)) return _record; } } function record_getPrevRecord(){ return _record_getPrevRecord(this); } function _record_getNextRecord(record){ var _record=record; while (_record){ _record=_record.nextUnit; if (dataset_isRecordValid(_record)) return _record; } } function record_getNextRecord(){ return _record_getNextRecord(this); } function dataset_setFieldValue(fieldName, value){ try{ var dataset=this; if (dataset.record) dataset.record.setFieldValue(fieldName, value); else throw constErrNoCurrentRecord; } catch(e){ processException(e); } } function dataset_refreshCursor(dataset){ _broadcastDatasetMsg(_notifyDatasetCursorChanged, dataset, dataset.record); } function dataset_disableControl(){ var dataset=this; dataset.disableControlCount=dataset.disableControlCount+1; } function dataset_enableControl(){ var dataset=this; dataset.disableControlCount=(dataset.disableControlCount>0)?dataset.disableControlCount-1:0; dataset_refreshCursor(dataset); } function dataset_disableEvent(){ var dataset=this; dataset.disableEventCount=dataset.disableEventCount+1; } function dataset_enableEvent(){ var dataset=this; dataset.disableEventCount=(dataset.disableEventCount>0)?dataset.disableEventCount-1:0; } function dataset_refreshControls(){ var dataset=this; _broadcastDatasetMsg(_notifyDatasetRefresh, dataset); } function _dataset_move(dataset, count){ var _record=dataset.record; if (!_record) _record=dataset.getFirstRecord(); if (!_record) return; var record=_record; if (count>0){ var old_pageIndex=record.pageIndex var eof=false; for(var i=0; i<count; i++){ var pageIndex=0; _record=record.getNextRecord(); if (!_record || (_record && _record.pageIndex!=old_pageIndex)){ if (old_pageIndex<dataset.totalPage){ if (!dataset.isPageLoaded(old_pageIndex+1)){ if ((i+dataset.pageSize<count) && (old_pageIndex+1<dataset.totalPage)){ i+=dataset.pageSize-1; _record=record; } else{ _dataset_loadpage(dataset, old_pageIndex+1); _record=record.getNextRecord(); } } } old_pageIndex++; } if (_record){ record=_record; } else{ eof=true; break; } } dataset_setBofnEof(dataset, (!dataset_isRecordValid(dataset.record)), eof); } else{ var old_pageIndex=record.pageIndex var bof=false; for(var i=count; i<0; i++){ var pageIndex=0; _record=record.getPrevRecord(); if (!_record || (_record && _record.pageIndex!=old_pageIndex)){ if (old_pageIndex>1){ if (!dataset.isPageLoaded(old_pageIndex-1)){ if ((i+dataset.pageSize<0) && (old_pageIndex>1)){ i+=dataset.pageSize-1; _record=record; } else{ _dataset_loadpage(dataset, old_pageIndex-1); _record=record.getPrevRecord(); } } } old_pageIndex--; } if (_record){ record=_record; } else{ bof=true; break; } } dataset_setBofnEof(dataset, bof, (!dataset_isRecordValid(dataset.record))); } if (record) _do_dataset_setRecord(dataset, record); } function dataset_move(count){ var dataset=this; try{ _dataset_move(dataset, count); } catch(e){ processException(e); } } function dataset_movePrev(){ var dataset=this; try{ _dataset_move(dataset, -1); } catch(e){ processException(e); } } function dataset_moveNext(){ var dataset=this; try{ _dataset_move(dataset, 1); } catch(e){ processException(e); } } function _dataset_getFirstRecord(dataset){ var record=dataset.firstUnit; if (record && !dataset_isRecordValid(record)) record=record.getNextRecord(); return record; } function dataset_getFirstRecord(){ return _dataset_getFirstRecord(this); } function dataset_moveFirst(){ var dataset=this; try{ if (!dataset.isPageLoaded(1)) _dataset_loadpage(dataset, 1); _do_dataset_setRecord(dataset, dataset.getFirstRecord()); dataset_setBofnEof(dataset, true, (!dataset_isRecordValid(dataset.record))); } catch(e){ processException(e); } } function _dataset_getLastRecord(dataset){ var record=dataset.lastUnit; if (!dataset_isRecordValid(record) && record) record=record.getPrevRecord(); return record; } function dataset_getLastRecord(){ return _dataset_getLastRecord(this); } function dataset_moveLast(){ var dataset=this; try{ if (!dataset.isPageLoaded(dataset.totalPage)) _dataset_loadpage(dataset, dataset.totalPage); _do_dataset_setRecord(dataset, dataset.getLastRecord()); dataset_setBofnEof(dataset, (!dataset_isRecordValid(dataset.record)), true); } catch(e){ processException(e); } } function dataset_find(fieldNames, values, startRecord){ function isMatching(fieldNames, values, record){ var result=true; for (var j=0; j<fieldNames.length && j<values.length; j++){ if (!compareText(record.getFieldText(fieldNames[j]), values[j])){ result=false; break; } } return result; } if (!fieldNames || !values) return false; var dataset=this; if (!dataset.record) return; if (isMatching(fieldNames, values, dataset.record)) return dataset.record; var record=(startRecord)?startRecord:dataset.getFirstRecord(); while (record){ if (isMatching(fieldNames, values, record)) return record; record=record.getNextRecord(); } } function dataset_locate(fieldName, value, startRecord){ function isMatching(fieldName, value, record){ var tmpValue=record.getFieldText(fieldName); return (tmpValue && compareText(tmpValue.substr(0, len), value)); } if (!value) return false; var dataset=this; if (!dataset.record) return; if (isMatching(fieldName, value, dataset.record)) return dataset.record; var len=value.length; var record=(startRecord)?startRecord:dataset.getFirstRecord(); while (record){ if (isMatching(fieldName, value, record)) return record; record=record.getNextRecord(); } } function _dataset_insertRecord(dataset, mode){ _dataset_updateRecord(dataset); var event_result=fireDatasetEvent(dataset, "beforeInsert", [dataset, mode]); if (event_result) throw event_result; var pageIndex=(dataset.record)?dataset.record.pageIndex:1; var newRecord=new Array(); pArray_insert(dataset, mode, dataset.record, newRecord); initRecord(newRecord, dataset); switch (mode){ case "begin":{ newRecord.pageIndex=1; break; } case "end":{ newRecord.pageIndex=dataset.totalPage; break; } default:{ newRecord.pageIndex=pageIndex; break; } } newRecord.recordState="new"; newRecord.recordno=9999; var masterDataset=dataset.masterDataset; if (masterDataset && masterDataset.record){ for(var i=0; i<dataset.masterLinks.length; i++){ newRecord[dataset.masterLinks[i].detail_index]=masterDataset.record[dataset.masterLinks[i].master_index]; } } var fieldCount=dataset.fields.fieldCount; for (var i=0; i<fieldCount; i++){ var defaultValue=getValidStr(dataset.fields[i].defaultValue); if (defaultValue!=""){ if (defaultValue.length>8 && defaultValue.substr(0, 8)=="[script]"){ newRecord[i]=eval("newRecord[i]="+defaultValue.substr(8));} else newRecord[i]=defaultValue; } } dataset_setState(dataset, "insert"); _broadcastDatasetMsg(_notifyDatasetInsert, dataset, dataset.record, [mode, newRecord]); _dataset_setRecord(dataset, newRecord); fireDatasetEvent(dataset, "afterInsert", [dataset, mode]); dataset.modified=true; } function dataset_insertRecord(mode){ try{ _dataset_insertRecord(this, mode); } catch(e){ processException(e); } } function _dataset_deleteRecord(dataset){ if (!dataset.record) return; needUpdateEditor=false; try{ if (dataset.record.recordState=="new" || dataset.record.recordState=="insert"){ var event_result=fireDatasetEvent(dataset, "beforeDelete", [dataset]); if (event_result) throw event_result; dataset.record.recordState="discard"; } else{ var event_result=fireDatasetEvent(dataset, "beforeDelete", [dataset]); if (event_result) throw event_result; dataset.record.recordState="delete"; } dataset.modified=false; fireDatasetEvent(dataset, "afterDelete", [dataset]); dataset_setState(dataset, "none"); _broadcastDatasetMsg(_notifyDatasetDelete, dataset, dataset.record); validateDatasetCursor(dataset); } finally{ needUpdateEditor=true; } } function dataset_deleteRecord(){ try{ _dataset_deleteRecord(this); } catch(e){ processException(e); } } function _dataset_updateRecord(dataset){ if (!dataset.record) return; if (!dataset_isRecordValid(dataset.record)) return; _broadcastDatasetMsg(_notifyDatasetBeforeUpdate, dataset, dataset.record); if (dataset.modified){ var fieldCount=dataset.fields.fieldCount; for (var i=0; i<fieldCount; i++){ if (!isTrue(dataset.fields[i].readOnly) && isTrue(dataset.fields[i].notNull) && dataset.getFieldText(i)==""){ throw constErrFieldValueRequired.replace("%s", dataset.fields[i].label); } } var event_result=fireDatasetEvent(dataset, "beforeUpdate", [dataset]); if (event_result) throw event_result; switch (dataset.record.recordState){ case "none":{ dataset.record.recordState="modify"; break; } case "new":{ dataset.record.recordState="insert"; break; } } for (var i=0; i<fieldCount; i++){ dataset.record[fieldCount+i]=dataset.record[i]; } dataset.modified=false; fireDatasetEvent(dataset, "afterUpdate", [dataset]); dataset_setState(dataset, "none"); } else{ if (dataset.record.recordState=="new"){ dataset.record.recordState="discard"; dataset_setState(dataset, "none"); _broadcastDatasetMsg(_notifyDatasetDelete, dataset, dataset.record); validateDatasetCursor(dataset); } } } function dataset_updateRecord(){ try{ _dataset_updateRecord(this); return true; } catch(e){ processException(e); return false; } } function _dataset_cancelRecord(dataset){ if (!dataset.record) return; needUpdateEditor=false; try{ if (dataset.record.recordState=="new"){ var event_result=fireDatasetEvent(dataset, "beforeCancel", [dataset]); if (event_result) throw event_result; dataset.record.recordState="discard"; fireDatasetEvent(dataset, "afterCancel", [dataset]); dataset_setState(dataset, "none"); _broadcastDatasetMsg(_notifyDatasetDelete, dataset, dataset.record); validateDatasetCursor(dataset); } else if (dataset.modified){ var event_result=fireDatasetEvent(dataset, "beforeCancel", [dataset]); if (event_result) throw event_result; var fieldCount=dataset.fields.fieldCount; for (var i=0; i<fieldCount; i++){ dataset.record[i]=dataset.record[fieldCount+i]; } dataset.modified=false; fireDatasetEvent(dataset, "afterCancel", [dataset]); dataset_setState(dataset, "none"); _broadcastDatasetMsg(_notifyDatasetRefreshRecord, dataset, dataset.record); } } finally{ needUpdateEditor=true; } } function dataset_cancelRecord(){ try{ _dataset_cancelRecord(this); } catch(e){ processException(e); } } function _dataset_copyRecord(dataset, record){ for(var i=0; i<dataset.fields.fieldCount; i++){ var fieldName=dataset.fields[i].name; var value=record.getFieldValue(fieldName); if (typeof(value)!="undefined") dataset.setFieldValue(fieldName, value); } } function dataset_copyRecord(record){ var dataset=this; _dataset_copyRecord(dataset, record); } function _broadcastDatasetMsg(proc, dataset, record, reserved){ if (dataset.disableControlCount>0) return; var pArray=dataset.editors; if (pArray){ var unit=pArray.firstUnit; while (unit && unit.data){ proc(unit.data, dataset, record, reserved); unit=unit.nextUnit; } } } function _broadcastFieldMsg(proc, dataset, record, field, reserved){ if (dataset.disableControlCount>0) return; var pArray=dataset.editors; if (pArray){ var unit=pArray.firstUnit; while (unit && unit.data){ proc(unit.data, dataset, record, field, reserved); unit=unit.nextUnit; } } } /*-----------------------------------------------------------------------------------------------------------------------------------------------------------------*/ function _notifyDatasetCursorChanged(element, dataset, record, reserved){ var _window=element.window; switch (element.getAttribute("attrib")){ case "datatable":{ if (!record) break; var pageSize=element.getAttribute("pageSize"); if (element.tBodies[0].rows.length>=pageSize){ var needRefresh=true; var firstRecord=_window.getTableFirstRecord(element); var lastRecord=_window.getTableLastRecord(element); var _record=firstRecord; while (_record){ if (_record==record){ needRefresh=false; break; } if (_record==lastRecord) break; _record=_record.nextUnit; } if (needRefresh && firstRecord && lastRecord){ if (record==firstRecord.getPrevRecord()){ _window.deleteTableRecord(element.tBodies[0].rows[element.tBodies[0].rows.length-1]); _window.insertTableRecord(element, "begin", null, record); needRefresh=false; } else if (record==lastRecord.getNextRecord()){ _window.deleteTableRecord(element.tBodies[0].rows[0]); _window.insertTableRecord(element, "end", null, record); needRefresh=false; } } if (needRefresh){ var counter=pageSize; var tmpRecord=record; for(var i=0; i<counter; i++){ tmpRecord=tmpRecord.getNextRecord(); if (!tmpRecord) break; } var startRecord=record; tmpRecord=record; counter=pageSize-i-1; for(var i=0; i<counter; i++){ tmpRecord=tmpRecord.getPrevRecord(); if (tmpRecord) startRecord=tmpRecord; else break; } _window.refreshTableData(element, startRecord); } } var row=_window.getTableRowByRecord(element, record); if (row){ _window.setActiveTableRow(row); } break; } case "datalabel":{ _window.refreshElementValue(element); break; } case "editor":; case "dockeditor":{ _window.refreshElementValue(element); element.isUserInput=false; break; } case "datapilot":{ _window.refreshDataPilot(element); break; } } } function _notifyDatasetBeforeUpdate(element, dataset, record, reserved){ var _window=element.window; switch (element.getAttribute("attrib")){ case "dockeditor":{ _window.updateEditorInput(element); break; } } } function _notifyDatasetStateChanged(element, dataset, record, reserved){ var _window=element.window; switch (element.getAttribute("attrib")){ case "editor":; case "dockeditor":{ var readOnly=dataset.readOnly; var field=_window.getElementField(element); if (field) readOnly=(readOnly || field.readOnly); setEditorReadonly(element, (readOnly || element.readOnly)); break; } case "datapilot":{ _window.refreshDataPilot(element); break; } case "datascrollbar":{ _window.refreshElementValue(element); break; } case "datatable":{ if (element.activeRow) _window.refreshTableRowIndicate(element.activeRow); break; } } } function _notifyDatasetInsert(element, dataset, record, reserved){ var _window=element.window; switch (element.getAttribute("attrib")){ case "datatable":{ var row; if (record) row=_window.getTableRowByRecord(element, record); _window.insertTableRecord(element, reserved[0], row, reserved[1]); if (element.tBodies[0].rows.length>element.getAttribute("pageSize")){ var lastRecord=_window.getTableLastRecord(element); if (lastRecord!=reserved[1]){ _window.deleteTableRecord(element.tBodies[0].rows[element.tBodies[0].rows.length-1]); } else{ _window.deleteTableRecord(element.tBodies[0].rows[0]); } } break; } } } function _notifyDatasetDelete(element, dataset, record, reserved){ var _window=element.window; switch (element.getAttribute("attrib")){ case "datatable":{ if (record){ var row=_window.getTableRowByRecord(element, record); if (row){ if (element.tBodies[0].rows.length<=element.getAttribute("pageSize")){ var firstRecord=_window.getTableFirstRecord(element); var lastRecord=_window.getTableLastRecord(element); if (firstRecord){ var _record=lastRecord.getNextRecord(); if (_record){ _window.insertTableRecord(element, "end", row, _record); } else{ var _record=firstRecord.getPrevRecord(); if (_record) _window.insertTableRecord(element, "begin", row, _record);