2015-05-13 39 views
0

的jqGrid并允许使用浏览器的主体元素水平滚动条,如果它的属性如何使用身体水平滚动条中的jqGrid免费从GitHub

 autowidth: true, 
     shrinkToFit: false, 

使用。

要重现,下面开放页中铬(从样品中How to remove free jqgrid own horizontal scrollbar if autowidth:true is used创建)。

Body元素水平滚动条是不可用的:它不允许滚动到最右边的列中。

如何解决这个问题,使浏览器的身体滚动条可以正常使用的jqGrid和自己的水平滚动条不显示?

我试图删除

if (window.innerWidth > document.documentElement.clientWidth) { 
    $grid.jqGrid("setGridWidth", 
     $grid.jqGrid("getGridParam", "width") - 
     (window.innerWidth - document.documentElement.clientWidth)); 
} 

,但问题仍然存在。

如果网格被包裹到<div id="outerDiv" style="margin:5px;">水平滚动条将出现网格调整为最小宽度和回最大宽度仅后。但是,它仍然不允许滚动到最右边的列。

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>https://stackoverflow.com/q/30199868/315935</title> 
    <meta name="author" content="Oleg Kiriljuk"> 
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/themes/redmond/jquery-ui.css"> 
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="http://netdna.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"> 
    <link rel="stylesheet" href="http://rawgit.com/free-jqgrid/jqGrid/master/css/ui.jqgrid.css"> 
    <link rel="stylesheet" href="http://cdn.jsdelivr.net/free-jqgrid/4.8.0/plugins/ui.multiselect.css"> 
    <style> 

     .ui-jqgrid .ui-pg-table .ui-pg-button.ui-state-active { margin: 1px; font-weight: normal; } 


div > span.ui-pg-button-icon-over-text.fa { 
    font-size: 32px; 
} 

.ui-jqgrid > .ui-jqgrid-pager .navtable, 
.ui-jqgrid > .ui-jqgrid-view > .ui-jqgrid-toppager .navtable { 
    font-size: 13px; 
} 

.ui-pg-button-text { 
    margin: 4px !important; 
} 

.ui-jqgrid .ui-jqgrid-htable th { 
    font-size: 1.2em; 
} 

.jqgrow .ui-jqgrid-actions > .ui-pg-div > span { 
    font-size: 22px; 
} 

