我尝试使用日期字段过滤 jQgrid 数据。请看下面的图片。
我的网页上有两个文本框和一个按钮。我尝试过滤客户数据
在所选日期范围之间。我在按钮点击事件中调用了我的setGridParam。
请参阅下面的HTML。
$("#Button1").click(function () {
var fromdate = $("#txtFrom").val();
var todate = $("#txtTo").val();
jQuery("#jQGridDemo").jqGrid('setGridParam', {
url: "/Home/GetFilterData?sidx=" + fromdate + "&sord=" + todate, page: 1
}).trigger("reloadGrid");
});
这是我的控制器动作
[HttpPost]
public JsonResult GetFilterData(string sidx, string sord)
{
using (jQGridDemoEntities db = new jQGridDemoEntities())
{
var customers = new List<Customer>();
customers = db.Customers.ToList();
return Json((
from customer in customers
orderby customer.Id descending
select new[]{
customer.Id.ToString(CultureInfo.InvariantCulture),
customer.FirstName,
customer.LastName,
customer.IsMale.ToString(),
customer.Address,
customer.Email,
customer.Phone,
customer.Country.Name,
customer.Note,
customer.Created.ToString()
}).ToArray(), JsonRequestBehavior.AllowGet);
}
}
我在SetGridParam函数中调用此函数,但不会触发此操作。
请帮助。
答案 0 :(得分:3)
参数sidx
和sord
是根据选项sortname
和sortorder
动态构建的。因此,如果您确实需要设置参数,则应将setGridParam
与包含sortname
和sortorder
属性的对象一起使用。
您使用fromdate
和todate
作为sidx
和sord
的值。因此我怀疑您只需要向服务器发送一些附加参数,并尝试使用现有参数。这不是最好的方式。我建议您介绍其他参数fromDate
和toDate
,并使用postData
参数作为jqGrid选项:
// create jqGrid with additional postData parameter
$("#jQGridDemo").jqGrid({
url: "/Home/GetFilterData",
postData: {
fromDate: function () {
return $("#txtFrom").val();
},
toDate: function () {
return $("#txtTo").val();
}
},
...
});
$("#Button1").click(function () {
$("#jQGridDemo").trigger("reloadGrid", [{page: 1}]);
});
您还需要更改GetFilterData
操作的参数名称,这些参数对应于postData
的属性名称:
public JsonResult GetFilterData(string fromDate, string toDate)
{
...
}
我建议您阅读the answer和this one以获取更多信息。