Kendo Grid,显示带有客户端模板的列表

时间:2013-06-09 13:15:41

标签: asp.net-mvc-3 kendo-grid

我试图让Kendo网格在客户端模板中使用for循环显示值列表,除了它在我尝试时不断崩溃网格。网格如下:

@( 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但是只要我放入循环就会抛出一个双六并放弃。 AssetSubType是ViewModel的IEnumerable。

我已经取消任何排序,过滤等。我也是剑道新手。

非常感谢任何帮助...

2 个答案:

答案 0 :(得分:10)

我遇到了同样的问题,用这样的方法解决了这个问题:

首先添加一个新脚本并在其中移动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)#");

答案 1 :(得分:0)

您还可以在PersonnelIndexViewModel类中添加新字段,并在控制器中准备要在服务器端显示的字符串。

控制器:

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

查看:

columns.Bound(o => o.AssetSubTypeString);
相关问题