jqgrid工具栏过滤器参数与.asmx web服务链接

jqgrid工具栏过滤器参数与.asmx web服务链接,jqgrid,Jqgrid,我正在使用jqgrid和工具栏过滤器(搜索)。在服务器端,我有一个.asmxweb服务,它在绑定jqgrid之后被调用 第一次加载jqgrid时,发送到web方法的参数为: _搜索:正确 nd:1384937982166 页码:1 行:10 sidx:“ sord:“描述” 当我在每列上方的过滤器文本框(例如所有者列)中输入一些文本时,发送到web方法的参数如下所示: 所有者:“样本” _搜索:正确 nd:1384937982166 页码:1 行:10 sidx:“ sord:“描述” 到目前为

我正在使用jqgrid和工具栏过滤器(搜索)。在服务器端,我有一个.asmxweb服务,它在绑定jqgrid之后被调用

第一次加载jqgrid时,发送到web方法的参数为: _搜索:正确 nd:1384937982166 页码:1 行:10 sidx:“ sord:“描述”

当我在每列上方的过滤器文本框(例如所有者列)中输入一些文本时,发送到web方法的参数如下所示: 所有者:“样本” _搜索:正确 nd:1384937982166 页码:1 行:10 sidx:“ sord:“描述”

到目前为止还不错。但是,当我清除textbox以加载所有数据而不进行任何筛选时,参数“Owner”不会发送到服务器,我得到以下错误: “无效的web服务调用,缺少参数值:\u0027Owner\u0027。”

那个么,我应该在服务器端使用什么签名来处理网格中所有列的过滤呢?
谢谢

问题如下:ASMX web服务要求在每次请求服务器时始终发送方法的所有参数。另一端的jqGrid(在使用或使用的情况下)仅在设置了过滤器时才发送过滤器信息(如所有者:“示例”)

要解决此问题,您可以使用
serializeGridData
回调中的
Owner
(或其他)扩展参数,这些参数将被发送到服务器。比如说

序列化GridData:函数(postData){ 如果(postData.Owner==未定义)postData.Owner=null; 返回JSON.stringify(postData); } 或

序列化GridData:函数(postData){ 返回JSON.stringify($.extend(true,{Owner:null},postData)); } 还有一句话。如果网格中有许多列,则必须在ASMX Web方法中包含许多参数(每列一个附加参数)。我觉得这不好。您应该考虑使用<代码> StrugREST:Trime< /Cord>选项。参数将如何发送到服务器的格式发生变化。如果使用
stringResult:true
选项,jqGrid将一个带有固定名称的参数过滤器
发送到服务器。参数的值是JSON字符串。在这种情况下,您可以将
过滤器
从JSON反序列化到服务器上的对象


还有一点很重要。我建议您考虑使用<代码>加载一次:网格的真< /代码>选项。如果数据集中没有那么多行,那么使用该选项是非常实用的。在这种情况下,服务器不需要实现服务器端数据分页、排序和过滤。相反,web方法应该一次返回所有数据,jqGrid将为您实现分页、排序和过滤。

谢谢Oleg;你的回答帮助了我