簡體   English   中英

在 Kendo Grid 中編輯和刪除行

[英]Edit and delete rows in Kendo Grid

在我的 .net 核心應用程序中,我有一個劍道網格,我試圖在其中添加按鈕來編輯/更新和刪除行。 基本上我想要做的是從行中的參數獲取objectid並重定向到updatedelete視圖。

<div class="clearfix">
        @(Html.Kendo().Grid<M20_AEK.Models.ContractSettlement>()
                    .Name("ContractSettlementGrid")
                    .Editable(editable => editable.Mode(GridEditMode.InLine))
                    .Pageable(pageable => pageable.Input(true).Numeric(false))
                    .Scrollable()
                    .Sortable()
                    .Filterable()
                    .ColumnMenu()
                    .Groupable()
                    .Columns(columns =>
                    {
                        columns.Bound(c => c.OBJECTID).Title("ID").Hidden();
                        columns.Bound(c => c.OPERATOR_OBJECTID).Title("Operator").Width("100px");
                        columns.Bound(c => c.Year).Title("Year").Width("100px");
                        columns.Bound(c => c.Month).Title("Month").Width("100px");
                        columns.Bound(c => c.SETTLEMENT_OBJECTID).Title("Settlement").Width("100px");
                        columns.Bound(c => c.TECHNOLOGY_OBJECTID).Title("Technology").Width("100px");
                        columns.Bound(c => c.UPLOAD_SPEED_CLASS_OBJECTID).Title("Upload").Width("100px");
                        columns.Bound(c => c.DOWNLOAD_SPEED_CLASS_OBJECTID).Title("Download").Width("100px");
                        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(172);
                    })
                    .DataSource(dataSource => dataSource
                    .Ajax()
                    .PageSize(20)
                    .Events(events => events.Error("error_handler"))
                    .Model(model => model.Id(p => p.OBJECTID))
                    .Update(update => update.Action("Save", "SettlementContract"))
                    .Destroy(update => update.Action("Delete", "SettlementContract"))
                    .Read(read => read.Action("LoadSettlementContracts_Read", "SettlementContract"))
                    )
           )
    </div>

我嘗試 map command.Edit()command.Destroy()命令使用我的相應方法我的 controller。當我單擊“ Update button時,控制台出現錯誤:

Failed to load resource:44326/SettlementContract/Save:1 the server responded with a status of 400 ()

我可以按我嘗試的方式 map 按鈕嗎? 它甚至沒有調用相應的方法,也沒有達到我的斷點。 也許不能這樣做?

這是 controller

        [HttpPost]
        public IActionResult Save(Model model)
        {
          // code shortened for brevity
         return RedirectToAction("Index", "SettlementContract");
        }

像那樣設置 controller 保存方法是行不通的。 您需要密切關注我的示例底部引用的 Kendo 示例。

我相信您的網格配置設置看起來不錯。 您的 controller 方法需要更新為類似於以下內容:

        [AcceptVerbs("Post")]
        public ActionResult Save([DataSourceRequest] DataSourceRequest request, M20_AEK.Models.ContractSettlement model)
        {
            if (model != null && ModelState.IsValid)
            {
                //save logic here
            }            

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

現在,根據您的評論和 controller 邏輯,您似乎希望在成功保存后重定向到某個操作。 目前尚不清楚這是網格所在的同一視圖還是不同的視圖。 如果它是網格所在的同一視圖,則您不需要這樣做,因為網格將使用保存的值進行更新。 如果您絕對必須這樣做,而不是在 Save 方法中從 controller 重定向到該操作,您可以掛鈎網格的 Save 事件,並且在成功保存后,您可以將 window.location 設置為適當的 url .

Kendo 示例參考: https://demos.telerik.com/as.net-core/grid/editing-inline他們最近更新了他們的網站,所以一旦你 go 到這個鏈接,點擊“查看源代碼”按鈕,然后你可以選擇各種按鈕來查看cshtml/controller/等。

暫無
暫無

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

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