Встроенное редактирование с использованием динамических раскрывающихся списков в сетке кендо

Я пытался сделать атрибуты спецификации в 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, содержащий правильные параметры для текущей строки.


person David Cummins    schedule 07.07.2014    source источник


Ответы (1)


Если вы возвращаете идентификатор, пара значений, например

"{\"SpecificationAttributeOptionId\":\"0\",\"SpecificationAttributeName\":\"XYZ\"},
 {\"SpecificationAttributeOptionId\":\"1\",\"SpecificationAttributeName\":\"ABC\"}"

Затем нужно указать dataTextField, dataValueField. В противном случае, если вы вернете List из string следующим образом, вам не нужно указывать dataTextField, dataValueField и кендо позаботятся обо всем остальном.

"{\"SpecificationAttributeName\":\"XYZ\"},
 {\"SpecificationAttributeName\":\"ABC\"}"

Надеюсь это поможет.

$("#SpecificationAttributeOptionId").kendoDropDownList({
        dataTextField: "SpecificationAttributeName",
        dataValueField: "SpecificationAttributeOptionId",
        dataSource: {
            transport: {
                read: {
                    url: "/ControllerName/GetDropDownValueFunction",
                    type: "POST",
                    contentType: "application/json",
                    dataType: "json"
                }
            }
        },
        height: 100
    });
person Mahib    schedule 30.06.2015
comment
Махиб, не могли бы вы мне тоже помочь? а> - person JB's; 05.10.2017