2013-02-27 2 views
7

Ich möchte zwei Felder für die DataTextField -Eigenschaft der Kendo Autocomplete kombinieren.Wie kombiniert man zwei Felder für das dataTextField von Kendo UI Autocomplete?

Meine Datensuce hat ein FirstName-Feld und ein LastName-Feld.

schema: { 
      data: "d", 
      model: { 
       id: "PersonId", 
       fields: { 
        PersonId: { 
         type: "number", 
         editable: false // this field is not editable 
        }, 
        FirstName: { 
         type: "text", 
         validation: { // validation rules 
          required: true // the field is required 
         } 
        }, 
        LastName: { 
         type: "text", 
         validation: { // validation rules 
          required: true // the field is required 
         } 
        } 
       } 
      } 
     } 

Gibt es eine Möglichkeit, die Autocomplete zu konfigurieren, um Vorname + Nachname anzuzeigen?

Vielleicht muss ich stattdessen etwas mit der Datenquelle machen, und wenn das der Fall ist, kann jemand ein einfaches Beispiel geben?

Vielen Dank!

+0

FYI: Nur "string", "number", "boolean" und "date" sind gültige Werte für das Feld "type". http://docs.kendoui.com/api/framework/model#model.define –

Antwort

8

sollten Sie template verwenden:

zum Beispiel:

template:"The name is : #= FirstName # #=LastName #" 
+3

Dies ändert nur die Vorlage für die Dropdown-Listenelemente, es ändert nicht den Wert der Combobox, wenn ein Element ausgewählt ist. Wie machst du das? –

+0

Vorlage dient nur dazu, Daten anzuzeigen, nicht um sie zu binden. Sie können etwas wie [this] (http://jsfiddle.net/VGufY/39/) versuchen. Verwenden des dataBound-Ereignisses, um die Elemente an ihre Zeilen zu binden. Bitte beachten Sie, dass dies ein Leistungsverlust ist, da das gesamte Grid nach jeder Änderung neu gezeichnet wird. –

7

Verwendung von Vorlagen ist eine gültige Lösung. Wenn Sie jedoch immer ein zusammengesetztes oder berechnetes Feld in Ihrem Modell verfügbar haben möchten, können Sie in der Schemadefinition parse function definieren.

schema: { 
    data: "d", 
    model: { 
     id: "PersonId", 
     fields: { 
      PersonId: { 
       type: "number", 
       editable: false // this field is not editable 
      }, 
      FirstName: { 
       type: "string", 
       validation: { // validation rules 
        required: true // the field is required 
       } 
      }, 
      LastName: { 
       type: "string", 
       validation: { // validation rules 
        required: true // the field is required 
       } 
      }, 
      Name: { 
       type: "string" 
       // add any other requirements for your model here 
      } 
     } 
    }, 
    parse: function (response) { 
     var values = response.d, 
      n = values.length, 
      i = 0, 
      value; 
     for (; i < n; i++) { 
      value = values[i]; 
      value.Name = kendo.format("{0} {1}", 
       value.FirstName, 
       value.LastName); 
     } 

     return response; 
    } 
} 

Die Parsing-Funktion Pre-Prozesse der Server-Antwort, bevor es verwendet wird, so dass Sie vorhandene Felder ändern oder neue befestigen. Sie können dann direkt auf die Felder in allen Steuerelementen verweisen, die das Modell verwenden.