2017-01-31 13 views
-1

私は剣道UI(telerik)を使用しています。辞書にあるデータソースをc#からjsにオブジェクトとして解析したいと考えています。オブジェクト値を取得してオートコンプリート入力に追加するにはどうすればよいですか?C#辞書でオートコンプリート

var availableCategories = JSON.parse(@(Html.Raw(Json.Encode(@Model.AvailableCategoriesJSON)))); 

$(document).ready(function() { 

var data=availableCategories; 

$("#categories").kendoAutoComplete({ 
     dataSource: data, 
     filter: "startswith", 
     placeholder: "Select category...", 
     separator: ", " 
    }); 

と入力::私はこのコードを持っている

<input id="categories" /> 
+0

JSONからデコードしますか?配列の構文で出力するだけです。 –

+0

カテゴリを選択した後、カテゴリIDを保存します。それはjsオブジェクトから簡単に実行できます。 – AndreiB

+0

あなたはどんな問題を抱えていますか?何がうまくいかない?あなたの 'AvailableCategoriesJSON'コンテンツを表示できますか? – DontVoteMeDown

答えて

1

を私は右のあなたを取得する場合、あなたのavailableCategoriesオブジェクトは、このようなものになります。

[{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"}, 
{"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}] 

しかし、あなたが言うことニートそれが動作するウィジェット。他のダミーのプロパティを作成することをおすすめします。 text

data.forEach(x => { 
    var k = Object.keys(x); 

    x.text = x[k[0]]; 
}); 

// Shorthand: 
data.forEach(x => x.text = x[Object.keys(x)[0]]); 

は、その後、あなたは、このオプションを追加します。

dataTextField: "text" 

結果:あなたはのviewmodelで利用可能なカテゴリを持っている場合は、なぜあなたはにエンコードする

var data = [{"0f8fad5b-d9cb-469f-a165-70867728950e": "category 1"}, 
      {"7c9e6679-7425-40de-944b-e07fc1f90ae7": "category 2"}]; 

data.forEach(x => x.text = x[Object.keys(x)[0]]); 

$("#categories").kendoAutoComplete({ 
     dataSource: data, 
     filter: "startswith", 
     placeholder: "Select category...", 
     separator: ", ", 
     dataTextField: "text", 
     select: function(e) { 
     console.log("Selected item", e.dataItem); 
     } 
}); 

​​