Kendo.Grid Delete Acton не вызывает метод контроллера, хотя я делаю то же самое, что и в примере Telerik - PullRequest
0 голосов
/ 23 мая 2019

У меня есть следующее Kendo (). Grid ():

@(Html.Kendo().Grid<TicketReportPropertyEntity>()
    .Name("TicketReportPropertyGrid")
    .Columns(columns =>
    {
        columns.Bound(c => c.ID).Hidden();
        columns.Bound(c => c.PropertyName).Title("Property Name").EditorTemplateName("_PropertyNameEditor").Width(900);
        columns.Bound(c => c.Amount).Title("Amount").Format("{0:C}").Width(90);
        columns.Command(command => command.Destroy()).Width(150);
    })
    .Events(events => events.DataBound("Databound").SaveChanges("SaveGrid").Edit("Edit"))
    .ToolBar(toolbar =>
    {
        toolbar.Create();
        toolbar.Save();
    })
    .Editable(editable => editable.Mode(GridEditMode.InCell))
    .Navigatable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Batch(true)
        .ServerOperation(false)
        //.Events(events => events.Error("error_handler"))
        .Model(model =>
        {
            model.Id(c => c.ID);
            model.Field(c => c.PropertyName);
            model.Field(c => c.Amount);
        })
        .Create(create => create.Action("AddTicketReportProperty", "TicketReportProperty").Data("GetData"))
        .Read(read => read.Action("GetData", "TicketReportProperty", Model))
        .Update(update => update.Action("UpdateTicketReportProperty", "TicketReportProperty"))
        .Destroy(delete => delete.Action("DeleteTicketReportProperty", "TicketReportProperty"))
    )
)

И метод моего контроллера:

[HttpPost]
public ActionResult DeleteTicketReportProperty([DataSourceRequest] DataSourceRequest request, TicketReportPropertyModel model)
{
   var result = new TicketReportPropertyModel().DeleteTicketReportProperty(model.ID);

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

Вот функция "SaveGrid":

function SaveGrid(e) {
    console.log("save")
    var rowsCount = e.sender.dataSource.data().length;
    var totalSum = 0;
    if (rowsCount > 0) {
        for (var i = 0; i < rowsCount; i++) {
            totalSum += e.sender.dataSource.data()[i].Amount;
        }
    }
    var ticketAmount = $('#Ticket_Amount').val();
    console.log(ticketAmount);
    if (totalSum != ticketAmount) {
        console.log("failed");
        //show the popup
        e.preventDefault();
    }
}

Следует добавлять, обновлять и удалять записи.Сейчас я работаю над удалением записи.Но событие не вызывает контроллер.

Я следую примеру Telerik здесь

Чего мне не хватает?

1 Ответ

0 голосов
/ 24 мая 2019

Полагаю, вы не следуете в точности примеру Telerik.При создании сетки вы используете Entity TicketReportPropertyEntity , но в контроллере вы получаете Model TicketReportPropertyModel .
Убедитесь, что вы создаете свою Грид, используя Модель, а не Сущность, как пример, которому вы следуете.

@(Html.Kendo().Grid<TicketReportPropertyModel>()
...