【问题标题】:Add a class to "selected" column headers in SlickGrid将类添加到 SlickGrid 中的“选定”列标题
【发布时间】:2015-04-30 18:01:58
【问题描述】:

当在 SlickGrid 中选择一个单元格时,如何将一个类应用到它的列标题?

如果您查看 Excel 或 Google 文档,两者都会对标题单元格应用一种效果,以直观地指示选择了哪个单元格。我想将此效果添加到 SlickGrid,但我不确定如何。

【问题讨论】:

    标签: slickgrid


    【解决方案1】:

    headerCssClasscolumn option 将对单元格应用样式,但这需要重新呈现标题以应用更改。

    因此,主要关注的事件是onActiveCellChanged,如果适用,onColumnsReordered。我选择订阅onHeaderRowCellRendered,因为它也会在列重新排序后被调用。

    <html>
      
    <link rel="stylesheet" type="text/css" href="http://mleibman.github.io/SlickGrid/slick.grid.css">
    <link rel="stylesheet" href="http://mleibman.github.io/SlickGrid/examples/examples.css" type="text/css"/>
    <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
    <script src="http://code.jquery.com/ui/1.11.0/jquery-ui.min.js"></script>
    
    <script src="http://mleibman.github.io/SlickGrid/lib/jquery.event.drag-2.2.js"></script>
    <script src="http://mleibman.github.io/SlickGrid/slick.core.js"></script>
    <script src="http://mleibman.github.io/SlickGrid/slick.grid.js"></script>
    
    <style>
      .selected_header {
          background: #b8f8A8;
        }
    </style>
    
    <div id="myGrid" style="width:500px;height:100px;"></div>
    
    <script>
        
      var grid;
     var data = [];
     var columns = [
        {id: "server", name: "Server", field: "server", width: 180}
      ];
       
     for (var i = 0; i < 4; i++) {
        columns.push({
          id: "id" + i,
          name: "Id" + i,
          field: i
        });
      }
    
      var options = {
        editable: false,
        showHeaderRow: true,
        headerRowHeight: 30,
        enableCellNavigation: true
      };
    
      $(function () {
        for (var i = 0; i < 5; i++) {
          var d = (data[i] = {});
          d.server = "Server " + i;
          for (var j = 0; j < columns.length; j++) {
            d[j] = Math.round(Math.random() * 100);
          }
        }
    
        grid = new Slick.Grid("#myGrid", data, columns, options);
    
        grid.onActiveCellChanged.subscribe(function(e, args){
        
          var headerColumns =   $('.slick-header-columns').children();
         
          for(i = 0; i< headerColumns.length; ++i){
             $(headerColumns[i])[i == args.cell ? "addClass" : "removeClass" ]('selected_header')
          }
        })
        
        grid.onHeaderRowCellRendered.subscribe(function(e, args){
          
          if(grid.getActiveCell() ){
            var columnIndex =  grid.getActiveCell().cell
            var headers =   $('.slick-header-columns').children()
            
            if(headers.length < columnIndex){return;}
            
            $(headers[columnIndex]).addClass('selected_header')
          }
        })
      });
    
    </script>
    </html>

    【讨论】:

      猜你喜欢
      • 2012-02-14
      • 2013-04-02
      • 1970-01-01
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 1970-01-01
      相关资源
      最近更新 更多