【问题标题】:How can filter definition of dojo EnhanceGrid be transfered to server-side如何将dojo EnhancedGrid的过滤器定义转移到服务器端
【发布时间】:2011-05-20 08:19:26
【问题描述】:

我正在使用 dojox.grid.EnhancedGrid 的过滤器插件。它的介绍在http://dojotoolkit.org/reference-guide/dojox/grid/EnhancedGrid/plugins/Filter.html#dojox-grid-enhancedgrid-plugins-filter

为了实现服务器端过滤器,它说:

"默认情况下,服务器端被假定为无状态(REST 风格)。在这种情况下,您应该将过滤器定义与存储的获取请求一起发送到服务器端。您可以通过以下方式执行此操作每次调用 store.fetch 之前修改请求对象。"

并给出了部分示例代码:

var grid = new dojox.grid.EnhancedGrid({
  id:"grid",
  store:"mystore",
  structure:"mystructure",
  plugins:{
    filter: {
      isServerSide: true,
      setupFilterQuery: setupFilter
    }
  }
});
var setupFilter = function(commands, request){
  //the commands object here is the same as the POSTed commands object for stateful server, see below.
  if(commands.filter && commands.enable){
    //some filter is defined and valid. You can modify the request object here.
  }else{
    //no filter is valid.
  }
};

从这个例子中,我仍然不知道如何将过滤器定义传输到服务器端。 commands.filter 是一个像树一样的 json 对象。它如何通过url参数传递到服务器端。谁能给我一些示例代码?

最好的问候 ZY

【问题讨论】:

    标签: filter dojo grid


    【解决方案1】:

    您可以使用 dojo.toJson 序列化整个过滤器定义并在服务器端对其进行评估
    例如

    request.query.filter=dojo.toJson(commands.filter);  
    

    问候

    【讨论】:

    • 谢谢,dojo.toJson 正是我想要的。我的道场EnhancedGrid 基于QueryReadStore。代码如下:request.serverQuery = {q: dojo.toJson(commands.filter)};
    • 你好。我发现 commands.filter 对象似乎不包含日期对象。用 Firefox 的调试器查看它,它似乎包含一个数字(内存地址?),它应该包含一个日期。你知道如何获取日期吗?
    • 数字可能是代表日期的毫秒 - json标准中没有处理日期
    • @GerhardPresser 你能回答这个stackoverflow.com/questions/45159531/…
    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 2021-02-13
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    • 1970-01-01
    相关资源
    最近更新 更多