正确处理jqGrid ajax调用的方法

时间:2015-04-20 12:35:49

标签: javascript jquery ajax jqgrid

我不想只是对jqGrid定义中的url进行“硬编码”,而是希望拥有自己的函数来执行AJAX调用。

我尝试过几个选项,但是当我们直接应用url时,没有一个真正模仿这个场景。

基本上我需要的是保留jqGrid的所有默认行为,但是我是负责执行ajax调用服务器的人。

var loadData = function () {
    var formData = $('#formFilters').serializeArray();

    getData(formData)
        .then(function (data) {
            $grid
                .setGridParam({ "datatype": "jsonstring", "datastr": data })
                .trigger("reloadGrid");

            resizeGrid();
    })
};

网格插入如下:

$grid.jqGrid({
    datatype: loadData,
    colModel: [...]

这里的主要问题是排序不会触发ajax调用,我担心我需要更多地破解它。

是否有关于如何在网格和数据服务功能之间实现这种解耦的最佳实践?

谢谢, 亚历

1 个答案:

答案 0 :(得分:0)

您可以参与此活动:

jqGridSortCol

这里记录了:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:events

您可以尝试首先获取当前过滤器对象:

var f = 'gridselector'
var flts = $( '#' + f ).jqGrid('getGridParam', 'postData').filters

你可以改变那个对象,而不是在钩子事件上尝试这样的事情:

$( '#' + f ).jqGrid( 'setGridParam', { search: true, postData: flts } ); 
$( '#' + f ).jqGrid().trigger('reloadGrid');

ps ..也许你可以从你的问题中做一些问题,这样我们就可以更深入地了解一下:)