jqGrid公开了一个属性rowNum
,您可以在其中设置要为每个页面显示的行数。如何将网格设置为仅显示所有行?
现在我只是将rowNum
设置为像<%= int.MaxValue %>
那样高的东西,但我想知道是否有更好的方法。
答案 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现在已修复:
但是,我没有机会测试确认修复。据推测,此更改将在jqGrid 4.6.0之后的下一个版本中发布。我已添加支持,在寻呼机选择框中设置不同的显示值,包括所有的-1。
答案 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)