我在刷新网格时遇到问题,因为我在加载网格后添加了一些额外的按钮,但是当我尝试重新加载另一个按钮时添加了。
$j(document).ready(function (){
$j("#search").button().click(function() {
var loadingImg = "../img/bpm_scripts/common/images/images";
var ejecutive=$j("#ejecutiveId").val();
buildTable(ejecutive);
});
});
和
function buildTable( ejecutive){
$j("#list").jqGrid('setGridParam',
{postData:{ ejecutive:ejecutive}, search:true });
$j("#list2").trigger("reloadGrid");
$j("#list2").jqGrid({
url: "<f:invokeUrl methodName='getInstances' var='sales'/>",
datatype: "xml",
colNames:['Inv No','No','Creado','Actualizado','Estatus','Hotel'],
colModel:[
{name:'invoiceId',index:'invoiceId', width:40},
{name:'invoiceContracCustom',index:'invoiceContracCustom', width:50},
{name:'invoiceCreatedBy',index:'invoiceCreatedBy', width:100},
{name:'invoiceUpdatedBy',index:'invoiceUpdatedBy', width:100},
{name:'invoiceStatus',index:'invoiceStatus', width:75,align:'center'},
{name:'invoiceHotels',index:'invoiceHotels', width:75,align:'center'}
],
rowNum:10,
autowidth: true,
rowList:[10,20,30],
pager: jQuery('#pager2'),
sortname: 'invoiceId',
viewrecords: true,
sortorder: "desc",
xmlReader: {
root: "results",
row: "invoice",
repeatitems: false,
page: "page>currentpage",
total: "page>pages",
records:"page>records",
id: "invoiceId"
},
caption:"XML Example" }).navGrid('#pager2',
{edit:false,add:false,del:true},
{height:280,reloadAfterSubmit:false}, // edit options
{height:280,reloadAfterSubmit:false}, // add options
{reloadAfterSubmit:false}, // del options
{}); // search options
});
然后调用它:
$j("#list2").jqGrid('navButtonAdd','#pager2', {
caption:"",
buttonicon:"ui-icon-check",
position:"last",
onClickButton:function(){
var gsr = jQuery("#list2").jqGrid('getGridParam','selrow');
if(gsr){
$j.ajax({
url: "url",
type: 'GET',
async: true,
success: function() { alert('fine'); },
error:function() { alert('Se ha producido un error'); } });
}
else
alert("Please select Row") ;
}
});
} 我不知道这部分应该在哪里,因为如果我之前没有加载任何按钮。
问候。
答案 0 :(得分:2)
感谢您的建议。我按照你的提示添加了以下行,并且按钮重复消失。
$j("#list").jqGrid('GridUnload');
答案 1 :(得分:1)
在我看来,你应该重新排序一些功能
$j(document).ready(function (){
// create jqGrid with additional button
$j("#list2").jqGrid({
url: "<f:invokeUrl methodName='getInstances' var='sales'/>",
datatype: "xml",
// .... other jqGrid parameters
}).jqGrid('navButtonAdd','#pager2', {
// all navButtonAdd parameters
});
$j("#search").button().click(function() {
var loadingImg = "../img/bpm_scripts/common/images/images";
$j("#list").jqGrid('setGridParam',
{postData:{ ejecutive: $j("#ejecutiveId").val()}, search:true });
$j("#list2").trigger("reloadGrid");
});
});
此外,您可以在postData
的定义中直接使用$j("#list2").jqGrid
作为函数(请参阅How to filter the jqGrid data NOT using the built in search/filter box)。然后,您可以将代码更改为以下
$j(document).ready(function (){
// create jqGrid with additional button
$j("#list2").jqGrid({
url: "<f:invokeUrl methodName='getInstances' var='sales'/>",
postData: {
ejecutive: function() { return $j("#ejecutiveId").val(); },
search:true
},
datatype: "xml",
// .... other jqGrid parameters
}).jqGrid('navButtonAdd','#pager2', {
// all navButtonAdd parameters
});
$j("#search").button().click(function() {
var loadingImg = "../img/bpm_scripts/common/images/images";
$j("#list2").trigger("reloadGrid");
});
});
如果需要,您可以在函数中包含更多逻辑,以计算ejecutive
参数。重要的是要理解,在每次jqGrid刷新时,函数将在ajax调用之前立即调用。因此,您将始终使用“#ejecutiveId”的实际值。
答案 2 :(得分:0)
$("#grid").jqGrid('GridUnload');
$("#grid").jqGrid({
url: "");
jQuery("#grid").jqGrid('setGridParam', { postData: {
id: function () { return balanzaConfig.formDataParam.id; },
strDate: function () { return balanzaConfig.formDataParam.strDate; }
}
}).trigger('reloadGrid');
答案 3 :(得分:0)
虽然这是一个非常古老的问题,但仍然可以分享我的答案以防其他人遇到同样的问题。
我发现添加显式调用&#39; GridUnload&#39;功能是没有必要的。
如果您设置了&#39; id&#39;按钮,它不会复制导航栏上的按钮,这是一个例子:
$j("#list2").jqGrid('navButtonAdd','#pager2', {
id: "btnId",
.
.
.
. rest of the code
});