2016-10-19 15 views
1

ASP.NET MVCヘルパーを使用して構築された剣道グリッドがあります。グリッドはDataTableにバインドされています。グリッドをDataTableにバインドすると、剣道ヘルパーは、DataColumnColumnNameプロパティを使用して、列のタイトルとバッキングオブジェクトのフィールドプロパティを設定します。剣道グリッド(ASP.NET MVC) - DataTableバインドグリッドの列タイトルを設定します。

問題は、列名にスペースが含まれている必要がありますが、列名にこのような値を設定すると、フィールド名に有効なjavascriptではないスペースを入れることができないため、kendoはテンプレートエラーをスローします。識別子。私はDataColumnCaptionプロパティを設定しようとしましたが、それは動作していないようです。問題の大きな部分は、私のDataTableがSQLピボット操作の結果であるため、オンザフライで各列の名前を変更するJSマッパー関数を作成すること(またはその問題のハードコードされた値を使用する回避策)はオプションではありません。したがって、列名はすべて予測可能ではないため、事前にマッピングを行うことはできません。

剣道は、それぞれのバッキングフィールドの各列に異なるタイトルを使用するように指示するにはどうすればよいですか?

答えて

1

ビュー内のグリッド宣言の列を反復処理すると、カスタムタイトルを設定できます。私はそれについて考えていなかった理由を、この例をチェックして、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

を使用しああ、私は、感謝を知りません! –

関連する問題