如何将dojo EnhancedGrid的过滤器定义转移到服务器端
Posted
技术标签:
【中文标题】如何将dojo EnhancedGrid的过滤器定义转移到服务器端【英文标题】:How can filter definition of dojo EnhanceGrid be transfered to server-side 【发布时间】: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
【问题讨论】:
【参考方案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 你能回答这个***.com/questions/45159531/…以上是关于如何将dojo EnhancedGrid的过滤器定义转移到服务器端的主要内容,如果未能解决你的问题,请参考以下文章
Dojo - EnhancedGrid 未在第一次页面加载时显示