次のような clientrow テンプレートを使用した Kendo UI グリッドがあります。
@(Html.Kendo().Grid(Model.UnitDetails)
.Name("grid")
.DataSource(ds => ds
.Ajax()
.Read(read => read.Action("Get", "Home"))
.AutoSync(true)
.PageSize(5)
.ServerOperation(false)
)
.RowAction(row =>
{
if (row.DataItem.ViewUnitContract.Disabled)
{
row.HtmlAttributes["style"] = "color: gray";
}
})
.Columns(columns =>
{
columns.Template(p => { }).ClientTemplate(" ").Title("Well Site");
columns.Bound(p => p.ViewUnitContract.Name).Title("Unit Name").Width(200);
columns.Template(p => { }).ClientTemplate(" ").Title("Well");
columns.Template(p => { }).ClientTemplate(" ").Title("Run").Width(75);
columns.Template(p => { }).ClientTemplate(" ").Title("Task").Width(250);
columns.Template(p => { }).ClientTemplate(" ").Title("Activity").Width(150); ;
columns.Template(p => { }).ClientTemplate(" ").Width(60).Title("Status");
columns.Template(p => { }).ClientTemplate(" ").Title("Depth (m)").Width(75);
columns.Template(p => { }).ClientTemplate(" ").Title("Speed (m/min)").Width(75);
columns.Template(p => { }).ClientTemplate(" ").Width(250).Title("Weight (kg)");
})
.ClientRowTemplate(Html.Partial("_ClientRowTemplate", Model).ToHtmlString())
.Sortable())
そしてコントローラーは、次のようになります。
using Kendo.Mvc.Extensions;
using Kendo.Mvc.UI;
using SomeName.Xplorer.Library.Controllers;
using SomeName.Xplorer.Services.Models;
using System.Linq;
using System.Web.Mvc;
using UnitContract = SomeName.Xplorer.Services.UnitService.UnitContract;
public class HomeController : BaseController
{
private HomeViewModel Model { get; set; }
[Authorize]
public ActionResult Index()
{
UnitContract[] listOfUnitsFromService = UnitClient.GetListOfUnits(true, "");
Model = new HomeViewModel
{
UnitDetails = GenerateUnitDetails(listOfUnitsFromService.ToList()),
};
return View(Model);
}
public ActionResult Get([DataSourceRequest] DataSourceRequest request)
{
UnitContract[] listOfUnitsFromService = UnitClient.GetListOfUnits(true, "");
Model = new HomeViewModel
{
UnitDetails = GenerateUnitDetails(listOfUnitsFromService.ToList()),
};
return Json(Model.UnitDetails.ToDataSourceResult(request));
}
}
そして最後に、私のスクリプト:
<script src="@Url.Content("~/Scripts/kendo/2013.2.716/jquery.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery-1.8.2.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/kendo/2013.2.716/kendo.all.min.js")"></script>
<script src="@Url.Content("~/Scripts/kendo/2013.2.716/kendo.aspnetmvc.min.js")"></script>
私の質問は、グリッドが実際に「取得」アクションを使用しないのはなぜですか? デバッグするときはいつでも、「インデックス」アクションを起動するだけです。ここで何か不足していますか?:)