jqGrid 公开了一个属性rowNum
,您可以在其中设置要为每个页面显示的行数。您如何将网格设置为仅显示所有行?
现在我只是将它设置rowNum
为非常高的东西,<%= int.MaxValue %>
但我想知道是否有更好的方法。
jqGrid 公开了一个属性rowNum
,您可以在其中设置要为每个页面显示的行数。您如何将网格设置为仅显示所有行?
现在我只是将它设置rowNum
为非常高的东西,<%= int.MaxValue %>
但我想知道是否有更好的方法。
在最新版本的 jqGrid 中,您可以将 rowNum 设置为-1以指示网格始终显示所有行:
rowNum: -1
在此处查看最新的 jqGrid 文档。
具体来说:
设置我们要在网格中查看多少条记录。该参数被传递到 url 以供检索数据的服务器例程使用。请注意,如果您将此参数设置为 10(即检索 10 条记录)并且您的服务器返回 15,那么只会加载 10 条记录。将此参数设置为 -1(无限制)以禁用此检查。
更新
不幸的是,这种行为在 jqGrid 3.6.3 中被破坏了。根据托尼的这篇文章:
是的,这是真的。原因是新推出的卷轴:1。将来我们会纠正这种行为。
所以 jqGrid 开发人员意识到了这个问题,并且显然计划在未来的版本中修复它。不幸的是,这篇文章是一年多前的……
此时,我只能建议您设置rowNum
一个非常大的数字来模拟-1
.
您也可以尝试使用以下 whatispunk 的解决方案rowNum: ''
。loadonce: true
但是,我在包含本地数据 ( )的网格上进行了尝试。当尝试对行进行排序时,所有网格的本地数据都会消失。所以这个解决方案似乎不适用于具有本地数据的网格,除非这个缺陷已经在 jqGrid 的更高版本中得到修复(我在 jqGrid 3.8.2 上测试过)。如果您有任何反馈,请在下面发表评论!
根据 jqGrid 团队的说法,现在已修复:
我添加了支持在寻呼机选择框上设置不同的显示值,包括所有的 -1。
不过,我还没有机会测试以确认修复。大概这种变化会在 jqGrid 4.6.0 之后的下一个版本中出现。
jqgrid(无论如何都是3.5)似乎没有一种优雅的内置方式来做到这一点。到目前为止,我发现的最好的方法是将以下内容添加到您的网格选项中:
rowList:[10,20,30,100000000],
loadComplete: function() {
$("option[value=100000000]").text('All');
},
其中 100000000 比您将返回的最大行数任意高一些,而 option[value=] 行使您的用户界面看起来更好一些。Jenky,但对我有用。
如果您根本不想使用分页,请更改服务器端代码以简单地返回所有行。根本不要使用 rows 参数。
如果你想拥有行列表但也有一个选项来显示所有然后在网格属性中做这样的事情
jQuery("#statement_mods").jqGrid({
rowList:['ALL',30,50,100,200]
});
然后在服务器端代码中确保忽略 rows 参数 if GET['rows']='ALL'
这有效:
// 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);
}
设置rowNum:-1
对我有用
如果您在导航栏上设置了分页,您还可以访问写在网格右下角的总行数,然后附加到生成的 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));
设置 rowNum: '' 你得到所有行。
Jqgrid.PagerSettings.PageSize = Max Row you want to display;
Jqgrid.ToolBarSettings.ToolBarPosition = ToolBarPosition.Hidden;
我有这个工作:
$('#bla').jqGrid({
...
'rowNum' : 0,
'loadOnce' : true,
'loadComplete': function(data) {
$(this).jqGrid('setGridParam', 'rowNum', data.total);
},
...
});
无论是否将loadOnce
选项设置为 true,这都适用。请注意,您必须rowNum
先将选项设置为 0,如果您忽略此选项,它仍将默认显示 20 条记录。另外,我假设您以记录在案的 JSON 阅读器格式从服务器返回总行数。
通过简单的更改解决了它: rowNum: inputDataArray.length
其中 inputDataArray 是我提供给网格的数组。
默认情况下,JQ 网格最多显示 20 行,如果您使用不使用分页:
// 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'
});
您也可以进入 jquery.jqGrid.js 并将“rowNum:20”更改为“rowNum:Some-Really-Large-Number”。定义 jqGrid 时,不要指定 rowNum。然后将整个数据集返回给 jqGrid。
即使它仍然出现在文档中,从 jqGrid 4.5.4 开始您不能将 rowNum 设置为 -1,它仍然可以再次工作(也许在早期版本中也是如此)。
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”选项更改为数据集中的实际记录数。