| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150 |
- /**
- * @author herong
- * 多记录组件
- */
- var CFWGlt = _FW.fCreateClass();
- /**
- * 多记录组件API
- */
- CFWGlt.prototype = {
-
- /**
- * 初始化
- * */
- fInitialize : function(options) {
-
- },
-
- /**
- * 单击某个glt页面时触发
- * @param sTabId(必需) 多记录表的配置ID名称
- * @param func(必需) 方法
- * <pre>
- * 使用举例:
- * CFW.oGlt.doClick(sTabId, 'myfun');
- * function myfun(rowIndex,rowData){}
- * 或
- * CFW.oGlt.doClick(ListID,CBxgx.oComm.myfun) ;
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * CFW.oGlt.doLoad(ListID,'myfun') ;
- * function myfun(){}
- * 或
- * CFW.oGlt.doLoad(ListID,CBxgx.oComm.myfun) ;
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * CFW.oGlt.doDblClick(ListID,'myfun') ;
- * function myfun(rowIndex,rowData){}
- * 或
- * CFW.oGlt.doDblClick(ListID,CBxgx.oComm.myfun) ;
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * 第一种应用的方式:
- * 刷新后显示第一页,第三个入参可以不用写
- * CFW.oGlt.fnGetData('fw_blank_todolist'," OPERID='23' ") ;
- * 第二种应用的方式:
- * 刷新后显示第6页的内容
- * CFW.oGlt.fnGetData('fw_blank_todolist'," OPERID='23' ",6) ;
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * CFW.oGlt.fnRefreshData('fw_blank_todolist') ;
- * </pre>
- */
- 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名称
- * <pre>
- * 使用举例:
- * CFW.oGlt.fnGetKeyInfo('fw_blank_todolist') ;
- * </pre>
- */
- 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名称
- * <pre>
- * 使用举例:
- * CFW.oGlt.fnGetKeyInfo('fw_blank_todolist',document.afrom.AAC001.value) ;
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * CFW.oGlt.fnCBXConfirm(aform,'checkbox','删除') ;
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * CFW.oGlt.fnCBXConfirmOnly(document.saveform,'checkbox', editform.saveId)
- * 从saveform多记录表内把checkbox的值赋给saveID
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * CFW.oGlt.fnCBXConfirmOne2(document.showform,'checkbox',hiddenform,'AAA100|AAA102') ;
- *
- * 调用上面的函数后,以下的的AAA100以及AAA102的值为001和002
- * <form name="hiddenform" >
- * <input type=hidden name=AAA100 value="">
- * <input type=hidden name=AAA102 value="">
- * </form>
- * </pre>
- */
- 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 行索引数组
- * <pre>
- * 使用举例:
- * 调用以下方法删除第1、3、4行
- * CFW.oGlt.fnRemoveRows('test_glt1',[1,3,4]);
- * 全部删除:
- * CFW.oGlt.fnRemoveRows('test_glt1');
- * </pre>
- */
- 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 (可选)回调函数
- * <pre>
- * 使用举例:
- * CFW.oGlt.fnDoAction('test_glt1',{'GRBH':'dd','XM':'ddded'}) ;
- * </pre>
- */
- 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<aMappers.length;j++){
- var aMapper=aMappers[j].split('=');
- if(aMapper[0]==sOper){
- sMapperid=aMapper[1];
- break;
- }
- }
- CFW.oAJax.doQuery(sMapperid, rowData, "调用Mapper ",
- function(mData) {
- //调用成功后返回数据
- if (typeof (callback) == 'function'){
- try{
- callback(mData);
- }catch(ex){
- CFW.oWin.fnAlert(ex.message);
- }
- }
- },null,"firstRow"
- );
- }else{
- alert('没有配置actionType或actionID,请核查!');
- return;
- }
-
- }else{
- alert('没有配置actionType或actionID,请核查!');
- return;
- }
- },
- /**
- * 增加一行或多行的行数据(只作用于jQuery集合中的第一个多记录表)
- * @param String sListID(必需) 多记录表ID,固定;
- * @param rowData (必需)行数据对象
- * @return int iRowNum 添加后当前页面的总行数
- * <pre>
- * 使用举例:
- * 以下函数在多记录表格中增加一行,只有GRGH列和XM数据。
- * CFW.oGlt.fnAddRows('test_glt1',{'GRBH':'dd','XM':'ddded'}) ;
- * </pre>
- */
- 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。如果配置了第二个参数,那么将用传入的参数替换原有数据。
- * <pre>
- * 使用举例:
- * 以下函数在刷新本多记录表格中的数据。
- * CFW.oGlt.fnUpdateRows('test_glt1',{'GRBH':'dd','XM':'ddded'}) ;
- * </pre>
- */
- 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 数据集对象。
- * <pre>
- * 使用举例:
- * 以下方法打印出多记录表格的数据集
- * var rowsData = CFW.oGlt.fnGetRows('test_glt1') ;
- * CFW.oWin.fnAlert(JSON.stringify(rowsData)) ;
- * </pre>
- */
- 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 第几行
- * <pre>
- * 使用举例:
- * <input type="checkbox" onclick="myFun(this)"/>
- * <a href="#" onclick="myFun(this)" >测试</a>
- * function myFun(obj){
- * var rownum = CFW.oGlt.fnFindByObj(obj);
- * }
- * </pre>
- */
- 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
- * <pre>
- * 使用举例:
- * var i = CFW.oGlt.fnFindByWhere('bxgx_cbgx_rydj','JFRYLB=22');
- * 多个查询条件
- * var i = CFW.oGlt.fnFindByWhere('bxgx_cbgx_rydj','XM=张小小&&XB=9');
- * </pre>
- */
- 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 表示单选框
- * <pre>
- * 使用举例:
- * 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);
- * </pre>
- */
- 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<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=='s'){
- $('.fwdatagrid-view tbody tr[class*=fwdatagrid-row-selected]', grid).each(function(){
- $(this).removeClass('fwdatagrid-row-selected');
- });
- }
-
- $('.fwdatagrid-view tbody tr[fwdatagrid-row-index='+rowindex+']', grid).each(function(){
- //单行或是多行选择
- if(sRow=='s'||sRow=='m'){
- $(this).addClass('fwdatagrid-row-selected');
- }
-
- //需要对选择框做处理
- if(sInput!=''){
- chk = $('[type="'+sInput+'"]',$(this)).attr("checked");
- if(!chk){
- $('[type="'+sInput+'"]',$(this)).attr("checked",true);
- }//else{
- // $('[type="'+sInput+'"]',$(this)).attr("checked",false);
- //}
- }
- });
- },
-
- /**
- * 只读多记录表单取消选中行颜色以及勾选框的函数
- * 取消行选择函数
- * 改变选取消行的颜色或是单击某行记录的任何地方取消勾选
- * 主要是配合 onClickListRow、onDblClickListRow 使用
- * 其中 row 属性表示行需要取消选中颜色,如果只是想处理勾选框此参数也不能少
- * 若 row=s 表示单选行只取消选中行的颜色
- * 若 row=a 表示全部取消选中行的颜色
- * input 属性表示取消勾选状态的控件类型
- * 若 input=checkbox 表示多选框
- * 若 input=radio 表示单选框
- * @param String sListID(必需) 只读多记录表单的配置ID
- * @param int iRowIndex(必需) 行序号(从0开始)
- * @param String type(必需) 应用的类型字符串例如:row=s|input=checkbox
- * <pre>
- * 使用举例:
- * 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);
- * </pre>
- */
- 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;c<len;c++){
- rst.push({});
- }
- //把指定列数据拷贝到返回数组里面
- for(var i=0;i<cols.length;i++){
- var name = cols[i];
- for(var j=0;j<rows.length;j++){
- //拷贝行号
- rst[j]["ROWNUM_"]=rows[j]["ROWNUM_"];
- //拷贝列数据
- if(null != rows[j][name]){
- rst[j][name]=rows[j][name];
- }
- //拷贝字典
- var dname = "_DIC_"+name;
- if(null != rows[j][dname]){
- rst[j][dname]=rows[j][dname];
- }
- }
- }
- return rst;
- },
- /**
- *多记录表单拉伸列宽
- */
- _fnMouseDownToResize : function(obj,tableID){
- if($(obj).closest('th')[0]['sortable']!='true'){
- return;
- }
- var theObjTable = document.getElementById(tableID);
- this._fnSetTableLayoutToFixed(tableID);
- obj.mouseDownX=event.clientX;
- obj.pareneTdW=obj.parentElement.offsetWidth;
- obj.pareneTableW=theObjTable.offsetWidth;
- obj.setCapture();
- },
- /**
- *多记录表单拉伸列宽
- */
- _fnMouseMoveToResize : function (obj,tableID){
- if($(obj).closest('th')[0]['sortable']!='true'){
- return;
- }
- if(!obj.mouseDownX) return false;
- var newWidth=obj.pareneTdW*1+event.clientX*1-obj.mouseDownX;
- if(newWidth>10){
- 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<headerTr.cells.length;i++){
- headerTr.cells[i].styleOffsetWidth=headerTr.cells[i].offsetWidth;
- }
-
- for(var i=0;i<headerTr.cells.length;i++){
- headerTr.cells[i].style.width=headerTr.cells[i].styleOffsetWidth;
- $(headerTr.cells[i]).height(height);
- }
- theObjTable.style.tableLayout='fixed';
- }
- }
- };
|