/** * @author herong * 多记录组件 */ var CFWGlt = _FW.fCreateClass(); /** * 多记录组件API */ CFWGlt.prototype = { /** * 初始化 * */ fInitialize : function(options) { }, /** * 单击某个glt页面时触发 * @param sTabId(必需) 多记录表的配置ID名称 * @param func(必需) 方法 *
     * 使用举例:
     *    CFW.oGlt.doClick(sTabId, 'myfun');
     *      function myfun(rowIndex,rowData){}
     *   或
	 *     CFW.oGlt.doClick(ListID,CBxgx.oComm.myfun) ;
     * 
*/ doClick: function(sTabId, sFunName){ if(CFW.oValid.fnIsNull(sTabId,"CFW.oGlt.doClick 多记录表的配置ID名称")){ return false; } if(CFW.oValid.fnIsNull(sFunName,"CFW.oGlt.doClick 自定义的函数名")){ return false; } var target = document.getElementById(sTabId); var opts = jQuery.data(target, 'fwdatagrid').options; var fun = window[sFunName]; if (typeof sFunName == 'function') { fun = sFunName; } opts.onClickRow = fun; return true; }, /** * 多记录列表数据显示完毕后调用自定义函数 * @param String sListID(必需) 多记录表的配置ID名称 * @param String sFunName(必需) 自定义的函数名 * @return true、false *
     * 使用举例:
     *     CFW.oGlt.doLoad(ListID,'myfun') ;
     *     function myfun(){}
     *   或
	 *     CFW.oGlt.doLoad(ListID,CBxgx.oComm.myfun) ;
     * 
*/ doLoad : function (sListID, sFunName) { if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.doLoad 多记录表的配置ID名称")){ return false; } if(CFW.oValid.fnIsNull(sFunName,"CFW.oGlt.doLoad 自定义的函数名")){ return false; } var target = eval('document.all.' + sListID); var opts = null; if (jQuery.data(target, 'fwdatagrid') != null) { opts = jQuery.data(target, 'fwdatagrid').options; } else { opts = jQuery.data(target, 'fweditgrid').options; } var fun = window[sFunName]; if (typeof sFunName == 'function') { fun = sFunName; } opts.onLoadSuccess = fun; return true; }, /** * 双击多记录列表数据后调用自定义函数 * @param String sListID(必需) 多记录表的配置ID名称 * @param String sFunName(必需) 自定义的函数名,必须有入参 rowIndex,rowData * @return true、false *
     * 使用举例:
     *     CFW.oGlt.doDblClick(ListID,'myfun') ;
     *     function myfun(rowIndex,rowData){}
     *   或
	 *     CFW.oGlt.doDblClick(ListID,CBxgx.oComm.myfun) ;
     * 
*/ doDblClick : function (sListID, sFunName) { if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.doDblClick 多记录表的配置ID名称")){ return false; } if(CFW.oValid.fnIsNull(sFunName,"CFW.oGlt.doDblClick 自定义的函数名")){ return false; } var target = eval('document.all.' + sListID); var opts = jQuery.data(target, 'fwdatagrid').options; var fun = window[sFunName]; if (typeof sFunName == 'function') { fun = sFunName; } opts.onDblClickRow = fun; return true; }, /** * where条件修改后,重新刷新多记录表的数据 * @param String sListID(必需) 多记录表的配置ID名称 * @param String sWhere(必需) 新的查询条件 * @param int pageNum 为刷新列表后显示第几页的数据,-1表示当前页,默认为1,不能输入0或负数 * @return true、false *
     * 使用举例:
     *     第一种应用的方式:
     *         刷新后显示第一页,第三个入参可以不用写
     *         CFW.oGlt.fnGetData('fw_blank_todolist'," OPERID='23' ") ;
     *     第二种应用的方式:
     *         刷新后显示第6页的内容
     *         CFW.oGlt.fnGetData('fw_blank_todolist'," OPERID='23' ",6) ;
     * 
*/ fnGetData : function (sListID, sWhere, iPageNum,successFunName,erroFunName) { iPageNum = iPageNum || 1; if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnGetData 多记录表的配置ID名称")){ return false; } // if(CFW.oValid.fnIsNull(sWhere,"CFW.oGlt.fnGetData 新的查询条件")){ // return false; // } //后台拼接where条件,此处不用传值WHERE if(sWhere==null||sWhere==""){ sWhere=" 1=2 "; } if(!CFW.oValid.fnIsInteger(iPageNum)){ CFW.oWin.fnAlert('页号必须为整数'); return false; } if(iPageNum <= 0&&iPageNum!=-1){ CFW.oWin.fnAlert('页号不能为0或负数'); return false; } var target = eval('document.all.' + sListID); var opts; if (jQuery.data(target, 'fwdatagrid') != null) { opts = jQuery.data(target, 'fwdatagrid').options; var successfun = window[successFunName]; if (typeof successFunName == 'function') { successfun = successFunName; opts.onLoadSuccess = successfun; } var errorfun = window[erroFunName]; if (typeof erroFunName == 'function') { errorfun = erroFunName; opts.onLoadError = errorfun; } opts.ReGetListData(target, sWhere, iPageNum); return true; } if (jQuery.data(target, 'fweditgrid') != null) { opts = jQuery.data(target, 'fweditgrid').options; var successfun = window[successFunName]; if (typeof successFunName == 'function') { successfun = successFunName; opts.onLoadSuccess = successfun; } var errorfun = window[erroFunName]; if (typeof erroFunName == 'function') { errorfun = erroFunName; opts.onLoadError = errorfun; } opts.ReGetListData(target, sWhere, iPageNum); return true; } return true; }, /** * 按当前条件刷新列表 * @param String sListID(必需) 多记录表的配置ID名称 * @return true、false *
     * 使用举例:
     *         CFW.oGlt.fnRefreshData('fw_blank_todolist') ;
     * 
*/ fnRefreshData : function (sListID) { var target = eval('document.all.' + sListID); var opts; if (jQuery.data(target, 'fwdatagrid') != null) { opts = jQuery.data(target, 'fwdatagrid').options; var sWhere=opts.whereCls; var iPageNum=opts.pageNumber; opts.ReGetListData(target, sWhere, iPageNum); return true; } if (jQuery.data(target, 'fweditgrid') != null) { opts = jQuery.data(target, 'fweditgrid').options; var sWhere=opts.whereCls; var iPageNum=opts.pageNumber; opts.ReGetListData(target, sWhere, iPageNum); return true; } return true; }, /** * 获取单记录表关键信息 * @param String sListID(必需) 多记录表的配置ID名称 *
     * 使用举例:
     *         CFW.oGlt.fnGetKeyInfo('fw_blank_todolist') ;
     * 
*/ fnGetKeyInfo : function (sListID) { var target = eval('document.all.' + sListID); var opts; var keyInfo={}; if (jQuery.data(target, 'fwdatagrid') != null) { opts = jQuery.data(target, 'fwdatagrid').options; keyInfo['whereCls']= opts.whereCls; keyInfo['pageNumber']= opts.pageNumber; return JSON.stringify(keyInfo); } return ''; }, /** * 根据关键信息获取重新初始化多记录表 * @param String sListID(必需) 多记录表的配置ID名称 *
     * 使用举例:
     *         CFW.oGlt.fnGetKeyInfo('fw_blank_todolist',document.afrom.AAC001.value) ;
     * 
*/ fnGetBackData : function (sListID,str) { if(CFW.oValid.fnIsNull(str)){ return; } var params={}; try { params =JSON.parse(str);    } catch(err) { return;    } if(!CFW.oValid.fnIsNull(params.whereCls)&&!CFW.oValid.fnIsNull(params.pageNumber)){ CFW.oGlt.fnGetData(sListID,params.whereCls,params.pageNumber) ; } }, /** * 对多记录批量修改删除的勾选校验 * 根据列表中的选择(checkbox,可选多条)要进行某项操作前(如批量删除),调用 * 该函数进行检查,如果没有打勾,提示没有选择,如果有打勾,确认是否要执行某项操作 * 该函数进行检查,如果没有打勾,提示没有选择,如果有打勾,确认是否要执行某项操作 * 2005-09-20 smjk 加入对多记录批量修改删除的勾选校验 * @param theForm(必需) 表单名 * @param String checkboxName(必需) checkbox名 * @param String confirmStr(必需) 操作的中文名称 * @return true、false *
     * 使用举例:
     *     CFW.oGlt.fnCBXConfirm(aform,'checkbox','删除') ;
     * 
*/ fnCBXConfirm : function (theForm, checkboxName, confirmStr) { var flag = false; if(CFW.oValid.fnIsNull(checkboxName,"CFW.oGlt.fnCBXConfirm checkbox名")){ return false; } if(CFW.oValid.fnIsNull(confirmStr,"CFW.oGlt.fnCBXConfirm 操作的中文名称")){ return false; } if (theForm == null || theForm.elements == null) { CFW.oWin.fnAlert("要提交的表单没有数据"); return false; } else { for (i = 0; i < theForm.elements.length; i++) { if (theForm.elements[i].type == "checkbox" || theForm.elements[i].type == "radio") { if (theForm.elements[i].name == checkboxName || theForm.elements[i].name.substr(0, checkboxName.length) == checkboxName) { if (theForm.elements[i].checked) { flag = true; break; } } } } } if (flag) { answer = window.confirm("您确定要" + confirmStr + "所选的记录吗?"); if (answer != "0") { return true; } } else { CFW.oWin.fnAlert("您没有选择要操作的记录!"); } return false; }, /** * 根据列表中的选择(checkbox,可选多条)进行修改操作,调用 * 该函数进行检查,如果勾选项数量为空或者超过一个时,提示出错, * 否则直接将checkbox 的值赋给inputID * @param aform(必需) 表单对象 * @param String checkboxName(必需) 勾选框的名字 * @param inputID(必需) 存取ID的控件对象 * @return true、false *
     * 使用举例:
     *     CFW.oGlt.fnCBXConfirmOnly(document.saveform,'checkbox', editform.saveId)
     *     从saveform多记录表内把checkbox的值赋给saveID
     * 
*/ fnCBXConfirmOnly : function (aform, checkboxName, inputID) { theForm = aform; flag = false; var id; var count = 0; if(CFW.oValid.fnIsNull(checkboxName,"CFW.oGlt.fnCBXConfirmOnly 勾选框的名字")){ return false; } if(CFW.oValid.fnIsNull(inputID,"CFW.oGlt.fnCBXConfirmOnly 存取ID的控件对象")){ return false; } if (theForm == null || theForm.elements == null) { CFW.oWin.fnAlert("要提交的表单没有数据"); return false; } else { for (i = 0; i < theForm.elements.length; i++) { if (theForm.elements[i].name == checkboxName && (theForm.elements[i].type == "checkbox" || theForm.elements[i].type == "radio")) { if (theForm.elements[i].checked) { flag = true; inputID.value = theForm.elements[i].value; count = count + 1; continue; } } } } if (count == 0) { CFW.oWin.fnAlert("您没有选择要操作的记录!"); return false; } if (flag && count > 1) { CFW.oWin.fnAlert("您只能选择一条记录!"); return false; } if (flag && count == 1) { return true; } return false; }, /** * 检查多记录勾选项 * 根据列表中的选择(checkbox,可选多条)进行修改操作,调用 * 该函数进行检查,如果勾选项数量为空或者超过一个时,提示出错, * 否则从多记录表中checkbox 的VALUE中取值例如: value=”001|002” * @param aform(必需) 表单 * @param String checkboxName(必需) 勾选框的名字 * @param editform(必需) 表单 * @param eles(必需) 存取ID的变量(2个以上) * @return true、false *
     * 使用举例:
     *     CFW.oGlt.fnCBXConfirmOne2(document.showform,'checkbox',hiddenform,'AAA100|AAA102') ;
     *     
     *     调用上面的函数后,以下的的AAA100以及AAA102的值为001和002
     *     
* * *
*
*/ fnCBXConfirmOne2 : function (aform, checkboxName, editform, eles) { theForm = aform; if (theForm == null || theForm.elements == null) { CFW.oWin.fnAlert("要提交的表单没有数据"); return false; } if (editform == null || editform.elements == null) { return false; } if(CFW.oValid.fnIsNull(checkboxName,"CFW.oGlt.fnCBXConfirmOnly 勾选框的名字")){ return false; } if(CFW.oValid.fnIsNull(eles,"CFW.oGlt.fnCBXConfirmOnly 存取ID的变量")){ return false; } var count = 0; index = -1; flag = false; for (i = 0; i < theForm.elements.length; i++) { if (theForm.elements[i].name == checkboxName && (theForm.elements[i].type == "checkbox" || theForm.elements[i].type == "radio")) { if (theForm.elements[i].checked) { flag = true; index = i; count = count + 1; continue; } } } if (count == 0) { CFW.oWin.fnAlert("您没有选择要操作的记录!"); return false; } if (flag && count > 1) { CFW.oWin.fnAlert("您只能选择一条记录!"); return false; } if (flag && count == 1) { split_pot = theForm.elements[index].value; split_array = split_pot.split("|"); arr2 = eles.split("|"); if (arr2.length != split_array.length) { CFW.oWin.fnAlert("主键数目不匹配"); CFW.oWin.fnAlert("checkbox:" + split_array.length + ";form.value:" + arr2.length); return false; } for (j = 0; j < arr2.length; j++) { inputs = editform.getElementsByTagName('input'); flag = false; for (k = 0; k < inputs.length; k++) { inputname = inputs[k].name; if (inputname == arr2[j]) { inputs[k].value = split_array[j]; flag = true; break; } } if (!flag) { CFW.oWin.fnAlert("editform中没有找到明为" + arr2[j] + "的元素"); return false; } } return true; } return false; }, /** * 删除多记录表格的一行或多行。 * @param String sListID(必需) 多记录表ID,固定; * @param array 行索引数组 *
     * 使用举例:
     *    调用以下方法删除第1、3、4行
     *    	CFW.oGlt.fnRemoveRows('test_glt1',[1,3,4]);
     *    全部删除:
     *    	CFW.oGlt.fnRemoveRows('test_glt1');
     * 
*/ fnRemoveRows : function (sListID,array) { //必需项校验 if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnRemoveRows 多记录表ID")){ return; } //多记录表ID是否存在校验 var gltObj = eval('document.all.'+sListID); if(CFW.oValid.fnIsNull(gltObj)){ var sError = "CFW.oGlt.fnRemoveRows 多记录表ID("+sListID+")不存在"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if(gltObj.length>1){ var sError = "CFW.oGlt.fnAddRows 多记录表ID("+sListID+")存在重复对象"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if (CFW.oValid.fnIsNull(array)){ $('#'+sListID).fwdatagrid('removeRows'); }else{ $('#'+sListID).fwdatagrid('removeRows',array); } }, /** * 调用多记录表绑定事件 * @param String sListID(必需) 多记录表ID,固定; * @param rowData (必需)数据操作对象 * @param sOper (可选)操作类型,当绑定事件为mapper时,此字段必填 * @param callback (可选)回调函数 *
     * 使用举例:
     *         CFW.oGlt.fnDoAction('test_glt1',{'GRBH':'dd','XM':'ddded'}) ;
     * 
*/ fnDoAction : function (sListID,rowData,sOper,callback) { //必需项校验 if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnDoAction 多记录表ID")){ return; } //必需项校验 if(CFW.oValid.fnIsNull(rowData,"CFW.oGlt.fnDoAction 数据操作对象")){ return; } var gltObj = eval('document.all.'+sListID ); if(CFW.oValid.fnIsNull(gltObj)){ var sError = "CFW.oGlt.fnDoAction 多记录表ID("+sListID+")不存在"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if(gltObj.length>1){ var sError = "CFW.oGlt.fnDoAction 多记录表ID("+sListID+")存在重复对象"; CFW.oWin.fnAlert(sError); throw new Error(sError); } var sActionType=jQuery.data(gltObj, 'fwdatagrid').options.actionType; var sActionID=jQuery.data(gltObj, 'fwdatagrid').options.actionID; if(!CFW.oValid.fnIsNull(sActionType) && !CFW.oValid.fnIsNull(sActionID)){ if(sActionType=='SERVICE'){ CFW.oAJax.doService(sActionID, rowData, "调用Service ", function(mData) { //调用成功后返回数据 if (typeof (callback) == 'function'){ try{ callback(mData); }catch(ex){ CFW.oWin.fnAlert(ex.message); } } } ); }else if(sActionType=='PROCEDURE'){ CFW.oAJax.doProc(sActionID, rowData, "调用过程 ", function(mData) { //调用成功后返回数据 if (typeof (callback) == 'function'){ try{ callback(mData); }catch(ex){ CFW.oWin.fnAlert(ex.message); } } } ); }else if(sActionType=='MAPPER'){ if(CFW.oValid.fnIsNull(sOper)){ alert('调用mapper的操作类型参数不对,请核实!'); return; } var aMappers=sActionID.split('|'); var sMapperid=''; for (var j=0;j * 使用举例: * 以下函数在多记录表格中增加一行,只有GRGH列和XM数据。 * CFW.oGlt.fnAddRows('test_glt1',{'GRBH':'dd','XM':'ddded'}) ; * */ fnAddRows : function (sListID,rowData) { //必需项校验 if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnAddRows 多记录表ID")){ return; } //必需项校验 if(CFW.oValid.fnIsNull(rowData,"CFW.oGlt.fnAddRows 行数据对象")){ return; } var gltObj = eval('document.all.'+sListID ); if(CFW.oValid.fnIsNull(gltObj)){ var sError = "CFW.oGlt.fnAddRows 多记录表ID("+sListID+")不存在"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if(gltObj.length>1){ var sError = "CFW.oGlt.fnAddRows 多记录表ID("+sListID+")存在重复对象"; CFW.oWin.fnAlert(sError); throw new Error(sError); } return $('#'+sListID).fwdatagrid('addRows',rowData); }, /** * 更新多记录表中的行数据。 * @param sListID(必需) 多记录表ID,固定; * @param rowData 行数据对象,可以不传,不传表示根据多记录表现有数据刷新界面ui。如果配置了第二个参数,那么将用传入的参数替换原有数据。 *
     * 使用举例:
     *     以下函数在刷新本多记录表格中的数据。
     *     	   CFW.oGlt.fnUpdateRows('test_glt1',{'GRBH':'dd','XM':'ddded'}) ;
     * 
*/ fnUpdateRows : function (sListID,rowData) { //必需项校验 if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnUpdateRows 多记录表ID")){ return; } //多记录表ID是否存在校验 var gltObj = eval('document.all.'+sListID ); if(CFW.oValid.fnIsNull(gltObj)){ var sError = "CFW.oGlt.fnUpdateRows 多记录表ID("+sListID+")不存在"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if(gltObj.length>1){ var sError = "CFW.oGlt.fnUpdateRows 多记录表ID("+sListID+")存在重复对象"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if(CFW.oValid.fnIsNull(rowData)){//行数据对象 为空时,则不传入此参数 $('#'+sListID).fwdatagrid('updateRows'); }else{ $('#'+sListID).fwdatagrid('updateRows',rowData); } }, /** * 获取多记录表格的数据集对象。 * @param String sListID(必需) 多记录表ID,固定; * @return 数据集对象。 *
     * 使用举例:
     *     以下方法打印出多记录表格的数据集
     *     	   var rowsData = CFW.oGlt.fnGetRows('test_glt1') ;
     *         CFW.oWin.fnAlert(JSON.stringify(rowsData)) ;
     * 
*/ fnGetRows : function (sListID) { //必需项校验 if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnGetRows 多记录表ID")){ return; } //多记录表ID是否存在校验 var gltObj = eval('document.all.'+sListID ); if(CFW.oValid.fnIsNull(gltObj)){ var sError = "CFW.oGlt.fnGetRows 多记录表ID("+sListID+")不存在"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if(gltObj.length>1){ var sError = "CFW.oGlt.fnGetRows 多记录表ID("+sListID+")存在重复对象"; CFW.oWin.fnAlert(sError); throw new Error(sError); } return $('#'+sListID).fwdatagrid('getRows'); }, /** * 按条件在多记录表格中查找并返回对应行号 * 一个多记录表格中,每一行记录有一个控件例如 checkbox,radion,超链接等 * @param obj(必需) 多记录表单内配置的对象 * @return iRowNum 第几行 *
     * 使用举例:
     *     
     *          测试
     * function myFun(obj){
     *   var rownum = CFW.oGlt.fnFindByObj(obj);
     * }
     * 
*/ fnFindByObj : function (obj) { var tr = $(obj).parent().parent(); var rownum = tr.attr('fwdatagrid-row-index'); rownum = parseInt(rownum, 10); return rownum; }, /** * 按条件在多记录表格中查找并返回对应行号(快速定位) * 查询多记录表单中符合查询条件的记录所在的行号,从0开始算 * 若查询不到则返回-1 * @param String sListID(必需) 配置表单的ID * @param String query(必需) 查询的入参 例如 XB=1 * @return int 如果sInputs为空,则返回sDefaultValue,若不为空,返回sInputs *
     * 使用举例:
     *     var i = CFW.oGlt.fnFindByWhere('bxgx_cbgx_rydj','JFRYLB=22');
     *     多个查询条件
     *     var i = CFW.oGlt.fnFindByWhere('bxgx_cbgx_rydj','XM=张小小&&XB=9');
     * 
*/ fnFindByWhere : function (sListID, query) { var index = -1; if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnFindByWhere 配置表单的ID")){ return index; } if(CFW.oValid.fnIsNull(query,"CFW.oGlt.fnFindByWhere 查询的入参")){ return index; } var rows = this.fnGetRows(sListID); var array = query.split("&&"); if (rows == null) { CFW.oWin.fnAlert("配置表单不存在!"); return index; } if (query == '' || query == null) { CFW.oWin.fnAlert("查询条件不能为空!"); return index; } for (var i = 0; i < rows.length; i++) { var data = rows[i]; var b1 = false; var b2 = true; for (var j = 0; j < array.length; j++) { var search = array[j].split("="); var col = search[0]; var val = search[1]; b1 = true; if (data[col] != val) { b2 = false; break; } } if (b1 && b2) { index = i; break; } } return index; }, fnUpdateEditGlt : function (sListID) { var obj=document.getElementById(sListID+'_editGt'); if(obj!=null){ //var tt=document.getElementById(sListID+'_editGt').style.display; if(document.getElementById(sListID+'_editGt').style.display!='none'){ var obj=document.getElementsByName('form_'+sListID); var rw=CFW.oGt.fnGetForm(obj); var callbakFun = sListID+'_getEditRows'; if(window[callbakFun]){ try { rw=window[callbakFun](rw); } catch (e) { alert(e.name+","+e.message); } } var rowindex=rw['_fw_rowindex']; $('#'+sListID).fwdatagrid('updateRowsByIndex',rw,rowindex); } } }, fnSetEditGt : function (sListID,rowIndex,rowData) { //var tt=document.getElementById(sListID+'_editGt').style.display; var obj=document.getElementsByName('form_'+sListID); rowData['_fw_rowindex']=rowIndex+1; CFW.oGt.fnClear('form_'+sListID); var callbakFun = sListID+'_getListRows'; if(window[callbakFun]){ try { rowData=window[callbakFun](rowData); } catch (e) { alert(e.name+","+e.message); } } if(rowData!=null&&typeof(rowData)=='boolean'&&!rowData){ return; } CFW.oGt.fnSetForm(obj,rowData); $('#'+sListID).fwdatagrid('setHiddenTrCss',sListID,rowIndex); if(event!=null){ var obj1 = event.srcElement ? event.srcElement:event.target; var field=$(obj1).attr('field'); var formfield=eval('document.form_'+sListID+'.'+field); if(formfield!=null){ CFW.oGt.fnSetFocus(formfield); } } }, fnAddEditGt : function (sListID) { //var tt=document.getElementById(sListID+'_editGt').style.display; var index=CFW.oGlt.fnAddRows(sListID,{}); index=index-1; CFW.oGlt.fnSetEditGt(sListID,index,{}); }, /** * 行选择函数 * 改变选中行的颜色或是单击某行记录的任何地方进行勾选 * 主要是配合 doClick、doDblClick使用 * @param String sListID(必需) 只读多记录表单的配置ID * @param int rowindex(必需) 行序号(从0开始) * @param String type(必需) 应用的类型字符串例如:row=s|input=checkbox * 其中 row 属性表示行的颜色需要改变 * 若 row=n 表示不需要改变行颜色 * 若 row=s 表示单选行只改变选中行的颜色 * 若 row=m 表示只要选中都改变颜色 * input 属性表示选择行后勾选框的勾选上 * 若 input=checkbox 表示多选框 * 若 input=radio 表示单选框 *
     * 使用举例:
     *     1.改变行颜色而且是单选行,若列表有勾选框不自动勾选
     *       var sMark='row=s'
     *       CFW.oGlt.fnSelectedRows('zhcx_grjbzltest3',0,sMark);
     *     2.改变行颜色,若列表有勾选框自动勾选
     *       var sMark='row=s|input=checkbox'
     *       CFW.oGlt.fnSelectedRows('zhcx_grjbzltest3',0,sMark);
     * 
*/ fnSelectedRows : function(sListID,rowindex,type){ if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnSelectedRows 多记录表单的配置ID")){ return ; } if(CFW.oValid.fnIsNull(rowindex,"CFW.oGlt.fnSelectedRows 行序号")){ return ; } if(CFW.oValid.fnIsNull(type,"CFW.oGlt.fnSelectedRows 应用的类型字符串")){ return ; } var grid =$('#'+sListID); var tmp,chk,arry1,arry2,sRow='',sInput=''; var str = type.toLowerCase(); if(str==''||str==null){ str='row=s|input=checkbox'; } arry1 = str.split('|'); for(var i=0;i * 使用举例: * 1.改变行颜色而且是单选行,若列表有勾选框不自动取消勾选 * var sMark='row=s' * CFW.oGlt.fnUndoRowsColor('zhcx_grjbzltest3',0,sMark); * 2.取消选中行颜色,若列表有勾选框全部取消勾选 * var sMark='row=a|input=checkbox' * CFW.oGlt.fnUndoRowsColor('zhcx_grjbzltest3',0,sMark); * */ fnUndoRowsColor : function (sListID, iRowIndex, type) { if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnUndoRowsColor 多记录表单的配置ID")){ return ; } if(CFW.oValid.fnIsNull(iRowIndex,"CFW.oGlt.fnUndoRowsColor 行序号")){ return ; } if(CFW.oValid.fnIsNull(type,"CFW.oGlt.fnUndoRowsColor 应用的类型字符串")){ return ; } var grid = $('#' + sListID); var tmp, chk, arry1, arry2, sRow = '', sInput = ''; var str = type.toLowerCase(); if (str == '' || str == null) { str = 'row=a|input=checkbox'; } arry1 = str.split('|'); for (var i = 0; i < arry1.length; i++) { tmp = arry1[i]; arry2 = tmp.split('='); if (arry2[0] == 'row') { sRow = arry2[1]; } if (arry2[0] == 'input') { sInput = arry2[1]; } } //全部去掉选择行的颜色 if (sRow == 'a' || sRow == 'm') { $('.fwdatagrid-view tbody tr[class*=fwdatagrid-row-selected]', grid).each(function () { $(this).removeClass('fwdatagrid-row-selected'); if (sInput != '') { $('[type="' + sInput + '"]', $(this)).attr("checked", false); } }); } //只去掉指定选择行的颜色 if (sRow == 's') { $('.fwdatagrid-view tbody tr[fwdatagrid-row-index=' + iRowIndex + ']', grid).each(function () { $(this).removeClass('fwdatagrid-row-selected'); if (sInput != '') { $('[type="' + sInput + '"]', $(this)).attr("checked", false); } }); } //去掉全部勾选 if (sRow == 'a' && sInput != '') { $('[type="' + sInput + '"]', $(this)).attr("checked", false); } }, /** * 获取多记录表指定列的JSON数据 * @param gltId 多记录表配置ID字符串(必需)。 如:'cbgx_grzlgl_l'。 * @param cols 输入列名数组(必需), 如:["GRBH","XB","XM"] * @return 指定列数据JSON对象,如:[{"ROWNUM_":"1","GRBH":"aaabbbccc","XB":"1","_DIC_XB":"女","XM":"姓名1114"}, * {"ROWNUM_":"2","GRBH":"1231","XB":"2","_DIC_XB":"男","XM":"asdf123123123"}] * 使用方法: * var cols = ["XM","XB","CSRQ"]; * var rows = CFW.oGlt.fnGetColData('cbgx_grzlgl_l',cols); */ fnGetColData:function(sListID, cols){ var rst = []; //返回结果值 //多记录表ID是否为空校验 if(CFW.oValid.fnIsNull(sListID,"CFW.oGlt.fnGetColData 多记录表单的配置ID")){ return ; } //多记录表ID是否存在校验 var gltObj = eval('document.all.'+sListID ); if(CFW.oValid.fnIsNull(gltObj)){ var sError = "CFW.oGlt.fnGetRows 多记录表ID("+sListID+")不存在"; CFW.oWin.fnAlert(sError); throw new Error(sError); } if(gltObj.length>1){ var sError = "CFW.oGlt.fnGetRows 多记录表ID("+sListID+")存在重复对象"; CFW.oWin.fnAlert(sError); throw new Error(sError); } //多记录表ID是否为空校验 if(CFW.oValid.fnIsNull(cols,"CFW.oGlt.fnGetColData 列名数组")){ return ; } //获取多记录表元素 var GridData = $.data(gltObj, 'fwdatagrid'); var gridType ='fwdatagrid'; if(GridData==null){ GridData = $.data(gltObj, 'fweditgrid'); } //获取多记录表元素绑定的JSON数据 var rows= $.extend(true,[],GridData.options.data.rows); if(!rows){ return rst; } //按行数设置返回的数组 for(var c=0,len=rows.length;c10){ var theObjTable = document.getElementById(tableID); obj.parentElement.style.width = newWidth; theObjTable.style.width=obj.pareneTdW*1+event.clientX*1-obj.mouseDownX; } var gltId=tableID.substr(0,tableID.length-6); var options=$("#"+gltId).fwdatagrid('getOptions'); if(options.height=='auto'){ var table=$(theObjTable); var view=table.parent(); if(table.width()>view.width()){ view.css({'overflow-y':'hidden','height':table.height()+18}); }else{ view.css({'height':table.height()}); } } //处理拉伸列宽时不进行排序 $(obj).attr('_m',true); }, /** *多记录表单拉伸列宽 */ _fnMouseUpToResize : function(obj){ if($(obj).closest('th')[0]['sortable']!='true'){ return; } obj.releaseCapture(); obj.mouseDownX=0; } , /** *多记录表单拉伸列宽 */ _fnSetTableLayoutToFixed : function(tableID){ var theObjTable = document.getElementById(tableID); if(theObjTable.style.tableLayout=='fixed') return; var headerTr=theObjTable.rows[0]; if(headerTr!=null){ if(headerTr.className=='fweditgrid-header-group'|| headerTr.className=='fwdatagrid-header-group'){ return true; } var height = $(headerTr.cells[0]).height(); for(var i=0;i