2016-11-02 7 views
0

Ich versuche Value oder SelectedIndex basierend auf der Datenquelle Rückkehr nach dem Lesen setzen.Kendo UI Dropdown-Liste Standardwert aus Daten

Das ist meine Ansicht

@(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")))

Verfahren GetUserList wie dieses

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

Jetzt GetDBUserList gibt eine Liste der Mitarbeiter

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

sieht

Ich möchte den Standardwert des Dropdown-Menüs basierend auf isdefault festlegen, wenn es 1 ist, irgendwelche Ideen?

Ich habe

versucht

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

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

Aber es hat nicht funktioniert.

+0

Hat Ihre Ansicht ein Modell? (Ie '@model MyModel' an der Spitze) –

Antwort

0

Ihre DropDownList ist an entfernte Daten gebunden. Sie können daher nicht versuchen, den Wert festzulegen, bis nach Ihre Leseaktion mit den Daten zurückgegeben wird.

Sie müssen also Ihren Code hinzufügen, um das Standardelement im DataBound-Ereignis der DropDownList auszuwählen, da bis zu diesem Zeitpunkt keine Daten ausgewählt werden müssen.

Aber Ihre Funktion versucht, den Wert auf dataItem.id zu setzen ... Ihr Modell hat kein ID-Feld ... es hat Wert, Text und isdefault.

Die DropDownList select() -Methode verwendet den jQuery-Selektor, einen Index oder eine Funktion, die einen booleschen Wert (http://docs.telerik.com/kendo-ui/api/javascript/ui/dropdownlist#methods-select) zurückgibt. Ihre Funktion gibt nichts zurück ... also würde nichts ausgewählt werden.

Versuchen Sie dies tun in der Databound-Ereignis des Dropdownlist:

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

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

Hier ist ein funktionierendes Beispiel: http://dojo.telerik.com/@Stephen/inUKI Es ist Javascript Initialisierung verwenden, aber Sie können die Databound-Ereignishandler Ihre Razor Initialisierung leicht hinzufügen.