我试图让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。
我已经取消任何排序,过滤等。我也是剑道新手。
非常感谢任何帮助...
答案 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);