【问题标题】:Change style of jqGrid改变 jqGrid 的样式
【发布时间】:2010-11-27 18:39:07
【问题描述】:

我正在使用jqGrid 3.5。我可以使用 jQuery 或自定义 CSS 或其他方式更改网格的样式和外观并使其更漂亮吗?

【问题讨论】:

    标签: javascript jquery css jqgrid


    【解决方案1】:

    jqGrid 3.5 的一大特点是与 jQuery UI 主题的集成。您可以从here 构建和/或选择主题。然后在您的页面中添加对它的引用:

    <link rel="stylesheet" type="text/css" href="../css/redmond/jquery-ui-1.7.2.custom.css"/>
    

    这将使您以最少的努力获得一个看起来非常好的网格。

    这是否解决了您的问题,或者您是否需要对网格外观进行更多检查?

    【讨论】:

    • 是的,这是一个非常酷的工具,但它有一定的局限性,你不能从那里解决任何样式问题。
    • 同意,但它比使用 jqGrid 的开箱即用要好得多。 jQuery 主题是否足够好,或者您是否必须推出自己的 CSS,这取决于您的需求。
    • 如果我想在按下添加或更新按钮时更改JQGrid的添加表单的css怎么办?
    • 我可能会问一个问题:stackoverflow.com/questions/11928974/…
    【解决方案2】:

    您需要更改网格标题(即时)。

    这是我的代码

    HTML:

    <table id="jqgrid_ctrs" class="scroll" cellpadding="0" cellspacing="0"></table>
    <div id="jqgrid_ctrs_pager" class="scroll" style="text-align:center;"></div>
    

    jqGrid:

        jQuery("#jqgrid_ctrs").jqGrid({
            url:'php-modules/controllers_data.php?ctrtype=LED',
            datatype: "json",
            width:500,
            height:"auto",
            colNames:['CtrName','Type', 'Description', 'Location'],
            colModel:[
               {name:'CtrName',index:'CTRNAME', width:70, editable:false},
               {name:'Type',index:'CTRTYPE', width:70, editable:false},
               {name:'Description',index:'CTRDESCR', width:250, editable:false},
               {name:'Location',index:'CTRLOCATION', width:70, editable:false}
            ],
            rowNum:10,
            rowList:[10,20,30],
            pager: jQuery('#jqgrid_ctrs_pager'),
            sortname: 'CtrName',
            viewrecords: true,
            sortorder: 'desc',
            caption:'System Controllers',
    
        }).navGrid('#jqgrid_ctrs_pager',
                    {search:true,edit:false,add:false,del:false}
                  );
    

    为了了解我必须在哪个对象中工作,让我们检查一下 JavaScript 代码生成的 HTML 代码:

    <div id="gview_jqgrid_ctrs" class="ui-jqgrid-view" style="width: 760px;">
        <div class="ui-jqgrid-titlebar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix"></div>
        <div class="ui-state-default ui-jqgrid-hdiv" style="width: 760px;">
    

    ...

    现在,唯一指定了 ID 的 div 是

    这就是为什么以下方法不起作用。

    jQuery("#jqgrid_ctrs").removeClass('.ui-widget-header');
    jQuery("#jqgrid_ctrs").addClass('.jqgrid-header');
    

    我必须选择父 div 并“搜索”标题 div,并指定“ui-jqgrid-titlebar”类。然后我删除了原来的“ui-widget-header”类并替换为我自己的类。

    $("#gview_jqgrid_ctrs .ui-jqgrid-titlebar").removeClass('ui-widget-header');
    $("#gview_jqgrid_ctrs .ui-jqgrid-titlebar").addClass('jqgrid-header');
    

    其中 .jqgrid-header 就是这样定义的样式。

    .jqgrid-header { 
        background:#FF9C00 url(images/new_header_bck.png) repeat-x scroll 50% 50%;
        border:1px solid #4297D7;
        color:#FF0000;
        font-weight:bold;
      }
    

    我已经对此进行了测试并且可以正常工作。希望这会有用...

    【讨论】:

    • 如果我想在按下添加或更新按钮时更改JQGrid的添加表单的css怎么办?
    • 只是为了优化,这可以在单个选择器中完成:$("#gview_jqgrid_ctrs .ui-jqgrid-titlebar").toggleClass("ui-widget-header jqgrid-header");
    【解决方案3】:

    详细说明 Justin Ethier 所说的话...

    由于 jqGrid 使用 Jquery-UI 主题,因此更改网格外观的最佳方法是自定义 theme

    我强烈建议您在事后尝试修改 css 之前先看看这是否适合您……尽管您也可以这样做,如果 jquery-ui 主题外观对您来说太局限的话。

    【讨论】:

    • 如果我想在按下添加或更新按钮时更改JQGrid的添加表单的css怎么办?
    【解决方案4】:

    我相信你可以。

    你有两个选择:

    您可以修改网格的 CSS。 如果必须对设计进行小的修改,这很有用。 不应以这种方式进行主要修改,因为 JQGrid 的 CSS 类确实相互依赖。

    或者您可以从 HTML 中删除所有样式并用您自己的样式替换它。

    例如,您有一个 JQGrid,例如:

    HTML

    <table id="list2" class="scroll" cellpadding="0" cellspacing="0"></table> 
    <div id="pager2" class="scroll" style="text-align:center;"></div>
    

    jQuery

    jQuery("#list2").jqGrid({ url:'server.php?q=2', 
     datatype: "json", 
     colNames:['Inv No','Date'],
     colModel:[ {name:'id',index:'id', width:55},{name:'invdate',index:'invdate',width:90}],
     rowNum:10, 
     rowList:[10,20,30],
     pager: jQuery('#pager2'), 
     sortname: 'id', 
     viewrecords: true, 
     caption:"JSON Example" }).navGrid('#pager2',{edit:false,add:false,del:false}); 
    

    这将生成如下所示的 HTML:

    <div class="ui-jqgrid-titlebar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix">
    
    ..
    
    </div>
    

    删除所有 CSS 类:

    JQuery("#list2").removeClass(".ui-jqgrid-titlebar");
    

    等等

    创建自己的类后,您可以添加到 HTML 结构中:

    JQuery("#list2").addClass(".YourClass");
    

    我建议同时使用这两种技术。

    【讨论】:

    • 如果我想在按下添加或更新按钮时更改JQGrid的添加表单的css怎么办?
    【解决方案5】:
    /* Remove jquery-ui styles from jqgrid */
    function removeJqgridUiStyles(){
        $(".ui-jqgrid").removeClass("ui-widget ui-widget-content");
        $(".ui-jqgrid-view").children().removeClass("ui-widget-header ui-state-default");
        $(".ui-jqgrid-labels, .ui-search-toolbar").children().removeClass("ui-state-default ui-th-column ui-th-ltr");
        $(".ui-jqgrid-pager").removeClass("ui-state-default");
    }
    

    【讨论】:

      【解决方案6】:

      您可以删除所有 ui-grid 类:

      $("[class^='ui-jqgrid']").removeAttr('class');
      

      如果您的网格尺寸很大,这可能会导致性能问题。

      【讨论】:

        【解决方案7】:

        我以一种新的方式修改了 jQGrid 的 css,这也将支持引导程序设计。您需要以下内容来配置此 jQGrid

        1) 超棒的字体样式

        2) jQGrid 最新包

        新设计的 jQGrid 如下图所示

        http://www.techdoubts.net/2015/11/working-jqgrid-responsive-css-boostrap.html 此处包含新的完整 CSS 和完整 javascripts 编码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-04-25
          • 2019-05-13
          • 1970-01-01
          • 2015-01-05
          相关资源
          最近更新 更多