.ui-jqgrid td input[type=date], input[type=time], input[type=datetime-local], input[type=month] { 
    line-height: normal; 
} 
    </style> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> 
    <script src="http://cdn.jsdelivr.net/free-jqgrid/4.8.0/js/i18n/grid.locale-en.js"></script> 
    <script> 
     $.jgrid = $.jgrid || {}; 
     $.jgrid.no_legacy_api = true; 
     $.jgrid.useJSON = true; 
    </script> 
    <!--<script src="../jqGrid/js/jquery.jqGrid.src.js"></script>--> 
    <script src="http://cdn.jsdelivr.net/free-jqgrid/4.8.0/js/jquery.jqgrid.src.js"></script> 
    <script src="http://rawgit.com/free-jqgrid/jqGrid/master/js/jquery.jqgrid.src.js"></script> 
    <script> 
    //<![CDATA[ 
    /*global $ */ 
    /*jslint browser: true */ 
    $(function() { 
     "use strict"; 
     var mydata = [ 
       { id: "10", invdate: "2007-10-01", name: "test", note: "note", amount: "", tax: "", closed: true, ship_via: "TN", total: "" }, 
       { id: "20", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "30", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, 
       { id: "40", invdate: "2007-10-04", name: "test4", note: "note4", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, 
       { id: "50", invdate: "2007-10-31", name: "test5", note: "note5", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "60", invdate: "2007-09-06", name: "test6", note: "note6", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, 
       { id: "70", invdate: "2007-10-04", name: "test7", note: "note7", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, 
       { id: "80", invdate: "2007-10-03", name: "test8", note: "note8", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "90", invdate: "2007-09-01", name: "test9", note: "note9", amount: "400.00", tax: "30.00", closed: false, ship_via: "TN", total: "430.00" }, 
       { id: "100", invdate: "2007-09-08", name: "test10", note: "note10", amount: "500.00", tax: "30.00", closed: true, ship_via: "TN", total: "530.00" }, 
       { id: "110", invdate: "2007-09-08", name: "test11", note: "note11", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" }, 
       { id: "120", invdate: "2007-09-10", name: "test12", note: "note12", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" }, 

       { id: "110", invdate: "2007-10-01", name: "test", note: "note", amount: "", tax: "", closed: true, ship_via: "TN", total: "" }, 
       { id: "120", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "130", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, 
       { id: "140", invdate: "2007-10-04", name: "test4", note: "note4", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, 
       { id: "150", invdate: "2007-10-31", name: "test5", note: "note5", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "160", invdate: "2007-09-06", name: "test6", note: "note6", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, 
       { id: "170", invdate: "2007-10-04", name: "test7", note: "note7", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, 
       { id: "180", invdate: "2007-10-03", name: "test8", note: "note8", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "190", invdate: "2007-09-01", name: "test9", note: "note9", amount: "400.00", tax: "30.00", closed: false, ship_via: "TN", total: "430.00" }, 
       { id: "1100", invdate: "2007-09-08", name: "test10", note: "note10", amount: "500.00", tax: "30.00", closed: true, ship_via: "TN", total: "530.00" }, 
       { id: "1110", invdate: "2007-09-08", name: "test11", note: "note11", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" }, 
       { id: "1120", invdate: "2007-09-10", name: "test12", note: "note12", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" }, 

       { id: "210", invdate: "2007-10-01", name: "test", note: "note", amount: "", tax: "", closed: true, ship_via: "TN", total: "" }, 
       { id: "220", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "230", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, 
       { id: "240", invdate: "2007-10-04", name: "test4", note: "note4", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, 
       { id: "250", invdate: "2007-10-31", name: "test5", note: "note5", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "260", invdate: "2007-09-06", name: "test6", note: "note6", amount: "400.00", tax: "30.00", closed: false, ship_via: "FE", total: "430.00" }, 
       { id: "270", invdate: "2007-10-04", name: "test7", note: "note7", amount: "200.00", tax: "10.00", closed: true, ship_via: "TN", total: "210.00" }, 
       { id: "280", invdate: "2007-10-03", name: "test8", note: "note8", amount: "300.00", tax: "20.00", closed: false, ship_via: "FE", total: "320.00" }, 
       { id: "290", invdate: "2007-09-01", name: "test9", note: "note9", amount: "400.00", tax: "30.00", closed: false, ship_via: "TN", total: "430.00" }, 
       { id: "2100", invdate: "2007-09-08", name: "test10", note: "note10", amount: "500.00", tax: "30.00", closed: true, ship_via: "TN", total: "530.00" }, 
       { id: "2110", invdate: "2007-09-08", name: "test11", note: "note11", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" }, 
       { id: "2120", invdate: "2007-09-10", name: "test12", note: "note12", amount: "500.00", tax: "30.00", closed: false, ship_via: "FE", total: "530.00" } 

      ], 
      $grid = $("#grid"), 
      initDateEdit = function (elem) { 
       $(elem).datepicker({ 
        dateFormat: "dd-M-yy", 
        autoSize: true, 
        changeYear: true, 
        changeMonth: true, 
        showButtonPanel: true, 
        showWeek: true 
       }); 
      }, 
      initDateSearch = function (elem) { 
       setTimeout(function() { 
        initDateEdit(elem); 
       }, 100); 
      }; 

     $grid.jqGrid({ 
      data: mydata, 
      colNames: ["", "Client", "Date", "Amount", "Tax", "Total", "Closed", "Shipped via", "Notes"], 
      colModel: [ 
       { name: "act", template: "actions", width: 66 }, 
       { name: "name", align: "center", width: 92, editrules: {required: true} }, 
       { name: "invdate", width: 1172, align: "center", sorttype: "date", frozen: true, 
        formatter: "date", formatoptions: { newformat: "d-M-Y", reformatAfterEdit: true }, datefmt: "d-M-Y", 
        editoptions: { dataInit: initDateEdit }, 
        searchoptions: { sopt: ["eq", "ne", "lt", "le", "gt", "ge"], dataInit: initDateSearch } }, 
       { name: "amount", width: 1156, template: "number", hidden: true }, 
       { name: "tax", width: 1135, template: "number", autoResizableMinColSize: 40, hidden: true }, 
       { name: "total", width: 1143, template: "number", hidden: true }, 
       { name: "closed", width: 1149, template: "booleanCheckboxFa" }, 
       { name: "ship_via", width: 1176, align: "center", formatter: "select", 
        edittype: "select", editoptions: { value: "FE:FedEx;TN:TNT;IN:Intim", defaultValue: "IN" }, 
        stype: "select", searchoptions: { sopt: ["eq", "ne"], value: ":Any;FE:FedEx;TN:TNT;IN:IN" } }, 
       { name: "note", width: 1143, edittype: "textarea", sortable: false } 
      ], 
      cmTemplate: { editable: true, autoResizable: true }, 
      iconSet: "fontAwesome", 
      rowNum: 100, 
      autowidth: true, 
      shrinkToFit: false, 

      rowList: [5, 10, 20, "10000:All"], 
      toppager: true, 
      rownumbers: true, 
      sortname: "invdate", 
      sortorder: "desc", 
      navOptions: { 
       position: "center", 
       addtext: "Add", 
       edittext: "Edit", 
       deltext: "Delete", 
       searchtext: "Search", 
       refreshtext: "Reload", 
       viewtext: "View", 
       savetext: "Save", 
       canceltext: "Cancel", 
       iconsOverText: true 
      }, 
      caption: "Demonstration how to make full width navigator bar" 
     }).jqGrid("navGrid", {view: true}) 
     .jqGrid("inlineNav") 
     //.jqGrid("filterToolbar") 
     .jqGrid("gridResize"); 

     var autoedit = true; 
     $grid.jqGrid("navButtonAdd", "#grid_toppager", { 
      buttonicon: "fa-star", 
      caption: "Toggle", 
      id: "AutoEdit", 
      title: "Toggle autoedit", 
      onClickButton: function (options, e) { 
       var $me = $(e.currentTarget); 
       $me.toggleClass("ui-state-active"); 
       autoedit = $me.hasClass("ui-state-active"); 
       $me.attr("aria-pressed", autoedit ? "true" : "false"); 
      } 
     }); 

var i; 
for (i=0; i<30; i++) { 
     $grid.jqGrid("navButtonAdd", "#grid_toppager", { 
      buttonicon: "fa-star", 
      caption: "Toggle"+i, 
      id: "AutoEdit2"+i, 
      title: "Toggle autoedit" 
     }); 
} 



     $("#grid_toppager") 
      .find(".ui-pg-button") 
      .each(function (i) { 
       $(this).attr({ 
        tabindex: String(i), 
        role: "button" 
       }); 
      }); 
     //$("#AutoEdit").attr("role", "button"); 
     if (autoedit) { 
      $("#AutoEdit").click(); 
     } 
     $grid.jqGrid("navButtonAdd", "#grid_toppager", { 
      buttonicon: "fa-table", 
      caption: "Columns", 
      title: "Choose columns", 
      onClickButton: function (options, e) { 
       $(this).jqGrid("columnChooser"); 
      } 
     }); 
     $("#grid_toppager_left").hide(); 
     $("#grid_toppager_right").hide(); 
     $("#grid_toppager_center").attr("colspan", "2"); 
     $("#grid_toppager_center").css({width: "", "text-align": "left", "white-space": ""}); 
     $("#grid_toppager_center").find(">.navtable").append(
      $("#grid_toppager_center").find(">table.ui-pg-table") 
     ); 
     $("#grid_toppager_center").find(">.navtable").children().each(function() { 
      $(this).css("float", "left"); 
     }); 

     $grid.bind("jqGridAfterGridComplete", function() { 
      var p = $(this).jqGrid("getGridParam"), $toppager = $(p.toppager); 
      $toppager.find(".navtable").css("width", ""); 
     }); 

     if (window.innerWidth > document.documentElement.clientWidth) { 
      $grid.jqGrid("setGridWidth", 
       $grid.jqGrid("getGridParam", "width") - 
       (window.innerWidth - document.documentElement.clientWidth)); 
     } 
    }); 
    //]]> 
    </script> 
</head> 
<body> 
     <table id="grid"></table> 
</body> 
</html> 
+0

对不起,但我不明白这个例子的目标。看来我错了。你可以使用'shrinkToFit:false','autowidth:true'和大的列宽。哪种感觉有这样的选择组合?你不允许减少列的宽度(通过使用'shrinkToFit:false')。你如何想象在jqgrid和页面上没有水平滚动条?我无法关注你... – Oleg

+0

只需删除'autowidth:true'选项或'shrinkToFit:false'选项。如果不使用外部div,则应在宽度计算中添加(-4):'$ grid.jqGrid(“getGridParam”,“width”) - 4 - (window.innerWidth - document.documentElement.clientWidth));'' – Oleg

+0

参见[demo1](http://www.ok-soft-gmbh.com/jqGrid/OK/scrollbar-Andrus-1.htm)和[demo2](http://www.ok-soft-gmbh .com/jqGrid/OK/scrollbar-Andrus-2.htm) – Oleg

回答

1

我不确定我是否理解您使用的所有选项的目标。在我看来,你需要删除autowidth: true选项。见the demo

+0

如果'autowidth:true'被移除并且jqgrid的宽度很小,则顶部工具栏按钮会包装成多行。如果删除autowidth,如何将jqgrid最小宽度设置为屏幕宽度宽度?或者有没有其他的方式来显示整个屏幕宽度jqgrid顶部工具栏?或者应该单独建立引导jqgrid命令并始终占用整个页面宽度的引导工具栏? – Andrus

+0

它看起来像去除autowidth和使用'变种gridWidth = $ grid.jqGrid( “getGridParam”, “宽度”), WINDOWWIDTH = window.innerWidth - 30; if(gridWidth Andrus

+0

@安德鲁斯:不客气! – Oleg