2013-12-09 65 views
0

我有一个绑定到DataTable的标准DevExpress MVCxGridView,它只是一堆布尔值,第一列“SS”是一个字符串代码,它是数据键。我遍历所有列并动态创建gridview列。显示的网格是一堆复选框,它们是可以配置的选项。将数据属性添加到DevExpress MVC gridview单元格

我有一个jquery js文件,需要为这些单元格设置data- *属性才能注入必要的功能。我想知道如何为每个TD单元添加“data- *”属性。 “data-ss”是第一列中的数据键,而“data-wm”是列中的工作模式。

我的Razor视图代码如下:

@model System.Data.DataTable 
@{ 
    var gv = Html.DevExpress().GridView(
     settings => 
     { 
      settings.Name = "gv"; 
      settings.Enabled = true; 
      settings.KeyFieldName = "SS"; 
      settings.CallbackRouteValues = new { Controller = "Test", Action = "DataBindingPartial" }; 
      settings.Settings.HorizontalScrollBarMode = ScrollBarMode.Auto; 
      settings.Settings.VerticalScrollBarMode = ScrollBarMode.Auto; 
      settings.Settings.VerticalScrollableHeight = 200; 
      settings.SettingsPager.Mode = DevExpress.Web.ASPxGridView.GridViewPagerMode.ShowAllRecords; 

      MVCxGridViewBandColumn currentBand = null; 

      foreach (System.Data.DataColumn c in Model.Columns) 
      { 
       if (c.ColumnName == "SS") 
       { 
        DevExpress.Web.ASPxGridView.GridViewColumn column = settings.Columns.Add(c.ColumnName); 
        column.Caption = "SS"; 
        column.CellStyle.CssClass = "ss_head"; 
        column.HeaderStyle.CssClass = "ss_head_caption"; 
        column.HeaderStyle.Cursor = "pointer"; 
       } 
       else 
       { 
        // Get Column Definition retreives information based on the column name 
        // definition.ActivityType = "act" if activity or "dg" if DataGathering 
        // definition.WorkMode = abbreviated name of activity 
        // definition.Description = long description of activity 
        var definition = 
         TestModel.DefinitionColumn.GetColumnDefinition(c.ColumnName); 

        if (currentBand == null || currentBand.Name != definition.ActivityType) 
        { 
         currentBand = settings.Columns.AddBand(); 

         currentBand.Name = definition.ActivityType; 
         currentBand.Caption = definition.ActivityType == "act" ? "Activity" : "Data Gathering"; 
         currentBand.HeaderStyle.CssClass = String.Format("workmode_col workmode_{0}", definition.ActivityType); 
        } 
        DevExpress.Web.ASPxGridView.GridViewColumn column =      
          currentBand.Columns.Add(c.ColumnName, MVCxGridViewColumnType.CheckBox); 
        column.Caption = definition.WorkMode; 
        column.ToolTip = definition.Description; 
        column.Visible = true; 
        column.HeaderStyle.Cursor = "pointer"; 
        column.CellStyle.CssClass = String.Format("workmode_{0} workmode_selectable workmode_col", definition.ActivityType); 
        column.HeaderStyle.CssClass = String.Format("workmode_{0} workmode_col", definition.ActivityType); 
        column.Width = 35; 
       } 
      } 
     }); 
    var gvBound = gv.Bind(Model); 
    gvBound.Render(); 
} 

谢谢米哈伊尔。

使用这个我可以添加一个设置的配置来设置数据 - *属性:

 settings.HtmlDataCellPrepared = (sender, e) => 
     { 
      e.Cell.Attributes.Add(
       "data-wm", 
       e.DataColumn.Caption 
      ); 
      e.Cell.Attributes.Add(
       "data-ssco", 
       e.KeyValue.ToString() 
      ); 
     }; 
+0

为什么不直接联系DevExpress支持? – Mikhail

回答

1

它可以使用GridViewSettings.HtmlDataCellPrepared事件来分配所需要的属性。检查this SO线程。

相关问题