2017-08-10 1 views
0

私はKendoGrid列Listを持っています。それは文字列のリストであり、それを反復して単純なテンプレートを使用するJS関数です。ツールバーのボタンをクリックすると、エラー:Listが定義されていないというメッセージが表示されます。しかし、コラムはボタンとは何の関係もなく、決して接続されていません。ClientTemplateの列は定義されていません

剣道列+ボタン

//..rest of the grid 
columns.Bound(od => od.List).Width(150).ClientTemplate("#=generateTemplate(List)#"); 
.ToolBar(toolbar => toolbar.Create().Text("Add")) 
.... 

私のJS機能

function generateTemplate(List) { 
    var template = "<ul>"; 
    for (var i = 0; i < List.length; i++) { 
    template = template + "<li>" + List[i] + "</li>"; 
     } 
    return template + "</ul>"; 
    } 

マイモデル

[Display(Name ="List")] 
    public List<string> List { get; set; } 

答えて

0

問題は、リストプロパティのinitialisationのシンプルなものです。

追加ボタンをクリックすると、グリッドは指定した定義に基づいて新しいモデルを設定します。したがって、プロパティが定義されていない場合は、standardプロパティでない場合は、デフォルトで(メモリから)nullになります。文字列、数値、日時などを指定します。

addをクリックすると、テンプレートをリストプロパティに適用しようとします。例えば。 new List次に値はnullになります。リストがnullまたはundefinedであるかどうかをテストするためにjavascript関数にチェックを入れていないので、エラーが発生します。サイドノートとして

function generateTemplate(List) { 
    var template = "<ul>"; 
    if (list === null || list === undefined) { 
    template = template + "<li>N/A</li>"; 
    } else { 
    for (var i = 0; i < List.length; i++) { 
     template = template + "<li>" + List[i] + "</li>"; 
    } 
    } 
    return template + "</ul>"; 
} 

あなたは、彼らがに起因しているボタンと列が接続されていないと述べているものの:

は、だから私は何かのようなので、あなたのjs内のヌル値を持つリストのチェックを適用することをお勧めモデルを初期化して現在の行にバインドするときにグリッドが使用するMVVMフレームワーク。

問題があれば教えてください。私はそれに応じて回答を更新します。

+0

あなたのバージョンとデフォルト値を追加して解決しました。ありがとう! –

+0

うれしかったです。私は過去に何度もこの事件を犯した。 –

関連する問題