Я пытался сделать атрибуты спецификации в nopCommerce редактируемыми встроенными, используя сетку кендо.
Если вы не новичок, просто подумайте о существующей сетке редактирования кендо, в которой есть один нередактируемый столбец, и я хочу сделать этот столбец редактируемым с помощью раскрывающихся списков. Из-за характера данных, которые я редактирую, параметры раскрывающегося списка будут разными для каждой строки.
Текущее состояние заключается в том, что столбец отображается правильно, когда он не находится в режиме редактирования. В режиме редактирования отображаются правильные значения, но никакое значение никогда не выбирается. Обновление, кажется, не отправляется обратно на сервер, а иногда (в зависимости от того, что я пытаюсь) вызывает ошибки javascript глубоко внутри кендо.
Я почти ничего не знаю о кендо, и мне нужно обновить это раскрывающееся меню. Ниже приведены некоторые фрагменты кода (все это слишком длинно):
grid = $("#specificationattributes-grid").kendoGrid({
dataSource: {
type: "json",
transport: {
read: {
url: "@Html.Raw(Url.Action("ProductSpecAttrList", "Product", new { productId = Model.Id }))",
type: "POST",
dataType: "json"
},
update: {
url: "@Html.Raw(Url.Action("ProductSpecAttrUpdate", "Product"))",
type: "POST",
dataType: "json"
},
destroy: {
url: "@Html.Raw(Url.Action("ProductSpecAttrDelete", "Product"))",
type: "POST",
dataType: "json"
}
},
schema: {
data: "Data",
total: "Total",
errors: "Errors",
model: {
id: "Id",
fields: {
//ProductId: { editable: false, type: "number" },
SpecificationAttributeName: { editable: false, type: "string" },
SpecificationAttributeOptionId: { editable: true, type: "number" },
CustomValue: { editable: true, type: "string" },
AllowFiltering: { editable: true, type: "boolean" },
ShowOnProductPage: { editable: true, type: "boolean" },
DisplayOrder: { editable: true, type: "number" },
Id: { editable: false, type: "number" }
}
}
},
.......................
columns: [{
field: "SpecificationAttributeName",
title: "@T("Admin.Catalog.Products.SpecificationAttributes.Fields.SpecificationAttribute")",
width: 200
}, {
field: "SpecificationAttributeOptionId",
title: "@T("Admin.Catalog.Products.SpecificationAttributes.Fields.SpecificationAttributeOption")",
width: 200,
editor: renderDropDown, template: "#= getOptionValue(SpecificationAttributeName, SpecificationAttributeOptionId) #"
},
Метод getOptionValue не включен, но в основном преобразует значение в удобную для отображения метку, когда оно не находится в режиме редактирования. «renderDropDown» создает kendoDropDownList, содержащий правильные параметры для текущей строки.