Как сделать столбец недоступным для редактирования (не только для чтения) в режиме редактирования и редактируемым в режиме создания сетки кендо - PullRequest
0 голосов
/ 27 ноября 2018

Примечание: я проверил приведенный ниже пост, и он не может решить мою проблему

Сетка Kendo UI - различные шаблоны для редактирования и создания

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

Примечание: столбец выпадающий во время добавления нового шаблона, и он будет обычным текстовым полем во время рендеринга.

Я попробовал приведенный ниже код

 function Onedit(e) {
        if (!e.model.isNew()) {
            var model = e.model; //reference to the model that is about the be edited

            var container = e.container; //reference to the editor container

            var categoryDropDownList = container.find("[data-role=dropdownlist]").data("kendoDropDownList"); //find widget element and then get the widget instance
            categoryDropDownList.enable(false);
        }

    }

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

То, что я хочу, это когда пользователь нажимает кнопку редактирования в строке сетки, он не позволяет пользователю редактировать этот конкретный столбец, и значение этого столбца должно быть строкой, которая не должна выглядеть как выпадающий только для чтения

Код генерирования сетки ниже

  @(Html.Kendo().Grid<ViewModel.TemporaryItems>()
   .Name("AccessGrid")
       .Columns(columns =>
       {
           columns.Bound(p => p.Partner).Title("Partner").Width("20%").EditorTemplateName("EditorTemporaryPartnerInfo").EditorViewData(new { TemporaryPartnersList = @Model.TemporaryPartners });
           columns.Bound(p => p.UPN).Title("UPN").Width("20%");
           columns.Bound(p => p.FullName).Title("Name").Width("20%");
           columns.Bound(p => p.Access).Title("Access").Width("20%");
           columns.Command(command => { command.Edit(); }).Width("10%");
       })

    .ToolBar(toolbar => toolbar.Create())
    .Editable(editable => editable.Mode(GridEditMode.InLine))
    .Sortable()
    .Scrollable(scrollable => scrollable.Virtual(true).Height(400))
    .DataSource(dataSource => dataSource
                        .Ajax()
                        .Sort(a => a.Add(b => b.FullName).Descending())
                        .PageSize(100)
                            .Model(model =>
                            {
                                model.Id(p => p.UPN);
                                model.Field(p => p.FullName).Editable(false);
                                model.Field(p => p.UPN).Editable(false);
                            })
                        .Events(events => events.Error("error_handler"))
                                                    .Create(update => update.Action("Action1", "Controller1", new { id = ViewBag.PartnerKey }))
                                                    .Read(read => read.Action("Action2", "Controller1"))
                                            .Update(update => update.Action("Action3", "Controller1", new { id = ViewBag.PartnerKey }))
                        )
     .Events(events => events.DataBound("onDataBound"))
     .Events(e => e.Edit("Onedit"))
     .Pageable(p => p.Refresh(true).PreviousNext(false).Numeric(false))

        )

Поле Partner представляет собой строковый тип данных

Мой шаблон редактора добавлен ниже

@(
 Html.Kendo().DropDownList()
    .Name("Type")
         .DataTextField("Text")
        .DataValueField("Value")
    .OptionLabel("---Select Partner---")
    .HtmlAttributes(new { data_value_primitive = "true" })
            .BindTo(ViewBag.TemporaryPartnersList)
              .Value("1")
)
...