[英]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.