我在EF4 MVC3(C#)上使用jqgrid。我基于this @Oleg的解决方案进行搜索,该解决方案工作良好,符合我的需求。jqgrid搜索:如何指定搜索列?
我在网格中定义的下列:
...
{ name: 'Stato', index: 'StatoTicketID', width: 20, align: 'left', sorttype: 'int', searchoptions: { sopt: ['eq']} },
{ name: 'StatoTicketID', index: 'StatoTicketID', width: 20, align: 'left', sorttype: 'int', hidden: true, searchoptions: { sopt: ['eq']} },
...
正如你所看到的,列Stato
由索引StatoTicketID
(隐藏整型字段)排序,排序工作正常。
问题
当我尝试搜索的Stato
值,过滤器上的指数StatoTicketID
传递字符串,而我想用Stato
值进行搜索。所以我在控制器中得到一个异常,指定我不能将String类型转换为Int32。
当索引位于不同的列时,是否存在指定在哪一列应用搜索的方法,就像我的情况一样?
编辑&解决方法: 现在我解决我的问题与以下解决方法。
(inside foreach (Rule rule in rules) of FilterObjectSet by Oleg)
....
if (rule.field == "StatoTicketID")
{
rule.field = "StatoTicket.Stato";
propertyInfo = typeof(T).GetProperty("stringfield"); // where stringfield is a text type column of my model
}
我知道得很清楚,不是一个完美的解决方案,我希望通过你的一种回应,要知道如何直接从jqGrid的实现需要,请。
在此先感谢
非常感谢Oleg!我会尝试第二种方式。我了解并分享您对我采用的解决方案的担忧,可能是因为我没有指定详细信息:“StatoTicketID”允许我根据给予“Stato”字段的“优先级”发出订单,因此纯文本排序顺序在我的情况下是不好的。 我将尝试第二种方式:我认为这是对我来说最好的解决方案。我会及时通知你的!非常感谢你! – Larry 2012-02-16 09:33:49
@Larry:不客气!如果你使用'datatype:'json''而不加载':true',你可以实现服务器端的排序,这样即使在使用纯文本之后,你仍然可以继续使用'name:'Stato',index:'StatoTicketID' “Stato”列中的值。如果您选择第二种方式,那么您在编辑“Stato”列时将小心处理发送到服务器的数据。让我知道你是否会一直执行到最终的解决方案。 – Oleg 2012-02-16 09:44:20
THX。我试图实现第一个解决方案,但它仍然不起作用。我已经使用过数据类型:'json'和loadonce:false ... pheraps必须修改你的解决方案吗? 我正在尝试第二个...我会让你更新,THX! – Larry 2012-02-16 09:58:20