jqGrid以编程方式设置filterToolbar值

时间:2013-09-25 12:34:44

标签: java javascript jquery jqgrid

我有一个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进行常规搜索,那么它可以正常工作。

任何建议都将受到赞赏。

1 个答案:

答案 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();