如何显示jqGrid中的所有行?

时间:2009-08-06 05:22:22

标签: javascript jquery jqgrid rowcount

jqGrid公开了一个属性rowNum,您可以在其中设置要为每个页面显示的行数。如何将网格设置为仅显示所有行?

现在我只是将rowNum设置为像<%= int.MaxValue %>那样高的东西,但我想知道是否有更好的方法。

15 个答案:

答案 0 :(得分:53)

<击> 在最新版本的jqGrid中,您可以将rowNum设置为 -1 以指示网格始终显示所有行:

rowNum: -1

请参阅最新的jqGrid文档here

具体做法是:

<击>   

设置我们要在网格中查看的记录数。此参数传递给url以供检索数据的服务器例程使用。请注意,如果将此参数设置为10(即检索10条记录)并且服务器返回15,则只会加载10条记录。将此参数设置为-1(无限制)以禁用此检查。   


更新

不幸的是,这种行为在jqGrid 3.6.3中被破坏了。根据{{​​3}}:

  

是的,这是真的。原因是新推出的卷轴:1。将来我们会纠正这种行为。

因此jqGrid开发人员意识到了这个问题,显然正计划在将来的版本中修复它。不幸的是这篇帖子是一年多以前的......

目前,我建议您将rowNum设置为一个非常大的数字,以模拟-1的行为。


您还可以尝试使用rowNum: ''下面的whatispunk解决方案。但是,我在包含本地数据(loadonce: true)的网格上尝试了这一点。在尝试对行进行排序时,所有网格的本地数据都将消失。因此,对于具有本地数据的网格,此解决方案似乎不起作用,除非在更高版本的jqGrid中修复了此缺陷(我在jqGrid 3.8.2上测试过它)。如果您有任何反馈意见,请在下面发表评论!

<小时/> 更新 - 2014年4月16日

this post from Tony现在已修复:

  

我已添加支持,在寻呼机选择框中设置不同的显示值,包括所有的-1。

但是,我没有机会测试确认修复。据推测,此更改将在jqGrid 4.6.0之后的下一个版本中发布。

答案 1 :(得分:8)

jqgrid(无论如何)3.5似乎没有一个优雅的内置方式来做到这一点。到目前为止,我发现的最好的方法是在网格选项中添加以下内容:

rowList:[10,20,30,100000000],
loadComplete: function() {
    $("option[value=100000000]").text('All');
},

如果100000000比你将返回的最大行数高出一些任意数量,并且选项[value =]行使你的用户界面看起来更好一些。 Jenky,但对我有用。

答案 2 :(得分:4)

如果您根本不想使用分页,那么请更改服务器端代码以简单地返回所有行。根本不要使用rows参数。

如果你想拥有行列表,但也有一个选项来显示所有,然后在网格属性中做这样的事情

jQuery("#statement_mods").jqGrid({
  rowList:['ALL',30,50,100,200]
});

然后在服务器端代码中确保忽略rows参数如果GET ['rows'] ='ALL'

答案 3 :(得分:3)

这有效:

// Step1 - defines the rows
jqGridOptions.rowList =[10, 50, 100, 500, 'All'];
...
...
// Step2 - Change the 'All' to a meaningful value 
loadComplete: function (data) {
   $(".ui-pg-selbox option[value='All']").val(1000);
}

答案 4 :(得分:2)

如果您在导航栏上设置了分页,您还可以访问在网格右下角写入的总行数,然后附加到生成的RowList选项。

做类似的事情:

    // Get the total number of rows and delete space between numbers (Split the content of the div depending of the language (for me french)

var val=jQuery("#pager_right div").text().split('sur')[jQuery("#pager_right div").text().split('sur').length-1].split(' ').join('');

    // And do the appending if the option isn't already added

if(!$(".ui-pg-selbox option[value='"+val+"']").length > 0)
    jQuery(".ui-pg-selbox").append($('<option></option>').val(val).html(val));

答案 5 :(得分:2)

设置rowNum:-1为我做了诀窍

答案 6 :(得分:1)

Jqgrid.PagerSettings.PageSize = Max Row you want to display;
Jqgrid.ToolBarSettings.ToolBarPosition = ToolBarPosition.Hidden;

答案 7 :(得分:1)

我有这个工作:

$('#bla').jqGrid({
        ...
        'rowNum'      : 0,
        'loadOnce'    : true,
        'loadComplete': function(data) {
            $(this).jqGrid('setGridParam', 'rowNum', data.total);
        },
        ...
});

无论loadOnce选项设置为true,都可以使用。请注意,您必须先将rowNum选项设置为0,如果省略此选项,它仍将默认为要显示的20条记录。 此外,我假设您以记录的JSON阅读器格式从服务器返回总行数。

答案 8 :(得分:1)

通过简单的改变解决了它: rowNum:inputDataArray.length

其中inputDataArray是我提供给Grid的数组。

答案 9 :(得分:0)

您也可以进入jquery.jqGrid.js并将“rowNum:20”更改为“rowNum:Some-Really-Large-Number”。定义jqGrid时,请不要指定rowNum。然后将整个数据集返回到jqGrid。

答案 10 :(得分:0)

设置rowNum:''你得到所有行。

答案 11 :(得分:0)

即使它仍然出现在doc中,你也无法在jqGrid 4.5.4中将rowNum设置为-1,它再次起作用(也许在早期版本中也是如此)。

答案 12 :(得分:0)

默认情况下,如果您不使用分页,则JQ网格显示20行Max:

// To over come with this problem ,you can just write the bold    mark
   (rowNum:10000,):
   $("#MasterDataDefinationGrid").jqGrid({
            url: 'FetchData.aspx/GetDataFromDB',
            datatype: 'json',
            mtype: 'POST',
            height: 300,
            autowidth: true,
            serializeGridData: function (postData) {
                return JSON.stringify(postData);
            },
            ajaxGridOptions: { contentType: "application/json" },
            loadonce: true,
            colNames: [Your column names],
            colModel: [Your model],
            formatter: 'actions',
            pager: '#MasterDataDefinationPager', pgbuttons: false,pgtext:false,
            multiselect: false,
            ignoreCase: true,
            **rowNum: 10000,**
            loadtext: 'Loading ...',
            gridview: true,
            hidegrid: false,
            jsonReader: {
                page: function (obj) { return 1; },
                total: function (obj) { return 1; },
                records: function (obj) { return obj.d.length; },
                root: function (obj) { return obj.d; },
                repeatitems: false,
                id: "0"
            },
            caption: 'Data'
        });

答案 13 :(得分:0)

loadComplete: function (data) {
                //set our "ALL" select option to the actual number of found records
                $(".ui-pg-selbox option[value='ALL']").val(data.records);
}

这会将“ ALL”选项更改为数据集中的实际记录数。

答案 14 :(得分:0)

设置 rowNum:-1 对我有用,之后它显示了所有记录,但在网格页脚中仍然有行号选项,如下所示:

enter image description here

为了删除这个,我只是通过在 jquery 中获取扇区添加了一个 css 选项 display none。像这样

$('#id_tableCell').css('display', 'none');

注意:这个css设置应该在grid加载完成后进行。