Я работаю с NET веб-приложением, используя Telerik Kendo UI.
По шагам ..
- Сначала я готовлю представление с Kendo Grid, заполненным списком локальных моделей. Я дал пользователю возможность редактировать данные в сетке через режим редактирования InCell. Моя сетка настроена на
dataSource.Batch(true).ServerOperation(false)
, поэтому я просто работаю с шаблонами клиентов.
Моя сетка кендо выглядит следующим образом:
@(Html.Kendo().Grid(Model.Recipients)
.Name("NotificationRecipients")
.Columns(columns =>
{
columns.Bound(p => p.Id).Hidden(true);
columns.Bound(p => p.AmountToPay).Hidden(true).ClientTemplate("#= AmountToPay # <input type='hidden' name='Recipients[#= index(data)#].AmountToPay' value='#= AmountToPay#' />");
columns.Bound(p => p.Name).ClientTemplate("#= Name # <input type='hidden' name='Recipients[#= index(data)#].Name' value='#= Name #' />");
columns.Bound(p => p.Email).ClientTemplate("#= Email # <input type='hidden' name='Recipients[#= index(data)#].Email' value='#= Email#' />");
columns.Bound(p => p.ContractorId).Hidden(true).ClientTemplate("#= ContractorId # <input type='hidden' name='Recipients[#= index(data)#].ContractorId' value='#= ContractorId#' />");
columns.Bound(p => p.RecipientId).Hidden(true).ClientTemplate("#= RecipientId # <input type='hidden' name='Recipients[#= index(data)#].RecipientId' value='#= RecipientId#' />");
columns.Command(command =>
{
command.Custom("Preview").Click("NotificationPreview");
command.Destroy().Text("Delete");
});
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Sortable()
.Pageable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.PageSize(25)
.ServerOperation(false)
.Model(model =>
{
model.Id(m => m.Id);
}
)
)
)
@Html.ValidationMessageFor(x => x.Recipients)
Во-вторых, я сериализую все данные из формы
<form class="notification" enctype="multipart/form-data">
, чтобы передать отредактированную модель представления в контроллер. Это действие я выполняю следующим образом:
var form = $(".notification");
var formData = form.serializeArray();
var url = '@Url.Action("Action", "Controller")';
$.post(url, formData, function (data, status, xhr) {
});
Моя проблема заключается в том, что переданный formData
контроллеру содержит только 25 элементов из сетки, а не все из них.
Возможно это изображение также поможет визуализировать разницу между возвращаемыми значениями form.serializeArray()
и grid.dataSource.data()
.
, суммирующими
Есть ли способ сериализации всех элементов сетки Кендо? Или, может быть, получить элементы из сетки кендо следующим образом: grid.dataSource.data()
, а затем каким-то образом сериализовать их в форму, которая возвращает .serializeArray()
для объединения результатов?