如何显示jqGrid中的所有行?
jqGrid公开了一个属性rowNum
,您可以在其中设置要为每个页面显示的行数。 你如何设置网格只显示所有行?
现在我只是将rowNum
设置为像<%= int.MaxValue %>
这样的高度值,但是我想知道是否有更好的方法。
在最新版本的jqGrid中,可以将rowNum设置为-1来指示网格始终显示所有行:
rowNum: -1
在这里查看最新的jqGrid文档。
特别:
设置我们要在网格中查看的logging数量。 这个参数被传递给URL以供服务器例程检索数据使用。 请注意,如果您将此参数设置为10(即检索10条logging),并且您的服务器返回15,则只会加载10条logging。 将此参数设置为-1(无限制)以禁用此检查。
更新
不幸的是,这个行为在jqGrid 3.6.3中被破坏了。 根据Tony的这个post :
是的,这是真的。 原因是新介绍的卷轴:1。 将来我们会纠正这种行为。
所以jqGrid的开发者已经意识到了这个问题,显然正在计划在未来的版本中修复它。 不幸的是,这个post是一年多以前
在这个时候,我可以推荐的是,您将rowNum
设置为一个非常大的数字来模拟-1
的行为。
你也可以尝试下面的使用rowNum: ''
whatispunk的解决scheme。 不过,我试图在包含本地数据的网格上( loadonce: true
)。 当试图对行进行sorting时,网格的所有本地数据都将消失。 所以这个解决scheme似乎不适用于本地数据的网格,除非这个缺陷已经在更高版本的jqGrid(我在jqGrid 3.8.2上testing过)中解决了。 如果您有任何意见,请在下面发表评论!
更新 – 2014年4月16日
根据jqGrid团队 ,现在已经修复:
我已经添加了支持,在页面select框上设置不同的显示值,包括-1。
尽pipe如此,我还没有机会testing以确认修复。 据推测,这个变化将在jqGrid 4.6.0之后的下一个版本中。
jqgrid(3.5反正)似乎没有一个优雅的方式来做到这一点。 到目前为止,我发现的最好的方法是在网格选项中添加如下内容:
rowList:[10,20,30,100000000], loadComplete: function() { $("option[value=100000000]").text('All'); },
如果100000000的数字比任何时候返回的最大行数高出任意一个,并且选项[value =]是这样的话,那么你的用户界面看起来会更好一些。 Jenky,但为我工作。
如果你不想使用分页,那么改变你的服务器端代码来简单的返回所有的行。 根本不要使用rows参数。
如果你想有行列表,但也有一个选项来显示所有,然后在网格属性中做这样的事情
jQuery("#statement_mods").jqGrid({ rowList:['ALL',30,50,100,200] });
然后在服务器端代码中确保如果GET ['rows'] ='ALL',则忽略rows参数
这工作:
// 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); }
如果您在导航栏上设置了分页,则还可以访问网格右下angular写入的总行数,然后附加到生成的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:-1
为我做了诡计
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条logging。 此外,我假设你从logging的JSON阅读器格式从服务器返回的总行数。
用简单的改变解决了它:rowNum:inputDataArray.length
其中inputDataArray是我提供给网格的数组。
您也可以进入jquery.jqGrid.js并将“rowNum:20”更改为“rowNum:Some-Real-Large-Number”。 当你定义你的jqGrid时,不要指定rowNum。 然后将你的整个数据集返回给jqGrid。
设置rowNum:'你得到所有的行。
即使它仍然出现在文档中,您不能像jqGrid 4.5.4那样将rowNum设置为-1,它可以再次运行(也可能在早期的版本中)。
默认情况下,如果您使用的是不使用分页的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' });