7

クライアント テンプレートで for ループを使用して Kendo グリッドに値のリストを表示させようとしていますが、試してみるとグリッドがクラッシュし続けます。グリッドは次のとおりです。

@( Html.Kendo().Grid<ProjectXMVC3.ViewModel.PersonnelIndexViewModel>()
    .Name("Personnel")
    .Columns(columns =>
    {
        columns.Bound(o => o.AssetId).Hidden();
        columns.Bound(o => o.Num).Hidden();
        columns.Bound(o => o.Name).Width(150);
        columns.Bound(o => o.Email).Width(200);
        columns.Bound(o => o.AssetSubType).ClientTemplate("# var j = AssetSubType.length; for(var i = 0; i < j; i++){# #: AssetSubType[i] #  #}#"  );
        columns.Bound(o => o.DateBirth).Format("{0:d}").Width(100);
        columns.Bound(o => o.Country).Title("Nationality").Width(200);
        columns.Command(com => {
            com.Custom("Details").Click("onPersonSelected");
            com.Custom("Block").Click("onBlocked");
        });
    })
    .DataSource(d => d
        .Ajax()
        .Model(model => model.Id(p => p.AssetId))
        .Read(read => read.Action("Read_Personnel", "Personnel"))
    )

)

if ステートメントを使用して個別の AssetSubType を表示することはできますが、ループに入れるとすぐに 2 つの 6 がスローされ、あきらめます。AssetSubType は、ViewModel の IEnumerable です。

ソート、フィルタリングなどをすべて取り出しました。剣道も初めてです。

どんな援助も大歓迎です...

4

2 に答える 2

11

私は同じ問題を抱えていて、次のようなもので解決しました:

最初に新しいスクリプトを追加し、その中に for ループを移動します。

<script type="text/javascript">
    function printAssetSubType(AssetSubType) {
        var result = "";
        var j = AssetSubType.length; 
        for(var i = 0; i < j; i++) {
            result += AssetSubType[i];
        }
        return result;
    }
</script>

次に、列自体からこのスクリプトを参照します。

columns.Bound(o => o.AssetSubType).ClientTemplate("#=printAssetSubType(AssetSubType)#");
于 2013-07-09T10:09:09.280 に答える
0

PersonnelIndexViewModel クラスに新しいフィールドを追加し、コントローラーでサーバー側に表示する文字列を準備することもできます。

コントローラ:

myViewModel.AssetSubTypeString = String.Join(", ", myAssetSubTypes);

意見:

columns.Bound(o => o.AssetSubTypeString);
于 2016-08-08T17:41:51.417 に答える