Примечание: я проверил приведенный ниже пост, и он не может решить мою проблему
Сетка 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")
)