0

我正在使用带有 Kendo UI 网格的 ASP.Net Mvc 4。我想在 kendo UI 网格上执行更高级的功能(比如将排序后的数据从网格导出到 excel、添加过滤器等)。我需要在我的视图中配置数据源和控制器中的“读取”方法。网格由 LINQ 查询填充并存储在 ViewBag 中。

这是我认为 Index.cshtml 中的剃刀代码

@(Html.Kendo().Grid((IEnumerable<Reports.Models.Company>)ViewBag.ActComp)
      .Name("grid")     
      .Columns(columns =>
      {
          columns.Bound(comp => comp.Name);
          columns.Bound(comp => comp.DateCreated);
          columns.Bound(comp => comp.Quarter).Sortable(false);
          columns.Bound(comp => comp.Code);
          columns.Bound(comp => comp.Enabled).Column.Title = "Active";
      })
      .Sortable()
      .Groupable()
      .Scrollable(src => src.Height(500))            
      )

这是控制器 ActiveCompController.cs

    namespace Reports.Controllers
{
    public class ActiveCompController : Controller
    {
        private FSLContext fslData = new FSLContext();

        public ActionResult Index()
        {
            ViewBag.ActComp = from b in fslData.Companies
                              where b.Enabled == true
                              orderby b.Name
                              select b;

            return View();
        }

我已经看到了几个不同的 .Ajax() 示例,例如:

      .DataSource(dataSource => dataSource // Configure the grid data source
      .Ajax() // Specify that ajax binding is used
      .Read(read => read.Action("Products_Read", "Home")) // Set the action method which will return the data in JSON format

但是,它不起作用,因为我的数据来自未格式化为 JSON 的 LINQ 查询。另外,我不知道在“读取”方法中要写什么。

关于如何使用我的配置配置数据源和控制器的任何想法?

4

1 回答 1

0

看起来您的代码类似于 http: //demos.kendoui.c​​om/web/grid/index.html 上的 Kendo Grid 示例

我将首先为 Company 设置一个 ViewModel 类,该类将包含网格的所有列,类似于他们在示例中拥有 ProductViewModel 的方式。例如,您的 ViewModel 中有以下内容:

Name, DateCreated, Quarter, Code, Enabled

如果您导航到 ASP.NET MVC > IndexController.cs,您将看到他们在哪里定义了他们的方法: public ActionResult Products_Read([DataSourceRequest] DataSourceRequest request)

从那里你会看到他们将他们的 LINQ 结果包装到他们的 ViewModel 中并以 JSON 格式返回它们。您在为您的网格设置数据源的正确轨道上。就控制器而言,你会改变

.Read(read => read.Action("Products_Read", "Home"))

.Read(read => read.Action("<YourMethodHere>", "Home"))

这将允许您修改读取的逻辑。但是,请注意,读取操作仅用于填充表,任何其他功能(例如排序)将被不同地处理。有关排序的更多信息,请查看这里 http://demos.kendoui.c​​om/web/grid/sorting.html

于 2013-06-17T21:56:49.827 回答