How do I customize the Add button in jqGrid?

前端 未结 1 1778
暖寄归人
暖寄归人 2020-12-03 02:24

I have a jqGrid and when I do a seach I get a small dialog. There is a Add button at the top which has a \"+\" sign to add rows for advanced searching. Is it possible to cha

相关标签:
1条回答
  • 2020-12-03 02:59

    The method navGrid has some parameters which can be used to change the look of navigator buttons. I used additionally toppager: true option of jqGrid and cloneToTop: true option of navGrid for the case that one uses top pager. If one just create the navigator buttons with respect of the call

    $grid.jqGrid('navGrid', '#pager', {
        cloneToTop: true,
        view: true,
        add: true,
        edit: true,
        addtext: 'Add',
        edittext: 'Edit',
        deltext: 'Delete',
        searchtext: 'Search',
        refreshtext: 'Reload',
        viewtext: 'View'
    });
    

    one will see the results like

    enter image description here

    I used rowNum: 2 for the tests only to reduce the height of the pictures.

    If I correct understand you, you want to have pure text buttons. To remove the icons from the buttons one can execute the following additional lines

    var pagerId = 'pager', gridId = $.jgrid.jqID($grid[0].id);
    $('#' + pagerId).find('.navtable span.ui-icon').remove();
    $('#' + gridId + '_toppager').find('.navtable span.ui-icon').remove();
    

    The gridId will be set to 'list'. One need to use $.jgrid.jqID if the grid id could contain meta-characters. The results will be

    enter image description here

    Next step will be to fix right and left the padding or margin of the buttons to show the texts better:

    .ui-jqgrid .ui-jqgrid-pager .navtable .ui-pg-div,
    .ui-jqgrid .ui-jqgrid-toppager .navtable .ui-pg-div {
        padding-right: 3px;
        padding-left: 3px;
    }
    

    The results will be improved to the following

    enter image description here

    Now we need fix the position of the pager. We can do this with respect of

    $('#' + pagerId + '_left').width($('#' + pagerId + ' .navtable').width());
    $('#' + gridId + '_toppager_left').width($('#' + gridId + '_toppager .navtable').width());
    $('#' + pagerId + '_center')[0].style.width='';
    $('#' + gridId + '_toppager_center')[0].style.width='';
    

    and have the following results

    enter image description here

    or remove additionally unused right part of the pager with

    $('#' + pagerId + '_right').remove();
    $('#' + gridId + '_toppager_right').remove();
    

    which places the pager in the middle of the rest place on the pager:

    enter image description here

    In my opinion it's mostly the matter of taste which look is better. You can see the resulting demo here.

    Alternatively you can do use icons over the text, but place the text under the icons. You can see details in the demo which produces the following results:

    enter image description here

    UPDATED: To customize the "Add rule" or "Add group" buttons you can use afterRedraw option:

    afterRedraw: function () {
        $('input.add-rule',this).val('Add new rule');
        $('input.add-group',this).val('Add new rule group');
    }
    

    The demo which use the option produce the searching dialog like the following:

    enter image description here

    (the button "Add group" exist if multipleGroup: true are used and the "Add rule" button exist if multipleSearch: true are used).

    UPDATED 2: One can improve the visibility of the searching dialog if one would use jQuery UI Buttons:

    afterRedraw: function () {
        $('input.add-rule',this).val('Add new rule').button();
        $('input.add-group',this).val('Add new group or rules').button();
        $('input.delete-rule',this).val('Delete rule').button();
        $('input.delete-group',this).val('Delete group').button();
    }
    

    The result dialog can be like the following

    enter image description here

    0 讨论(0)
提交回复
热议问题