У меня есть DropDownList, его данные подгружаются динамически благодаря Project DropDownList. В событии DataBound я хочу изменить выбор первого значения с помощью JavaScript. Я использую для этого функцию SetDefValuesO
. Это работает, когда данные загружаются в список операций, функция автоматически выбирает первый элемент. Но когда я нажимаю, чтобы сохранить во встроенном редактировании строки сетки, запрос на обновление не содержит измененного значения. Это работает только тогда, когда я делаю это щелчком мыши.
Как это решить? Спасибо!
Сетка:
columns.Bound(work => work.Operation).ClientTemplate("#=Operation.Code#").Width(100);
.Model(model =>
{
model.Id(p => p.Id);
model.Field(p => p.Operation).DefaultValue(ViewData["defaultOperation"] as TT.Web.Models.ViewModel.OperationViewModel);
model.Field(p => p.Spp).DefaultValue(ViewData["defaultSpp"] as TT.Web.Models.ViewModel.SppViewModel);
model.Field(p => p.Project).DefaultValue(ViewData["defaultProject"] as TT.Web.Models.ViewModel.ProjectViewModel);
})
Шаблон редактора:
@(Html.Kendo().DropDownList()
.Name("Operation")
.OptionLabel("Vyberte výkon...")
.CascadeFrom("Project")
.DataValueField("Id")
.Events(ev => ev.DataBound("SetDefValuesO") )
.HtmlAttributes( new { requiredvalidationmessage = "required field", required = "required" })
.DataTextField("Code")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetCascadeOperations", "Home")
.Data("filterOperations");
}).ServerFiltering(true);
})
.Enable(false)
.AutoBind(false))
function SetDefValuesO(){
var OperationCount = $("#Operation").data("kendoDropDownList").dataSource._data.length;
console.log(OperationCount);
if(OperationCount == 1){
$("#Operation").data("kendoDropDownList").value($("#Operation").data("kendoDropDownList").dataSource._data[0].Id);
console.log($("#Operation").val());
}
РЕШЕНО:
function SetDefValuesO(){
var OperationCount = $("#Operation").data("kendoDropDownList").dataSource._data.length;
if(OperationCount == 1){
// $("#Operation").data("kendoDropDownList").select(1);
$("#Operation").data("kendoDropDownList").value($("#Operation").data("kendoDropDownList").dataSource._data[0].Id);
this.trigger("change"); // solution
}
}