2016-11-02 5 views
0

Я пытаюсь установить значение или SelectedIndex на основе возврата источника данных после чтения.Значение раскрывающегося списка Kendo UI по умолчанию из данных

Это мой взгляд

@(Html.Kendo().DropDownList. Name("ddlUsers"). DataTextField("text"). HtmlAttributes(New With {.style = "width:500px"}). DataValueField("id"). DataSource(Sub(s) s.Read(Sub(r) r.Action("GetUserList", "Employees") End Sub). ServerFiltering(True) End Sub).Events(Sub(e) e.Change("SetHiddenUGID")))

Метод GetUserList выглядит следующим образом

Shared Function GetUserList() As IList Return db.GetDBUserList().Where(Function(w) w.value <> 0).Select(Function(s) New With {.id = s.value,.text = s.text,.isdefault = s.isdefault}).ToList() End Function

Теперь GetDBUserList возвращает список сотрудников

Public Class Employees Public Property value As Int64 Public Property text As String Public Property isdefault As Int32 End Class

Я хочу установить значение по умолчанию выпадающего списка на основе isdefault, когда оно равно 1, любые идеи?

Я попытался

var dropdownlist = $("#ddlUsers").data("kendoDropDownList");

dropdownlist.select(function (dataItem) { if (dataItem.isdefault === 1) { $("#ddlUsers").data("kendoDropDownList").value(dataItem.id); } });

Но это не сработало.

+0

Есть ли у вашей модели модель? (Т.е. '@model MyModel' вверху) –

ответ

0

Ваш DropDownList привязан к удаленным данным, поэтому вы не можете попытаться установить значение до после ваше действие чтения возвращается с данными.

Итак, вы должны добавить свой код, чтобы выбрать элемент по умолчанию в событии dataBound DropDownList, так как нет данных для выбора до этой точки.

Но ваша функция пытается установить значение dataItem.id ... ваша модель не имеет поля id ... она имеет значение, текст и isdefault.

Кроме того, метод select() DropDownList принимает селектор jQuery, индекс или функцию, возвращающую логическое значение (http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#methods-select). Ваша функция ничего не возвращает ... так что это не приведет к тому, что ничего не будет выбрано.

Попробуйте сделать это в случае DataBound в DropDownList:

dataBound: function(e) { 
    var data = e.sender.dataSource.data(); 

    e.sender.select(function (dataItem) { 
     return (dataItem.isdefault === 1); 
    }); 
} 

Вот рабочий пример: http://dojo.telerik.com/@Stephen/inUKI Она использует инициализацию яваскрипта, но вы можете добавить обработчик событий DataBound к вашей инициализации Бритва легко.

 Смежные вопросы

  • Нет связанных вопросов^_^