Asp.net-Mvc-3

Kendo Grid,顯示帶有客戶端模板的列表

  • August 8, 2016

我正在嘗試使用客戶端模板中的 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,但是一旦我進入循環,它就會拋出一個雙六並放棄。AssetSubType 是 ViewModel 的 IEnumerable。

我已經進行了任何排序、過濾等操作。我也是劍道新手。

非常感謝任何幫助…

我遇到了同樣的問題,並通過以下方式解決了它:

首先添加一個新腳本並在其中移動 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)#");

您還可以在 PersonnelIndexViewModel 類中添加一個新欄位,並在控制器中準備要在伺服器端顯示的字元串。

控制器:

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

看法:

columns.Bound(o => o.AssetSubTypeString);

引用自:https://stackoverflow.com/questions/17009974