2014-10-10 123 views
1

我是使用MVC和剑道的新手。ASP.NET MVC和Kendo Grid可排序

我有这样的控制器:

public ActionResult Index() 
    { 
     db.Configuration.ProxyCreationEnabled = false; 
     return View(db.students.ToList()); 
    } 

视图有这样的:

@model IEnumerable<MVC_Test1.Models.student> 

@{ 
ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

@(Html.Kendo().Grid(Model) 
.Name("Grid") 
.Pageable(pager => pager 
    .PageSizes(new[] { 2, 3, 4 }) 
    .ButtonCount(5)) 
.Sortable() 
.Selectable() 
.DataSource(dataSource => dataSource 
    .Ajax() 
    .PageSize(2) 
    .ServerOperation(false) 
) 
.Columns(columns => 
{ 
    columns.Bound(p => p.FirstName).Title("Name"); 
    columns.Bound(p => p.MiddleName).Title("Middle"); 
    columns.Bound(p => p.LastName).Title("Lastname"); 
    columns.Bound(p => p.EnrollmentDate).Format("{0:" + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern + "}").Title("Created"); 
    columns.Command(commands => 
    { 
     commands.Custom("Options"); 
    }).Title("Options").Width(200); 
}) 
  • 首先,我需要通过一个名为 “OrderPos” 的模范生了属性对列表进行排序。
  • 我想要拖放行来更改顺序并自动更新数据库。所以当我拖放一行时,它会在数据库中查找字段“OrderPos”。

我已经看到了kendo可排序的小部件,但我不知道如何混合所有东西来使这个工作。 以下是演示:http://demos.telerik.com/kendo-ui/sortable/integration-grid

谢谢。

+0

您是否具有拖放功能? – CSharper 2014-10-10 16:01:24

+0

您必须捕获“drop”完成后触发的事件,在该事件中您可以触发Ajax调用并发送网格数据。因此,您的控制器将把GridView绑定到YourModel类的列表,并且应该根据它们在视图中的外观来对它们进行排序。这将是最难的部分。我会让你弄清楚如何从那里更新数据库:)发布Kendo Grids数据的例子很多。如果你真的很挣扎,我会告诉你如何发布。 – CSharper 2014-10-10 16:14:50

+0

请给我一个你建议的例子吗? – 2014-10-12 05:39:59

回答

1

邮网格服务器上的一些事件

var gridData = $("#ProposalGridX").data("kendoGrid"); 

      $.ajax({ 
       url: "/GridPost/PersonPost", 
       type: 'POST', 
       data: JSON.stringify(gridData.dataSource.view()), 
       dataType: 'json', 
       contentType: 'application/json', 
       success: function (data) { 

       } 
      }); 


     [HttpPost] 
     public JsonResult PersonPost(List<QPM.Models.PortfolioViewModel> model) 
     { 
      //model will contain gridview 
      //update OrderPos 
     }