如何更改w2ui网格列标题背景颜色

时间:2019-01-31 11:32:03

标签: w2ui

经过一些搜索,我发现可以更改w2grid列标题的背景颜色。我想做一张有工作/休息日以及其他信息的桌子。很高兴已经收到标题,知道哪一天是工作日,哪一天是休息

以下代码:

w2ui[ tab_grd[ 0 ] ].on( 'load', function( event ) 
{
  event.onComplete = function() 
  {
     prep_hdr()
  }
})

使用以下功能准备标题:

days = rsp.days
if ( Object.keys( days ).length > 0 )
{      
  for ( var u in days )
    {
      var col_id = 'd' + days[ u ].day
      var dat_tp = days[ u ].type
      var clr1   = 'white'
      var clr2   = ( dat_tp == 'W' ? '#66d9ff'  : ( dat_tp == 'R' ? '#80ffaa' : '#ff9980' ) )
      var col    = findElement( w2ui[ tab_grd[ 0 ] ].columns, "field", col_id )
      if ( col != -1 )
      {
        var idf = 'td[col="' + col + '"].w2ui-head'; 
        $( idf ).css( { background: 'linear-gradient( ' + clr1 +',' + clr2 + ' )' } )
      }
    }
  }

正在工作。

但是天数列是31 +总列数+其他一些列,它们不会同时出现。如果水平向左/向右滚动-我的col标头的颜色消失。

正如我在w2grid.js源代码中看到的那样-滚动(事件)功能正在重新绘制网格,这就是为什么我的颜色消失的原因。

如何解决此问题?如何在col标头中保留我的颜色?

预先感谢

1 个答案:

答案 0 :(得分:0)

由于虚拟滚动而重新创建HTML元素确实很烦人。

您最好的选择是使用自己的滚动功能,将样式重新添加到列:

$(function () {
    $('#grid').w2grid({
        name: 'grid',
        columns: [
            { field: 'fname', caption: 'First Name', size: '300px' },
            { field: 'lname', caption: 'Last Name', size: '300px' },
            { field: 'dummy1', caption: 'Dummy 1', size: '300px' },
            { field: 'dummy2', caption: 'Dummy 2', size: '300px' },
            { field: 'sdate', caption: 'Dates', size: '300px' }
        ],
        "records": [
        { "recid": 1, "fname": "Joseph", "lname": "Haydn", "sdate": "1732-1809" },
        { "recid": 2, "fname": "Ludwig Van", "lname": "Beethoven", "sdate": "1770-1827" },
        { "recid": 3, "fname": "Wolfgang Amadeus", "lname": "Mozart", "sdate": "1756-1791" },
        { "recid": 4, "fname": "Johann Sebastian", "lname": "Bach", "sdate": "1685-1750" },
        ],
        onRender: function(event){
            event.done(setBgColors);
        },
    });

    w2ui.grid.scroll_bak = w2ui.grid.scroll;
    w2ui.grid.scroll = function(event){
        this.scroll_bak(event);
      setTimeout(setBgColors);
    };

    function setBgColors(){
        $("#grid_grid_column_0").addClass("bg_red");
      $("#grid_grid_column_4").addClass("bg_blue");
    }

});

提琴:http://jsfiddle.net/dt3yv2q4/2/

或者您可以禁用虚拟滚动,使对DOM元素的更改持久化:

$(function () {
    $('#grid').w2grid({
        name: 'grid',
        disableCVS: true,
        columns: [
            { field: 'fname', caption: 'First Name', size: '300px' },
            { field: 'lname', caption: 'Last Name', size: '300px' },
            { field: 'dummy1', caption: 'Dummy 1', size: '300px' },
            { field: 'dummy2', caption: 'Dummy 2', size: '300px' },
            { field: 'sdate', caption: 'Dates', size: '300px' }
        ],
        "records": [
        { "recid": 1, "fname": "Joseph", "lname": "Haydn", "sdate": "1732-1809" },
        { "recid": 2, "fname": "Ludwig Van", "lname": "Beethoven", "sdate": "1770-1827" },
        { "recid": 3, "fname": "Wolfgang Amadeus", "lname": "Mozart", "sdate": "1756-1791" },
        { "recid": 4, "fname": "Johann Sebastian", "lname": "Bach", "sdate": "1685-1750" },
        ],
        onRender: function(event){
            event.done(setBgColors);
        },
    });

    function setBgColors(){
        $("#grid_grid_column_0").addClass("bg_red");
      $("#grid_grid_column_4").addClass("bg_blue");
    }

});

提琴:http://jsfiddle.net/dt3yv2q4/3/