我的jqgrid客户端应用发送了这个:
{ "groupOp":"AND", "rules":[{"field":"customernumber", "op":"ge", "data":"200"}]}
是否可以使jqgrid甚至发送字段类型......
{“groupOp”:“AND”,“rules”:[{“field”:“customernumber”,“type”:“int”:,“op”:“ge”,“data”:“200” }]}
答案 0 :(得分:2)
首先,jqGrid中不存在您需要的功能。此外,问题是 jqGrid没有关于您可以直接使用的列数据的类型信息。 jqGrid只有sorttype这样的设置,仅用于本地排序或formatter和edittype。另外存在stype,可以是“文本”或“选择”。因此该列没有数据类型。在我看来,拥有新的datatype
属性对于jqGrid的未来版本来说是一个有趣的功能。
现在关于现实。如果您知道列设置中的哪个是您的案例中的数据类型(sorttype
,formatter
或edittype
),则可以扩展filter
postData
参数中的信息1}}包含您需要的信息。要实现此功能,您可以使用serializeGridData作为示例。在serializeGridData事件句柄内,您可以检查filter参数。如果存在,您可以将jQuery.parseJSON转换为对象,生成的过滤器对象可以通过type
数组中的其他属性rules
轻松扩展。为此,您可以将field
数组项的rules
属性与edittype
(或sorttype
,formatter
)属性相匹配{{1} }}。顺便说一句,您可以使用colModel
轻松地从网格中引用colModel
。修改$("list").jqGrid('getGridParam','colModel')
对象后,您可以将其转换回json2.js中带有JSON.stringify函数的JSON,并将其放置到filter
,并将其发送到服务器。
我在上面解释的只是一个粗略的架构,但它可以相对容易地实现。
答案 1 :(得分:1)
我很久以前也有同样的需求,我通过传递“知识”服务器端来克服它。
问题: jqGrid不支持你需要的东西,它不关心字段的类型,它确实有意义,强制执行此操作可能会导致其他问题。 实现自己的序列化机制看起来过于复杂,可能会在控件的未来更新中给您一些问题。 对我来说这个解决方案随处可见,因为我的应用程序通常有很多支持搜索的网格,我不想覆盖任何默认网格的功能,以避免未来控制更新出现问题。
我的解决方案: jqGrid给你的是列名,过滤值和操作。 在服务器端,您可以按列名称获取列的类型,这样您实际上就不需要在线路中使用此信息。 把这些知识放在服务或控制器上或者你要求执行serach请求的地方,一切都应该没问题。
简短说明: 在我的情况下,我使用.net实体框架,所以我从ORM对象属性类型获取列类型。
干杯! 亚历