代码之家  ›  专栏  ›  技术社区  ›  Yanayaya

如何将参数数组传递给Kendo网格数据源?

  •  0
  • Yanayaya  · 技术社区  · 6 年前

    我想将一组数据传递给Kendo网格数据源。数组将是一个选择的ID,返回特定的汽车到网格,我不知道如何做。

    通常,您可以通过直接内联声明一个参数或(我喜欢的方式)利用 .Data 并指定一个javascript函数。

    .Read(read => read.Action("GetCars", "Grid").Data("myParams"))
    

    然后编写一个函数来返回数据,在本例中是一个id,再加上记录中需要的任何其他内容。

    function myParams() {
        return {
            name: "Holden",
            id: 1
        }
    }
    

    然后对控制器的控制方法进行调整,使之充分利用参数。

    public ActionResult GetCars([DataSourceRequest] DataSourceRequest request, int Id)
    {
        var car = unitOfWork.CarRepository.Get()Where(x => x.Id == Id);
        var result = car.ToDataSourceResult(request);
        return Json(result, JsonRequestBehavior.AllowGet);
    }
    

    对于传递单个id来说,这一切都很好,但是我需要传入一个数组。我开始走上了一条我认为可以实现的道路,但老实说,我并不完全相信。我用javascript做了一个非常粗糙的初始方法,比如:

    var cars = ["1", "2", "3"];
    
    function myParams() {
        return {
            car: cars
        }
    }
    

    然后我调整控制器以接受如下数组:

    public ActionResult GetTabVessels(string[] car, [DataSourceRequest] DataSourceRequest request)
    {
        // Not sure how to handle it at this stage :(
    
        foreach (var item in car) {
            Console.WriteLine(item);
        }
        //Need to adjust this to accept the array.  Any ideas?
        var car = unitOfWork.CarRepository.Get()Where(x => x.Id == Id);
        var result = car.ToDataSourceResult(request);
        return Json(result, JsonRequestBehavior.AllowGet);
    }
    

    在这一点之后,我意识到我可能需要一些指导。那么,如何将参数数组(在我的例子中是id)传递给kendo网格数据源呢?

    非常感谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Noren    6 年前

    如注释中所述,下面是一个未经测试的示例,说明如何将数组返回到kendo:

    public ActionResult GetTabVessels(string[] car, [DataSourceRequest] DataSourceRequest request)
    {
        //ToList() is a Linq Extension
        return Json(car.ToList().ToDataSourceResult(request));
    }