2016-10-19 3 views
1

У меня есть сетка кендо, которая создается с помощью помощников ASP.NET MVC. Сетка привязана к DataTable. Если я привяжу свою сетку к этому DataTable, хендер kendo использует свойство ColumnName каждого DataColumn, чтобы установить заголовок столбца и свойство поля объекта подложки.Kendo Grid (ASP.NET MVC) - Установить заголовки столбцов сетки с привязкой к DataTable

Проблема в том, что имена столбцов имеют и должны содержать пробелы, но если я задаю имя столбца для такого значения, kendo выдает ошибку шаблона, потому что имя поля не может содержать пробелы, поскольку это не будет действительным javascript идентификатор. Я попытался установить свойство CaptionDataColumn с, но это не работает. Большая часть проблемы заключается в том, что создание функции сопоставления JS, которая переименовывает каждый столбец «на лету» (или любой метод обхода с использованием жестко запрограммированных значений), не является вариантом, потому что мой DataTable является результатом операции сворачивания SQL , поэтому имена столбцов вовсе не предсказуемы, и поэтому сопоставление не может быть сделано заранее.

Как я могу сказать Kendo использовать разные заголовки для каждого столбца из соответствующих полей поддержки?

ответ

1

Если вы выполните итерацию столбцов в объявлении Grid в представлении, вы сможете установить пользовательские заголовки. Проверьте этот пример и использовать column.Title("...");

https://github.com/telerik/ui-for-aspnet-mvc-examples/blob/master/grid/binding-to-datatable/KendoUIMVC5/Views/Home/Index.cshtml

.Columns(columns => 
{ 
    foreach (System.Data.DataColumn column in Model.Columns) 
    { 
     var c = columns.Bound(column.ColumnName); 
     if (column.ColumnName == "UnitPrice") 
     { 
      c.ClientFooterTemplate("sum:#:sum#").ClientGroupFooterTemplate("sum:#:sum#"); 
     } 
     else if (column.ColumnName == "UnitsInStock") 
     { 
      c.ClientFooterTemplate("max:#:max#").ClientGroupFooterTemplate("avg:#:average#"); 
     } 
    } 
    columns.Command(cmd=>cmd.Edit()); 
}) 
+1

О, я не знаю, почему я не думал об этом, спасибо! –