2013-04-19 11 views

risposta

54

È necessario utilizzare il metodo Kendo DropDownList select (documentazione in here).

In sostanza si dovrebbe:

// get a reference to the dropdown list 
var dropdownlist = $("#Instrument").data("kendoDropDownList"); 

Se si conosce l'indice è possibile utilizzare:

// selects by index 
dropdownlist.select(1); 

In caso contrario, l'uso:

// selects item if its text is equal to "test" using predicate function 
dropdownlist.select(function(dataItem) { 
    return dataItem.symbol === "test"; 
}); 

JSFiddle esempio here

+0

selezionando per indice funziona bene ma la seconda soluzione non funziona. Ho provato alert (dataItem.text) nella funzione prima dell'istruzione return ma dice indefinito. – anilca

+0

Spiacente, ho già modificato la risposta, dovrebbe dire 'dataItem.symbol'. Vedi JS Fiddle http://jsfiddle.net/OnaBai/mRmNJ/ – OnaBai

+0

Grazie mille per la tua risposta! – anilca

3

Poiché questo è uno dei principali risultati di ricerca per domande relative a questo ho sentito che valeva la pena ricordare come si può fare questo lavoro con Kendo(). DropDownListFor() pure.

Tutto è uguale a quello di OnaBai, tranne per il modo in cui si seleziona l'elemento in base al testo e al selettore.

Per fare ciò è necessario sostituire dataItem.symbol per dataItem. [DataTextFieldName]. Qualunque campo di modello tu abbia usato per .DataTextField() è ciò a cui ti confronterai.

@(Html.Kendo().DropDownListFor(model => model.Status.StatusId) 
    .Name("Status.StatusId") 
    .DataTextField("StatusName") 
    .DataValueField("StatusId") 
    .BindTo(...) 
) 

//So that your ViewModel gets bound properly on the post, naming is a bit 
//different and as such you need to replace the periods with underscores 
var ddl = $('#Status_StatusId').data('kendoDropDownList');  

ddl.select(function(dataItem) { 
    return dataItem.StatusName === "Active"; 
}); 
0

E 'possibile "nativamente", selezionare per valore:

dropdownlist.select(1); 
17

il modo più semplice per farlo è:

$("#Instrument").data('kendoDropDownList').value("A value"); 

Ecco il JSFiddle example.

4

sembra che ci sia un modo più semplice, almeno in Kendo UI v2015.2.624:

$('#myDropDownSelector').data('kendoDropDownList').search('Text value to find'); 

Se non c'è una partita in discesa, Kendo appare per impostare la discesa per un valore non selezionato, che ha un senso.


non ho potuto ottenere @Gang's answer a lavorare, ma se si scambia il suo value con search, come sopra, siamo d'oro.

+0

Ho fatto un esempio e ha funzionato: http://jsfiddle.net/gangwu6/vjc39eLL/2/ Ho provato entrambi .search ('A value') e .value ("A value") entrambi hanno funzionato e non l'ho fatto vedere eventuali differenze. – Gang

+0

Non riesco a farlo funzionare quando i miei valori ddl contengono una virgola. Ad esempio, se il menu a tendina ha "Horseface, USA" e cerco "USA", non viene trovato nulla. – redwards510

+0

@ redwards510 Al momento non ho un progetto Kendo attivo, ma Iirc ** devi avere una corrispondenza * esatta * per 'ricerca' **. Funzione con un nome errato, sarei d'accordo. Per il tuo caso, dovresti scrivere la tua routine di ricerca usando i 'dati' grezzi, trovare una corrispondenza esatta [di nuovo, attraverso la tua routine di ricerca], quindi selezionare-tramite-funzione' ricerca 'la corrispondenza esatta che hai' ho trovato. Suona bene? – ruffin

Problemi correlati