【问题标题】:jqgrid: issue with beforeProcessing and loadoncejqgrid:beforeProcessing 和 loadonce 的问题
【发布时间】:2017-08-02 04:44:29
【问题描述】:

我正在使用 Guriddo jqGrid 5.2.1。我定义了一个 jsonReader 来处理 URL 返回的数据的非标准格式:

jsonReader : {
            root:"payload.rows",
            page: "payload.page",  // the current page
            total: "payload.total",  // the total # of pages
            records: "payload.records"  // the total # of records
        },

网格还将loadonce 设置为true,因此所有数据都加载一次。这使我可以让网格处理排序,而不是从服务器请求排序的数据。行中的输入字段之一是以毫秒表示的日期。我定义了一个beforeProcessing 函数来处理将每一行中的日期转换为可以正确格式化的值:

beforeProcessing: function (data) {

            for(var i = 0; i < data.payload.rows.length; i++) {
                var d = new Date(data.payload.rows[i].ihw);
                data.payload.rows[i].ihw = d;
            }

        },

最初检索数据时,这工作得很好。但是,我注意到每当我单击要排序的列时都会调用beforeProcessing,即使loadonce 设置为true。我可以更改代码以使用formatter 处理格式化日期,例如this post。但是,我还有其他数据操作需求,例如,我想向每一行添加一个新字段,该字段是该行中其他三个字段的串联。当使用jsonReader 时,传入的数据似乎被转换为标准的jqgrid 格式,因此下次执行beforeProcessing 时(例如,在排序时),beforeProcessing 代码错误,因为数据现在是与以前不同的格式。在最初从服务器检索数据之后,是否有一个我可以使用的事件只运行一次?还是需要在beforeProcessing中设置一个JavaScrpt变量,表示数据已经处理过一次,在后续调用中跳过处理?

【问题讨论】:

  • 看来问题是特定于您使用的商业Guriddo jqGrid JSfree jqGrid 和旧的 jqGrid(版本
  • 如果你想继续使用商业Guriddo jqGrid JS,那么我建议你在beforeProcessing的代码中插入if (this.p.datatype === "json") {/*the for loop*/}。它允许您在 jqGrid 处理数据之前对从服务器返回的数据进行一些修改。

标签: jqgrid


【解决方案1】:

当数据类型为本地时,旧代码不考虑 beforeProcessing 事件 - 这就是修复此错误并将 beforeProcessing 添加到所有数据类型的原因。

由于选项 loadonce 设置为 true,因此您的数据类型已从 json 更改为本地,但如您所提到的,向 beforeProcessing 传递了不同的数据。

一种可能的解决方案是设置一个标志以仅执行此代码一次或在事件中将同一事件设置为空

beforeProcessing: function (data) {

        for(var i = 0; i < data.payload.rows.length; i++) {
            var d = new Date(data.payload.rows[i].ihw);
            data.payload.rows[i].ihw = d;
        }
        this.p.beforeProcessing = null;

    },

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2012-08-07
    • 2011-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多