2013-12-09 2 views
0

У меня есть стандартный DevExpress MVCxGridView, привязанный к DataTable, который представляет собой всего лишь кучу логических значений, причем первый столбец «SS» представляет собой строковый код, который является datakey. Я просматриваю все столбцы и динамически создаю столбцы gridview. Отображаемая сетка представляет собой набор флажков, которые могут быть настроены.Добавление атрибутов data- * в ячейку gridview DevExpress MVC

У меня есть jquery js-файл, для которого требуются атрибуты data- *, которые должны быть установлены для этих ячеек, чтобы ввести необходимые функции. Я хочу знать, как добавить атрибуты «data- *» в каждую из TD-ячеек. «data-ss» - это датадай в первом столбце, а «data-wm» - это рабочий режим в столбце.

Мой Бритва код вид выглядит следующим образом:

@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 нить.

Смежные вопросы