2009-11-23 27 views
12

Làm thế nào để một chương trình chọn hàng trên cùng của một JQGrid. Tôi muốn có hàng trên cùng đã được chọn khi nó được mở trên trang. Lưới của tôi được sắp xếp theo một cột mô tả để id của hàng đầu tiên có thể là bất kỳ số nào. Tôi biết phương pháp để sử dụng Tôi chỉ không biết làm thế nào để có được rowid cho hàng đầu (đầu tiên). Phương pháp này là:Làm thế nào để lập trình chọn hàng trên cùng của JQGrid?

jQuery("#mygrid").setSelection(rowid, true); 

Trả lời

9

Hoặc, mà không sử dụng API jqGrid, bạn sẽ có thể để lấy hàng đầu tiên bằng cách điều hướng DOM:

var top_rowid = $('#mygrid tbody:first-child tr:first').attr('id'); 
+0

cảm ơn - điều này đã hiệu quả. – MikeD

+1

Điều này thực sự sẽ tồi tệ hơn là chỉ sử dụng API jqGrid, vì nó sẽ chậm hơn để có được. jqGrid có các id hàng được lưu trữ trong một biến có sẵn, trong khi cách này sẽ mở và phân tích cú pháp DOM khi nó không cần phải được mở. – kokorohakai

+1

Nếu có hàng tiêu đề, phiên bản này không hoạt động. Bộ chọn chính xác cho cả hai trường hợp: var top_rowid = $ ('# mygrid tbody: first-child tr.jqgrow: first').attr ('id'); –

6
$("#mygrid").getDataIDs()[0]; // SO now requires 30 characters, so.... 
+0

thử như tôi có thể - tôi có thể không nhận được cuộc gọi api này để công việc. Điều hướng thông qua các dom tuy nhiên như đề nghị dưới đây làm việc. Cảm ơn anyway - không chắc chắn lý do tại sao cuộc gọi không thành công - nhưng nó cho tôi. – MikeD

+3

Tôi nghĩ rằng cú pháp cho jqGrid 3.6 đã thay đổi thành một cái gì đó như: '$ ('# mygrid') .jqGrid ('getDataIDs');', tuy nhiên điều này đã ném một lỗi cho tôi khi tôi thử nó bằng cách sử dụng Firebug chống lại v3 trực tuyến. 6 bản demo. –

+0

Sam, cú pháp cũ hoạt động, cũng như API mới. Tôi đã cung cấp cho các cựu kể từ khi nó hoạt động trên cũ và mới. –

0

Khi bạn có một dòng tiêu đề, hãy thử điều này:

var top_rowid = $('#mygrid tbody:first-child tr:nth-child(2)').attr('id'); 
18

Câu trả lời ở trên đã đóng nhưng trường hợp đã bị tắt. Nó phải là:

$("#mygrid").getDataIDs()[0]; 

Điều đó sẽ hoạt động bình thường.

+0

Cảm ơn điều này đã làm việc cho tôi. –

1

Toàn bộ mã khi bảng đã tiêu đề hàng:

var top_rowid = $('#mygrid tr:nth-child(2)').attr('id'); 
$("#mygrid").setSelection(top_rowid, true); 
0

Nếu bạn đã tiêu đề hàng thử điều này:

$('#tb_par tbody:first-child tr:nth-child(2)').trigger("click");

Nếu không hơn:

$('#mygrid tbody:first-child tr:first').trigger("click");

Nó sẽ kích hoạt trực tiếp nhấp chuột sự kiện của JqGrid.

8

jqGrid hỗ trợ một phương pháp setSelection nó chỉ cần được gọi một cách chính xác:

var grid = jQuery("#mygrid"), 
    ids = grid.jqGrid("getDataIDs"); 
if(ids && ids.length > 0) 
    grid.jqGrid("setSelection", ids[0]); 
+0

cá nhân, tôi thích điều này. Cảm ơn! – bkwdesign

+0

Tôi có thể chọn tùy chọn này nhưng không cho phép điều hướng bàn phím qua 4.0 api mới. bất kỳ ý tưởng? – Nap

0

Tôi đã sử dụng như sau:

var grid = $('#list'); 
grid.jqGrid({ 
    ... 
    gridComplete: function() { 
     var ids = grid.jqGrid("getDataIDs"); 
     if(ids.length > 0) { 
      grid.jqGrid("setSelection", ids[0]); 
     } 
    }, 
    ... 
}); 
Các vấn đề liên quan