/** * Grid Util(PACM/src/webapp/js/GridUtil.js) * 每個人都copy一份過去自己的專案跑,現在已經有非常多版本了。 * 現在這邊重新放一個版本。(我只處理上面有這串字的~~) * 2013.01.18 */ /** * 提供Grid中文設定參數,於頁面載入時設定。 * 須確保repository的檔案已經擁有中文對應檔。 * 原先的struts2-jquery-grid-plugin-2.4.1.jar * 當中並無中文設定檔,已經提供中文檔給peter重新製作jar檔。 * * 若要更新的話,請到下面路徑把該黨刪除,並重新執行PACI, * 該jar檔會重新下載。 * * ....路徑為.m2\repository\com\jgeppert\struts2\jquery\struts2-jquery-grid-plugin */ //發現問題=>路徑會因專案無法對應~先註解處理 /* $(document).ready(function(){ jQuery.scriptPath = "<%=request.getContextPath()%>/struts/"; jQuery.struts2_jquery.local = "zh-TW"; jQuery.struts2_jquery.gridLocal = "zh-TW"; jQuery.ajaxSettings.traditional = true; jQuery.ajaxSetup({ cache: false }); }); */ /** * * 使用範例: * 一般使用情境=> * $("#btnQuerySerNo").click(function(){ $("#button").val("btnQuerySerNo"); queryGrid("RP10!querySerNo", "#gridtableA"); }); * 指定頁面或狀態列使用情境=> //btnRefresh $("#btnRefresh").click(function(){ $("#button").val("btnQuerySerNo"); //call updaet... add... queryGrid("RP10!querySerNo", "#gridtableA", {page:$("input[class=ui-pg-input]").val(), msgId:".errText"}); }); * queryGrid說明: * @param: urlString => 指定此Grid的url屬性,會根據此屬性進行查詢。 * (Action 方法 ex: RP10!querySerNo) * gridTableId => 指定要呈現的GridTable String * (Selector ex: "#gridtableA") * param(option) => 提供兩個屬性: * page : 查詢後以該頁呈現(指定頁面更新,預設第一頁。) * rows : 指定查詢時要使用的查詢筆數。 * msgId : 可指定狀態列顯示(可指定狀態列,預設以'.msgText'顯示) * ({msgId : '.msgText', * page:$("input[class='ui-pg-input']" ).val(), * rows:$("select[class='ui-pg-selbox']" ).val(), * lastUrl:"RP01!queryGrid", * showMsg:false(預設會顯示~可關閉), * showGrid:false(預設會顯示~可關閉), * async:true(預設會false~可true) * }) */ $(function(){ /*for Libra */ $("#libraCopy").val(""); var form = $('form[id$="_dataForm"]').serialize(); form = form.replace(new RegExp("%2F","gm"),"/"); form = form.replace(new RegExp("%2C","gm"),","); $("#libraCopy").val(form); }); //2017/11/02 jasper 當一個頁面有2個以上的 FORM 時會將所有資料送至後端 導致錯誤 //維護時如有用到此 queryGrid function 建議修改成 queryGridByForm function function queryGrid(urlString, gridTableId, param){ var fromString = "form"; return queryGridByForm(fromString ,urlString, gridTableId, param) } //2017/11/02 jasper 增加指定FORM 方法 function queryGridByForm(fromString ,urlString, gridTableId, param){ var jsonData; var showMsg = true; var showGrid = true; var asyncFlag = false; var msgId = '#statusMsg'; //下方狀態列 var msgWinId = '#window'; //彈跳視窗 var formData = $(fromString).serializeArray(); var lastUrl = urlString; var gridParam = jQuery.param(formData); var index; if (typeof param !='undefined') { //msgId defaultValue = "#statusMsg" (can Change) if (param['msgId'] != null && param['msgId'].lenght>0) { msgId = param['msgId']; } // alert('1.value='+param['form']+',length='+param['form'].lenght); //重新變更form的ID if (param['form'] != null && param['form']!="" && typeof param['form'] != 'undefined') { // alert('2.'+param['form']); formData = $(param['form']).serializeArray(); gridParam = jQuery.param(formData);; } //lastUrl defaultValue = urlString; (can Change) if (param['lastUrl'] != null && param['lastUrl'].lenght>0) { lastUrl = param['lastUrl']; } //showMsg defaultValue = true (can Change) if (param['showMsg'] != null) { showMsg = param['showMsg']; } //showGrid defaultValue = true (can Change) if (param['showGrid'] != null) { showGrid = param['showGrid']; } //page added for formData if (param['page'] != null && param['page']>0) { // Find and replace `msgId` if there for (index = 0; index < formData.length; ++index) { if (formData[index].name == "page") { formData[index].value = param['page']; break; } } // Add it if it wasn't there if (index >= formData.length) { formData.push({ name: "page", value: param['page'] }); } } //rows added for formData if (param['rows'] != null && param['rows']>0) { // Find and replace `rows` if there for (index = 0; index < formData.length; ++index) { if (formData[index].name == "rows") { formData[index].value = param['rows']; break; } } // Add it if it wasn't there if (index >= formData.length) { formData.push({ name: "rows", value: param['rows'] }); } } //sidx added for formData if (param['sidx'] != null && param['sidx']>0) { // Find and replace `rows` if there for (index = 0; index < formData.length; ++index) { if (formData[index].name == "sidx") { formData[index].value = param['sidx']; break; } } // Add it if it wasn't there if (index >= formData.length) { formData.push({ name: "sidx", value: param['sidx'] }); } } //sord added for formData if (param['sord'] != null && param['sord']>0) { // Find and replace `rows` if there for (index = 0; index < formData.length; ++index) { if (formData[index].name == "sord") { formData[index].value = param['sord']; break; } } // Add it if it wasn't there if (index >= formData.length) { formData.push({ name: "sord", value: param['sord'] }); } } //async defaultValue = false (can Change) if (param['async'] != null) { asyncFlag = param['async']; } } formData = jQuery.param(formData); $.ajax({ url: urlString, //"RP10!querySerNo", type: "POST", data: formData, async: asyncFlag, //dataType: "json", success: function(json, status) { if (typeof json == 'string') { var errMsg = $(json).find("#jsonMsg").html(); $(msgWinId).html(errMsg); $(msgWinId).attr("style","color:red"); var errString = ""; listMsg = $(json).find("#jsonMsg").children("li"); for(var i = 0; i")); }else if(typeof json.message != 'undefined'){ $(msgId).val(json.message); $(msgWinId).html(json.message.replace("]", "]
")); } //處理status or success(廢棄) if(typeof json.status != 'undefined'){ if(json.status.toUpperCase().indexOf('OK')>=0){ $(msgId).attr("style","color:blue");//has effect $(msgWinId).attr("style","color:black"); }else{ $(msgId).attr("style","color:red"); $(msgWinId).attr("style","color:red"); } }else if(typeof json.success != 'undefined'){ if(json.success.toUpperCase().indexOf('OK')>=0){ $(msgId).attr("style","color:blue");//has effect $(msgWinId).attr("style","color:black"); }else{ $(msgId).attr("style","color:red"); $(msgWinId).attr("style","color:red"); } } } jsonData=json;//GridBean only } }, error: function(xhrInstance, status, xhrException) { message='發生伺服器例外錯誤'; $(msgId).val(message); $(msgWinId).html(message+"
"); $(msgId).attr("style","color:red"); $(msgWinId).attr("style","color:red"); } }); $.ajax({async: true}); return jsonData; } /** * @param gridtableId 將資料塞到grid第一筆當中 * @param data 塞入的資料 {keyA:valueB, keyB:valuB, ... } * @return null */ function appendGrid(gridtableId, data){ var $gridtable = $( '#'+gridtableId); var ids = $gridtable.jqGrid( 'getDataIDs'); for( var i=0; i < ids.length; i++){ if(i==ids.length-1){ // alert( 'ids[i]='+ids[i]); $gridtable.jqGrid( 'delRowData', ids[i]); } } var recordsT = $gridtable.jqGrid( 'getGridParam', 'records'); $gridtable.jqGrid( 'addRowData', recordsT, data, 'first'); var top_rowid = $('#mygrid tbody:first-child tr:first').attr('id'); $gridtable.jqGrid( 'setSelection', top_rowid); }