2009-08-06 33 views
47

jqGrid hiển thị thuộc tính rowNum nơi bạn có thể đặt số hàng để hiển thị cho mỗi trang. Làm thế nào để bạn thiết lập lưới để chỉ hiển thị TẤT CẢ các hàng?Làm thế nào để hiển thị tất cả các hàng trong jqGrid?

Hiện tại, tôi chỉ đang đặt rowNum thành thứ gì đó thực sự cao như <%= int.MaxValue %> nhưng tôi tự hỏi liệu có cách nào tốt hơn không.

+0

Chúng tôi cũng sử dụng một số lượng lớn.Bạn có thể làm cho giá trị này là một lá cờ và có máy chủ của bạn bỏ qua phân trang khi nhìn thấy. –

+0

http://stackoverflow.com/questions/2224070/setting-jqgrid-rownum-dynamically – vemv

Trả lời

53

Trong phiên bản mới nhất của jqGrid, bạn có thể đặt ROWNUM để -1 để hướng dẫn các lưới để luôn luôn hiển thị tất cả các hàng:

rowNum: -1 

Xem tài liệu jqGrid mới nhất here.

Cụ thể:

Sets bao nhiêu hồ sơ, chúng tôi muốn xem trong lưới. Tham số này được chuyển đến url để sử dụng bởi thường trình máy chủ truy xuất dữ liệu. Lưu ý rằng nếu bạn đặt tham số này thành 10 (nghĩa là truy xuất 10 bản ghi) và máy chủ của bạn trả về 15 thì chỉ có 10 bản ghi sẽ được tải. Đặt tham số này thành -1 (không giới hạn) để tắt kiểm tra này.


Cập nhật

Thật không may hành vi này đã bị hỏng trong jqGrid 3.6.3. Theo số this post from Tony:

Có, điều này đúng. Lý do là cuộn được giới thiệu mới: 1. Trong tương lai, chúng tôi sẽ sửa lại hành vi này.

Vì vậy, các nhà phát triển jqGrid biết vấn đề này và dường như đang có kế hoạch khắc phục sự cố trong bản phát hành trong tương lai. Rất tiếc, bài đăng này đã hơn một năm trước ...

Tại thời điểm này, tất cả những gì tôi có thể khuyên bạn là đặt rowNum thành một số rất lớn để mô phỏng hành vi của -1.


Bạn cũng có thể thử giải pháp của giải pháp dưới đây bằng cách sử dụng rowNum: ''. Tuy nhiên, tôi đã thử trên lưới có chứa dữ liệu cục bộ (loadonce: true). Khi attemping để sắp xếp các hàng tất cả các dữ liệu cục bộ của lưới sẽ biến mất. Vì vậy, giải pháp này dường như không hoạt động cho lưới với dữ liệu cục bộ, trừ khi lỗi này đã được sửa trong phiên bản sau của jqGrid (tôi đã thử nghiệm nó trên jqGrid 3.8.2). Nếu bạn có phản hồi, xin vui lòng gửi bình luận dưới đây!


Cập nhật - 16 tháng 4 năm 2014

According to the jqGrid team này bây giờ là cố định:

Tôi đã thêm hỗ trợ để thiết lập các giá trị hiển thị khác nhau trên một số hộp pager bao gồm -1 cho tất cả.

Tôi chưa có cơ hội kiểm tra để xác nhận bản sửa lỗi. Có lẽ sự thay đổi này sẽ có trong bản phát hành tiếp theo sau jqGrid 4.6.0.

+3

Nếu bạn đặt rowNum: '' bạn nhận tất cả các hàng. – mikesigs

+0

@Justin, các câu trả lời trong câu trả lời này gây nhầm lẫn và nhận xét "giải pháp hợp lệ" của bạn bị ẩn. Tôi khuyên bạn nên bỏ qua chéo! :) – KevinDeus

+1

Phần gạch chéo của câu trả lời của tôi không còn hợp lệ nữa là lý do tại sao nó bị gạch chéo. Tôi nghĩ sẽ còn khó hiểu hơn nữa để khôi phục nó. Tôi chỉ có thể xóa nó, nhưng sau đó câu trả lời hợp lệ sẽ là ngoài ngữ cảnh vì tôi sẽ phải giải thích cách ban đầu -1 được sử dụng để đạt được giải pháp này. Tôi không biết ... có lẽ điều đúng đắn để làm điều đó hoàn toàn viết lại câu trả lời này dọc theo những dòng đó. –

0

Bạn cũng có thể truy cập vào jquery.jqGrid.js và thay đổi "rowNum: 20" thành "rowNum: Some-Really-Large-Number". Khi bạn xác định jqGrid của bạn, không xác định rowNum. Sau đó, trả lại toàn bộ tập dữ liệu của bạn về jqGrid.

4

nếu bạn không muốn sử dụng phân trang, sau đó thay đổi mã phía máy chủ để chỉ cần trả lại tất cả các hàng. không sử dụng tham số hàng nào cả.

nếu bạn muốn có rowlist mà còn có một tùy chọn để hiển thị tất cả sau đó làm một cái gì đó như thế này trong các thuộc tính lưới

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

và sau đó trong mã serverside chắc chắn rằng bạn bỏ qua các tham số hàng nếu GET ['rows'] = 'ALL'

+0

Loại tác phẩm nhưng, tôi nhận được "Xem NaN - NaN trong 577" ở góc dưới cùng bên phải – gawpertron

8

jqgrid (3,5 anyway) dường như không có cách xây dựng trang nhã để thực hiện việc này. Điều tốt nhất tôi đã tìm thấy cho đến nay là thêm một cái gì đó như sau để lựa chọn mạng lưới của bạn:

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

Trường hợp 100000000 một số số tùy tiện cao hơn tối đa # hàng bao giờ bạn sẽ trở lại, và tùy chọn [giá trị =] dòng giao diện người dùng của bạn trông đẹp hơn một chút. Jenky, nhưng làm việc cho tôi.

0

Hàng thiết lậpNum: '' bạn nhận được tất cả các hàng.

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

Nếu bạn đã đặt số trang trên thanh điều hướng, bạn cũng có thể truy cập vào tổng số hàng được viết ở dưới cùng bên phải của lưới và sau đó nối vào tùy chọn RowList đã tạo.

làm cái gì đó như:

// 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)); 
1

Tôi đã có làm việc này:

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

này hoạt động có và không có loadOnce tùy chọn thiết lập là true. Lưu ý rằng bạn phải đặt tùy chọn rowNum thành 0 trước, nếu bạn bỏ qua tùy chọn này, tùy chọn này sẽ vẫn mặc định cho 20 bản ghi để hiển thị. Ngoài ra, tôi giả sử bạn đang trả về tổng số hàng từ máy chủ ở định dạng trình đọc JSON được ghi chép.

0

Thậm chí nếu nó vẫn xuất hiện trong tài liệu bạn không thể đặt rowNum thành -1 là jqGrid 4.5.4 nó hoạt động lại (có thể trong phiên bản cũ hơn).

3

này hoạt động:

// 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); 
} 
1

giải quyết nó với sự thay đổi đơn giản: ROWNUM: inputDataArray.length

nơi inputDataArray là mảng mà tôi đang cung cấp cho lưới điện.

2

thiết rowNum:-1 đã làm các trick cho tôi

0

Theo mặc định, lưới chương JQ 20 hàng Max, nếu bạn đang sử dụng không sử dụng pagination:

// 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' 
     }); 
Các vấn đề liên quan