Telerik Kendo Grid не отображает значение должным образом - PullRequest
0 голосов
/ 25 сентября 2019

Я новичок в пользовательском интерфейсе кендо и сейчас изучаю пользовательский редактор.Моя проблема в том, что мне удалось заставить мой шаблон редактора работать в режиме редактирования и заполнить данные очень хорошо, но каким-то образом он не сохранит значение в сетке дисплея

Я получаю все свои данные из API.

ОБНОВЛЕНИЕ: Мне удалось правильно сохранить значение из пользовательского шаблона редактора на контроллере, и оно работает просто отлично, но использование clientTemplate не будет отображать правильное значение из того, что явыберите в раскрывающемся списке и отобразите только строку

Только для DropDown Показать строку

мой установочный код похож на

@( Html.Kendo().Grid<SalesOrderDetailVM>()
            .Name("list-detail")
            .Columns(columns =>
            {
                columns.Bound(c => c.Product).ClientTemplate("\\#=Product.ProductId\\#").Title("Products");
                columns.Bound(c => c.Quantity);
                columns.Bound(c => c.UnitPrice);
            })
            .Editable(GridEditMode.InCell)
            .ToolBar(tool =>
            {
                tool.Create();
                tool.Save();
            }
            )
            .DataSource(dataSource => dataSource
                .Ajax()
                .ServerOperation(false)
                .Batch(true)
                .Model(model =>
                {
                    model.Id(p => p.ProductId);
                    model.Field(p => p.Product);
                })
                .Create(act => act.Action("DetailCell_Create","SalesOrder"))
            )
)

DDLProduct.cshtml:

@model AAF.WEB.MVC.ViewModels.ProductVM

@(
        Html.Kendo().DropDownListFor(m => m)
                        .DataValueField("ProductId")
                        .DataTextField("ProductName")
                        .OptionLabel("Select Product")
                        .BindTo((System.Collections.IEnumerable)ViewData["products"])
)

Режим редактирования Режим отображения / Режим редактирования продукта

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Хорошо, после того как я разочаровался в течение многих часов, наконец нашел решение

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

.Model(model =>
                {
                    model.Id(p => p.ProductId);
                    model.Field(p => p.Product).DefaultValue(
                            ViewData["defaultProduct"] as ProductVM
                        );
                })

и передать данные изконтроллер

// Function that get data from API

ViewData["products"] = products;
ViewData["defaultProduct"] = products.First();
0 голосов
/ 25 сентября 2019

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

GridForeignKey.cshtml - он должен быть помещен в общую папку или объект EditorTemplates @model

@(
 Html.Kendo().DropDownListFor(m => m)
        .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)

В вашей сетке кендо, пожалуйста, измените какниже

@( Html.Kendo().Grid<AAF.WEB.MVC.ViewModels.SalesOrderDetailVM>()
            .Name("list-detail")
            .Columns(columns =>
            {
                columns.Bound(c => c.Id)
               columns.ForeignKey(c => c.ProductId, (System.Collections.IEnumerable)ViewData["Products"], "ProductId", "ProductName").Title("Products");
                columns.Bound(c => c.Quantity);
                columns.Bound(c => c.UnitPrice);
            })
            .Editable(GridEditMode.InCell)
            .ToolBar(tool =>
            {
                tool.Create();
                tool.Save();
            }
            )
            .DataSource(dataSource => dataSource
                .Ajax()
                .ServerOperation(false)
            )
)

Вы можете настроить данные продуктов для просмотра данных.С помощью этого метода вы можете сохранить идентификатор продукта.

Спасибо

...