0

次のような 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>

私の質問は、グリッドが実際に「取得」アクションを使用しないのはなぜですか? デバッグするときはいつでも、「インデックス」アクションを起動するだけです。ここで何か不足していますか?:)

4

1 に答える 1

2

私はいくつかのことを見ました:

  1. グリッドは、最初はサーバーにバインドされています。ページ/並べ替え/フィルターなどを行うまで、リクエストは行われません。これは簡単に修正できます。

    @(Html.Kendo().Grid(Model.UnitDetails)
    

    する必要があります

    @(Html.Kendo().Grid<UnitDetail>()
    
  2. jQuery を 2 回含めています。これは冗長です。1 つだけ含めます。

于 2013-09-03T07:07:10.383 に答える