javascript jQGrid的setGridParam函数不适用于MVC Action



jquery asp.net-mvc (1)

我尝试使用日期字段过滤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函数中调用这个函数,但是这个动作没有被触发。

请帮忙。


参数sidxsord是基于选项sortnamesortorder动态sortname 。 所以,如果你真的需要设置参数,你应该使用setGridParam对象具有sortnamesortorder属性。

您可以使用fromdatetodate作为sidxsord的值。 所以我怀疑你只需要发送一些额外的参数到服务器,并尝试使用现有的参数。 这不是最好的方法。 我建议你从fromDatetoDate引入额外的参数,并使用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)
{
    ...
}

我建议你阅读答案和这个更多的信息。





jqgrid