1

我正在尝试使用 jqgrid 创建一个最初没有数据但具有固定大小的网格,其中列的总宽度大于网格宽度,因此用户只能滚动浏览标题。用户将单击一个按钮,该按钮会将数据填充到网格中。这听起来可能类似于已经回答的问题jqGrid 垂直滚动条

但是,在这种情况下,数据已经存在。我最初没有数据,希望网格有滚动条。我注意到在填充数据之前,不会创建具有类 .ui-jqgrid-bdiv 的 div。

这是 jqgrid 中的错误吗?有什么解决方法吗?

这是小提琴http://jsfiddle.net/yNw3C/2630/

这是代码:

javascript

$(document).ready(function () {
    $("#results").jqGrid({
        datatype: "local",
        height: 150,
        scroll:true,
        width:300,
        shrinkToFit:false,
        colNames: ['Inv No', 'Date', 'Client', 'Amount', 'Tax', 'Total', 'Notes'],
        colModel: [
            { name: 'id', index: 'id', width: 160, sorttype: "int" },
            { name: 'invdate', index: 'invdate', width: 90, sorttype: "date" },
            { name: 'name', index: 'name', width: 100 },
            { name: 'amount', index: 'amount', width: 80, align: "right", sorttype: "float" },
            { name: 'tax', index: 'tax', width: 180, align: "right", sorttype: "float" },
            { name: 'total', index: 'total', width: 280, align: "right", sorttype: "float" },
            { name: 'note', index: 'note', width: 150, sortable: false }
           ],
       });
            var mydata = [
                            { id: "1", invdate: "2007-10-01", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },
                            { id: "2", invdate: "2007-10-02", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },
                            { id: "3", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" },
                            { id: "4", invdate: "2007-10-04", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },
                            { id: "5", invdate: "2007-10-05", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },
                            { id: "6", invdate: "2007-09-06", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" },
                            { id: "7", invdate: "2007-10-04", name: "test", note: "note", amount: "200.00", tax: "10.00", total: "210.00" },
                            { id: "8", invdate: "2007-10-03", name: "test2", note: "note2", amount: "300.00", tax: "20.00", total: "320.00" },
                            { id: "9", invdate: "2007-09-01", name: "test3", note: "note3", amount: "400.00", tax: "30.00", total: "430.00" }
                            ];
            //if you uncomment this, the scrollbars would appear
            /*for (var i = 0; i <= mydata.length; i++)
                $("#results").jqGrid('addRowData', i + 1, mydata[i]);*/
        });

html

<div>
    <table id="results"></table>
</div>

编辑:为了更清楚,在上面的例子中,我想水平滚动标题。填充数据后,标题在垂直滚动时应保持静态,并与数据一起水平滚动。

谢谢!

4

4 回答 4

1

@用户1719160:

loadComplete: function () {

        if ($(this).jqGrid('getGridParam', 'reccount') == 0)
        {         
            $(".jqgfirstrow").css("height","1px");
        }

这工作......不是很优雅......但它确实有效。

于 2013-10-01T19:56:32.957 回答
0

我知道这是一个老问题,但如果其他人遇到它,以下代码对我来说效果很好(将grid_client更改为正确的名称):

loadBeforeSend: function() {
    var headerWidth = $('#gview_grid_client .ui-jqgrid-hdiv div:first').width();
    $('#gview_grid_client .ui-jqgrid-bdiv div:first').css({
        width: headerWidth,
        height: 1
    })
}

在这里找到了解决方案。这在我的情况下效果很好,因为我的列上有过滤器并且如果有人选择了过滤器,则需要保持水平滚动位置,没有结果,然后取消选择该过滤器以重新填充表格。如果没有添加代码,表格将重新填充并将数据和滚动条重置到左侧,但标题仍然滚动到右侧。

希望这对其他人有帮助!

于 2014-04-25T20:30:08.070 回答
0

这是我在没有数据时在 jqgrid 中为 hbar 找到的最终解决方案。

loadComplete: function () {
    if ($(this).jqGrid('getGridParam', 'reccount') == 0)
    {                
        $("#grid > tbody").append("<tr id=\"my_row\" role=\"row\"><td colspan=\"15\" style=\"height:1px;\" role=\"gridcell\"></td></tr>")
    }        
},
于 2013-10-02T14:22:22.577 回答
0

要在垂直滚动期间保持标题可见,请参阅 Oleg 的答案: 在滚动时修复列标题 - jqgrid

要启用标题滚动,您可以在加载完成中执行此操作

 loadComplete: function () {
        if ($(this).jqGrid('getGridParam', 'reccount') == 0){
          $(".ui-jqgrid-hdiv").css("overflow-x", "auto")
        }
          else{
              $(".ui-jqgrid-hdiv").css("overflow-x", "hidden")
          }

    }//loadComplete
于 2013-05-02T13:59:28.753 回答