簡體   English   中英

內聯編輯/創建asp.net mvc的[kendo ui]后,如何刷新網格的所有行

[英]How to refresh all rows of grid after inline editing/creating [kendo ui] for asp.net mvc

我有嵌套的網格。 內部網格允許內聯編輯。 在特殊情況下,在內部網格中創建新元素(表中的行)后,應更改內部網格的另一行。 我更改數據庫中的該行,但不知道如何刷新內部網格。 如果用戶按下網格的“刷新按鈕”,則將顯示數據。 添加/編輯元素后如何使內部網格刷新?


外網

@(Html.Kendo().Grid<Portal2.Areas.ResourceGrouping.Models.TruckTrailerDriverViewModel>()
  .Name("TruckGrid")
  .DataSource(dataSource => dataSource
      .Ajax()
      .Events(events => events.Error("error_handler"))
      .Model(model => model.Id(m => m.Id))
        .Read(read => read.Action("JsonTruckTrailerDriverRead", "TrucksGrouping"))
   )
  .Columns(columns =>
  {
      columns.Bound(x => x.TruckRegNum);
      columns.Bound(x => x.TrailerStartDate);
      columns.Bound(x => x.TrailerEndDate);
      columns.Bound(x => x.TrailerRegNum);
      columns.Bound(x => x.DriverStartDate);
      columns.Bound(x => x.DriverEndDate);
      columns.Bound(x => x.DriverName);
  })
  .Pageable(p => p
      .Refresh(true)
      .PageSizes(true)
      .ButtonCount(5)
      .PageSizes(new[] { 20, 30, 40, 50, 100 }))
  .Filterable(ftb => ftb.Mode(GridFilterMode.Row))
  .Reorderable(reorder => reorder.Columns(true))
  .Events(events => events
      .DetailExpand("detailExpand")
      )
  .ClientDetailTemplateId("template")
)

模板

<script id="template" type="text/kendo-tmpl">
@(Html.Kendo().TabStrip()
      .Name("tabStrip_#=Id#")
      .SelectedIndex(0)
      .Animation(animation => animation.Open(open => open.Expand(ExpandDirection.Vertical)))
      .Items(items =>
      {
          items.Add().Text("Прицепы").Content(@<text> @TruckTrailer() </text>);
          items.Add().Text("Экипажи").Content(@<text> @TruckDriver() </text>);
      })
                        .ToClientTemplate()
)

內網

    @helper  TruckTrailer()
{
    @(Html.Kendo().Grid<Portal2.Areas.ResourceGrouping.Models.CouplerViewModel>()
            .Name("grid_trailers_#=Id#")
            .Columns(columns =>
            {
                columns.Bound(col => col.TruckRegNum);
                columns.Bound(col => col.TrailerRegNum).EditorTemplateName("TrailerTemplateEditor").Width(100);
                columns.Bound(col => col.StartDate).EditorTemplateName("DateTimeEditor").Width(200);
                columns.Bound(col => col.EndDate).EditorTemplateName("DateTimeEditor").Width(200);
                columns.Command(c => c.Edit());
                columns.Command(c => c.Destroy());

            })
            .Sortable()
            .Editable(editable => editable.Mode(GridEditMode.InLine))
            .ToolBar(toolbar => { toolbar.Create(); })
            .DataSource(data => data
                .Ajax()
                .Sort(sort => sort.Add("StartDate").Descending())
                .Events(events =>
                {
                    events.Error("error_handler");
                })
                .Model(model =>
                {
                    model.Id(m => m.Id);
                })
                //required: назвать поле именем, отличным от TruckId (например OwnerTruckId), иначе кендо отказываетсая работать
                .Create(update => update.Action("JsonCouplerCreate", "TrucksGrouping", new { OwnerTruckId = "#= Id #" }))
                .Read(read => read.Action("JsonCouplerRead", "TrucksGrouping", new { TruckId = "#= Id #" }))
                .Update(update => update.Action("JsonCouplerUpdate", "TrucksGrouping"))
                .Destroy(update => update.Action("JsonCouplerDestroy", "TrucksGrouping"))
            )
            .Pageable(pager => pager.Refresh(true))
            .Filterable(ftb => ftb.Mode(GridFilterMode.Menu))
            .Reorderable(reorder => reorder.Columns(true))
            .ToClientTemplate()
    )
}

調節器

[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult JsonCouplerCreate([DataSourceRequest]DataSourceRequest request, CouplerNewViewModel model)
    {
        Guid newItemId = Guid.Empty;
        if (model != null && ModelState.IsValid)
        {
            newItemId = TrucksGroupingUtility.Create(model, User.Identity.Name);

            var jsonContactsCreate = Json(GetSingleCouplerViewModel(newItemId).ToDataSourceResult(request, ModelState));
            return jsonContactsCreate;
        }

        return Json(new[] { model }.ToDataSourceResult(request, ModelState));

    }

如果我錯過了一些必要的代碼來了解我的問題,請在此處寫上注釋-我將添加

解決方案:將事件偵聽器添加到內部網格的數據源

.Events(events => events.Error("error_handler").Sync("sync_handler"))



 function sync_handler(e) {
   this.read();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM