相关疑难解决方法(0)

是否应该将jqGrid的使用addJSONData替换为setGridParam()和trigger('reloadGrid')的用法?

我最近写了一个问题" jqGrid显示默认"加载"更新表/自定义更新时的消息 "的答案.在编写答案时,我想:为什么他使用addJSONData()函数刷新网格中的数据而不是相对于setGridParam()更改URL 并刷新jqGrid数据相对于trigger('reloadGrid')?一开始我想推荐使用'reloadGrid',但在考虑了这一点后,我明白我不太确定最好的方法是什么.至少,我不能用两句话解释为什么我更喜欢第二种方式.所以我认为它可能是一个有趣的讨论主题.

确切地说:我们有一个典型的情况.我们有一个网页,其中包含至少一个jqGrid和一些其他控件,如组合框(选择),复选框等,这使用户可以更改jqGrid中显示的信息的范围.通常我们定义一些事件处理程序jQuery("#selector").change(myRefresh).keyup(myKeyRefresh) ,我们需要根据用户的选择重新加载jqGrid容器.

在阅读并分析来自其他用户输入的信息后,我们可以至少以两种方式刷新jqGrid容器:

  1. 调用$.ajax()手动然后在成功内部或完成$.ajax调用句柄jQuery.parseJSON()(或eval),然后调用jqGrid的addJSONData函数.我在stackoverflow.com上发现了很多使用addJSONData的例子.
  2. 根据用户的输入更新jqGrid的URL,将当前页码重置为1,并可选择更改网格的标题.所有这些都可以通过setGridParam()和可选的setCaption() jqGrid方法完成.最后调用网格的触发器('reloadGrid')函数.要构造url,顺便说一下我主要使用jQuery.param函数来确保,我已经为encodeURIComponent正确打包了所有url参数.

我希望我们讨论这两种方式的优缺点.我目前使用第二种方式,所以我将从这一方面的优势开始.

可以说:我调用现有的Web服务,将接收的数据转换为jqGrid格式并调用addJSONData.这就是我使用addJSONData方法的原因!

好的,我会选择另一种方式.jqGrid可以直接在Web服务上调用并在网格内填充结果.有很多jqGrid选项,允许您自定义此过程.

首先,可以删除或重命名发送到服务器关于任何标准参数prmNames的jqGrid的选项或对于添加任何额外的参数POSTDATA选项(参见http://www.trirand.com/jqgridwiki/ doku.php?id = wiki:options).$.ajax通过定义serializeGridData()函数(jqGrid的另一个选项),可以在jqGrid发出相应请求之前立即修改所有构造的参数.更重要的是,可以$.ajax通过设置jqGrid的ajaxGridOptions选项来更改每个参数.我用ajaxGridOptions: {contentType: "application/json"}例如作为一般设置$.jgrid.defaults.该ajaxGridOptions选项是非常强大的.对于ajaxGridOptions …

jquery jqgrid

28
推荐指数
1
解决办法
9918
查看次数

在没有AddJsonRows的情况下在jQgrid中加载本地JSON数据

我正在使用方法addJsonRows将本地数据添加到jQgrid.由于此方法禁用排序,我需要另一种解决方案.一个限制:我无法设置url并从服务器获取数据,因为数据是通过另一个组件传递的.

在片段下方启发了案例.注释行显示限制,我通过定义一个局部变量来替换它以获得测试用例.

<script type="text/javascript" language="javascript">
    function loadPackageGrid() {
    // Get package grid data from hidden input.
    // var data = eval("("+$("#qsmId").find(".qsm-data-packages").first().val()+")");
        var data =  {
            "page": "1",
            "records": "2",
            "rows": [
                { "id": "83123a", "PackageCode": "83123a" },
                { "id": "83566a", "PackageCode": "83566a" }
            ]
        };

        $("#packages")[0].addJSONData(data);
    };

    $(document).ready(function() {
        $("#packages").jqGrid({
            colModel: [
                { name: 'PackageCode', index: 'PackageCode', width: "110" },
                { name: 'Name', index: 'Name', width: "300" }
            ],
            pager: $('#packagePager'),
            datatype: "local",
            rowNum: 10000,
            viewrecords: true,
            caption: "Packages",
            height: …
Run Code Online (Sandbox Code Playgroud)

jqgrid

28
推荐指数
1
解决办法
5万
查看次数

标签 统计

jqgrid ×2

jquery ×1