我有一个jqGrid代码类似于以下示例代码:
jQuery("#list10").jqGrid({
url:'MyServlateName?action=MyAction',
datatype: "xml",
mtype:"POST",
ajaxSelectOptions: {type: "POST"},
sortable: true,
height: "100%",
rowNum:4,
width: 1000,
emptyrecords: "No Records to display",
colNames:['Contact No', 'Cust ID', 'Name'],
colModel:[
{name:'CNO',index:'CNO', width:80,sortable:true},
{name:'CUSTID',index:'CUSTID', width:60,sortable:true},
{name:'CNAME',index:'CNAME', width:200,sortable:true, searchoptions:{ sopt:['cn']}},
],
pager: '#pager10',
viewrecords: true,
sortname: 'CUSTID',
shrinkToFit: false,
toppager: true,
sortorder: "asc"
}
}).navGrid('#pager10',{cloneToTop:true, edit:false,add:false,del:false,view:true,search: false, refresh:true},
{},
{},
{},
{},
{recreateForm: true,width:700,navkeys: [true,38,40]}
);
jQuery("#list10").jqGrid('bindKeys');
$("#list10").jqGrid('filterToolbar', {stringResult: true,searchOnEnter: false});
在filterToolbar中,我使用以下代码以编程方式放置CUSTID:
document.getElementById("gs_CUSTID").value=CUST_ID_VAR_NAME;
它显示了CUSTID列中filterToolbar中的值,但是根据我放置的CUSTID(NO SEARCH HAPPENS)没有填充/搜索网格。如果我使用filterToolbar进行常规搜索,那么它可以正常工作。
任何建议都将受到赞赏。
答案 0 :(得分:3)
您可以通过不同方式解决问题。例如,您可以在控件中设置值后在change
上触发#gs_CUSTID
事件:
$("#gs_CUSTID").val("123");
$("#gs_CUSTID").trigger("change");
更好的方法是最初在网格中设置datatype: "local"
。在创建网格期间,它将阻止从'MyServlateName?action=MyAction'
加载未过滤的数据。之后,您可以使用datatype
将"xml"
更改为setGridParam
,在#gs_CUSTID
中设置值,并在结束时触发change
事件。
$("#list10").jqGrid("setGridParam", {datatype: "xml"});
$("#gs_CUSTID").val("123");
$("#gs_CUSTID").trigger("change");
您可以手动调用change
方法(请参阅jqGrid代码的the part),而不是触发triggerToolbar
:
$("#list10").jqGrid("setGridParam", {datatype: "xml"});
$("#gs_CUSTID").val("123");
$("#list10")[0].triggerToolbar();