Jquery JQGrid - How to set alignment of grid header cells?

前端 未结 7 1906
面向向阳花
面向向阳花 2020-11-30 03:25

Is it possible to align grid column headers in jqgrid? eg align left right or center?

In the jqrid documents http://www.trirand.com/jqgridwiki/doku.php?id=wiki:colm

相关标签:
7条回答
  • 2020-11-30 03:47

    If the format of your jqGrid table is colModel: [{name: 'ColumnName', index: 'ColumnIndex',...}], then just add the parameter align: 'center' in order to align it centered.

    For more details, see other functionalities possible on jqGrid.

    0 讨论(0)
  • 2020-11-30 03:56

    see the source to find out the css that your grid refer to and then you can try this:

    setTimeout(function(){
       jQuery('.ui-th-column').css('text-align','center');
    },1);
    
    0 讨论(0)
  • The best documented way to change column header alignment is the usage of setLabel method of jqGrid (see http://www.trirand.com/jqgridwiki/doku.php?id=wiki:methods).

    You can change alignment of the column identified by 'name': 'Name' with the following code:

    grid.jqGrid ('setLabel', 'Name', '', {'text-align':'right'});
    

    With the code

    grid.jqGrid ('setLabel', 'Name', 'Product Name', {'text-align':'right'},
                 {'title':'My ToolTip for the product name column header'});
    

    you can change the header name to 'Product Name' and set 'My ToolTip for the product name column header' as a tool tip for the corresponding column header.

    You can also define some classes in your CSS and set it for the column headers also with respect of setLabel method.

    By the way the name of the function 'setLabel' is choosed because you can not define colNames parameter of the jqGrid, but use additional 'label' option in the colModel to define a column header other as the 'name' value.

    UPDATED: You can do able to use classes to define 'text-align' or 'padding'. Just try following

    .textalignright { text-align:right !important; }
    .textalignleft { text-align:left  !important; }
    .textalignright div { padding-right: 5px; }
    .textalignleft div { padding-left: 5px; }
    

    and

    grid.jqGrid ('setLabel', 'Name', '', 'textalignright');
    grid.jqGrid ('setLabel', 'Description', '', 'textalignleft');
    

    (I defined 5px as the padding to see results better. You can choose the padding value which you will find better in your case).

    0 讨论(0)
  • 2020-11-30 03:59

    Please try this

    loadBeforeSend: function () {
        $(this).closest("div.ui-jqgrid-view").find("table.ui-jqgrid-htable>thead>tr>th").css("text-align", "left");
    }
    
    0 讨论(0)
  • 2020-11-30 04:00

    Just go to your css file of your jqgrid.

    Look for:

    ui-th-column,.ui-jqgrid .ui-jqgrid-htable th.ui-th-column
    {overflow:hidden;white-space:nowrap;text-align:center; ...
    

    And change the text-align.

    I didn't find it eather with regular options.

    I hope this will help you.

    Bruno

    0 讨论(0)
  • 2020-11-30 04:03

    While using the 'setLabel' method seems feasible, I always want to have my header-cells aligned the same way as the cells. So I just use this function:

    function pimpHeader(gridObj) {
        var cm = gridObj.jqGrid("getGridParam", "colModel");
        for (var i=0;i<cm.length;i++) {
            gridObj.jqGrid('setLabel', cm[i].name, '', 
                {'text-align': (cm[i].align || 'left')}, 
                (cm[i].titletext ? {'title': cm[i].titletext} : {}));
        }
    }
    

    This uses the alignment of the cells to align the header. To be called like this:

    pimpHeader(jQuery("#grid"));
    

    If you want, you can extend your Column-Model with 'titletext', which is shown as a tooltip-header, like so:

    colModel: [{ name: 'name', label: 'Name', align: 'right', titletext: 'Name-Tooltip'}, ...]
    
    0 讨论(0)
提交回复
热议问题