我jqGrid的客户端应用程序发送此:在jqgrid中过滤时可以发送字段类型吗?
{ "groupOp":"AND", "rules":[{"field":"customernumber", "op":"ge", "data":"200"}]}
是有可能使jqGrid的发送,即使字段类型某物像
{ “groupOp”: “和”, “规则”:[{ “field”:“customernumber”,“type”:“int”:,“op”:“ge”,“data”:“200”}]}
我jqGrid的客户端应用程序发送此:在jqgrid中过滤时可以发送字段类型吗?
{ "groupOp":"AND", "rules":[{"field":"customernumber", "op":"ge", "data":"200"}]}
是有可能使jqGrid的发送,即使字段类型某物像
{ “groupOp”: “和”, “规则”:[{ “field”:“customernumber”,“type”:“int”:,“op”:“ge”,“data”:“200”}]}
我很久以前就有同样的需求,我通过传递“知识”服务器端来克服它。
问题: 的jqGrid不支持你所需要的,它并不关心字段的类型,它有一定道理的方式,执行本会引起你的其他问题。 实现您自己的序列化机制看起来过于复杂,可能会给您在控件的未来更新上带来一些问题。 对我来说,这个解决方案在各个地方都可以使用,因为我的应用程序通常有很多搜索启用的网格,我不想覆盖任何默认网格的功能以避免未来控制更新出现问题。
我的解决方案: jqGrid为您提供的是列名称,筛选器值和操作。 服务器端你可以通过它的列名获得列的类型,所以你实际上不需要这些信息在线中传播。 把这些知识放在服务或控制器上,或者你打电话来执行请求的地方,一切都应该没问题。
便笺: 在我的情况下,我使用.net实体框架,以便从ORM对象属性类型中获取列类型。
干杯! Alex
首先您需要的功能isn在jqGrid中不存在。此外问题是,jqGrid没有关于列数据的类型信息,您可以直接使用。 jqGrid只有像sorttype这样的设置只用于本地排序或者formatter和edittype。另外还有stype,它可以是“文本”或“选择”。所以这个列没有数据类型。在我看来,拥有新的datatype
属性是未来jqGrid版本的一个有趣功能。
现在谈谈现实。如果您知道列设置中的哪些数据类型是您的案例中的数据类型(sorttype
,formatter
或edittype
),则可以使用所需信息从的filter
参数扩展信息。为了实现这个,你可以使用serializeGridData为例。在serializeGridData事件句柄的内部,您可以检查filter参数。如果存在,则可以将其转换为对象,其生成的滤镜对象可以通过rules
阵列中的附加属性type
轻松扩展。为此,您可以将rules
阵列的项目的field
财产与colModel
的edittype
(或sorttype
,formatter
)财产匹配。顺便说一句,你可以很容易地从$("list").jqGrid('getGridParam','colModel')
从网格获得参考colModel
。在修改filter
对象后,您可以使用来自json2.js的JSON.stringify函数将其转换回JSON并将其放置到postData
并将其发送到服务器。
我上面解释的只是一个粗略的模式,但它可以相对容易地实现。