首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在loadBeforeSend上设置jqGrid网址

在loadBeforeSend上设置jqGrid网址
EN

Stack Overflow用户
提问于 2011-06-09 21:59:56
回答 2查看 7.4K关注 0票数 3

我有一个wcf服务,用于向jqgrid返回json数据的大量报告。一切都如期而至。但是,由于每个报表查询都有大量的用户输入,所以我选择使用与服务器上的一系列“输入模型”相匹配的json字符串。我不想在我的路线上处理冗长复杂的查询字符串。

问题:如何添加jqGrid查询字符串params,将我的json字符串上传到服务器?我尝试过'loadBeforeSend‘,但是我似乎不能覆盖ajax。我不能为url参数使用函数,因为网格参数还不可用。有什么想法吗?谢谢。

我的jqGrid函数(缩写为简洁):

代码语言:javascript
复制
function loadGrid() {
        var tbl = $('#tbl');
        tbl.jqGrid({
            loadBeforeSend: function () {
                var ai = {
                    dateFrom: dbDateTime($('#at-datefrom').val()),
                    dateTo: dbDateTime($('#at-dateto').val()),
                    sidx: tbl.getGridParam('sortname'),
                    sord: tbl.getGridParam('sortorder'),
                    page: tbl.getGridParam('page'),
                    rows: tbl.getGridParam('rowNum')
                };
                var newUrl = getBaseURL() + 'ReportingService.svc/report/?json=' + JSON.stringify(ai);
                tbl.jqGrid().setGridParam({ url: newUrl });//Everything works perfect up to this point. All the values are in my json string and my url is correct. 
            },
            url: '', //Empty because I need to override it
            datatype: 'json',
            mtype: 'GET',
            ajaxGridOptions: { contentType: 'application/json' },
            loadError: function (xhr, status, error) { alert(status + "" + error); }
        }).navGrid('#attendance-pager', { edit: false, add: false, del: false });
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-10 08:12:11

如果您使用mtype: 'GET'和neew只是为了设置附加于URL的附加参数,则可以使用jqGrid的postData参数。如果将postData定义为一个函数,您将获得最好的结果(详见这里 )。

另一种方法是使用beforeRequest,其中this将被设置为网格DOM元素,您可以访问(并在需要时更改)每个this.p.url的jqGrid的url参数。当然,您可以使用$(this).jqGrid('setGridParam','url',yourNewUrl);而不是直接更改this.p.url

在您的情况下,我不建议您使用datatype作为函数。顺便说一句,在使用beforeRequest作为函数的情况下,不能使用datatype

票数 2
EN

Stack Overflow用户

发布于 2011-06-09 23:00:07

我讨厌回答我自己的问题,但马修提供的这个回答效果很好。这个问题有点模棱两可,但无论如何。

简而言之,您需要从'datatype‘参数调用外部ajax函数。因为现在加载了jqGrid (尽管没有任何数据),所以可以从用户输入(即记录集的第3页、排序'desc‘等)捕获param数据。并将其添加到json字符串中。

这使得您的服务中有一个非常简单的uri路由。希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6299829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档