2009-11-23 5 views
12

Как программно выбрать верхнюю строку JQGrid. Я хочу, чтобы верхняя строка была выбрана, когда она открыта на странице. Моя сетка сортируется по описательному столбцу, поэтому идентификатор первой строки может быть любым числом. Я знаю, что метод использовать Я просто не знаю, как получить rowid для верхней (первой) строки. Метод:Как программно выбрать верхнюю строку JQGrid?

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

ответ

9

Или, без использования API jqGrid, вы должны быть в состоянии получить верхнюю строку, перемещаясь в DOM:

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

спасибо - это сработало. – MikeD

+1

Это на самом деле было бы хуже, чем использование API jqGrid, поскольку его было бы медленнее приобретать. jqGrid имеет идентификаторы строк, хранящиеся в легкодоступной переменной, тогда как этот способ открывается и анализирует DOM, когда его не нужно открывать. – kokorohakai

+1

Если есть строка заголовка, эта версия не работает. Правильный селектор для обоих случаев: var top_rowid = $ ('# mygrid tbody: first-child tr.jqgrow: first').Attr ('ID'); –

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

попробовать, как я мог - я не мог получить эту апи вызов Работа. Однако перемещение через дом, как было предложено ниже. Спасибо в любом случае - не знаю, почему вызов терпит неудачу - но это для меня. – MikeD

+3

Я думаю, что синтаксис для jqGrid 3.6 изменился на что-то вроде: '$ ('# mygrid'). JqGrid ('getDataIDs');', однако это породило ошибку для меня, когда я попытался использовать Firebug для онлайн-версии v3. 6 демонстраций. –

+0

Сэм, старый синтаксис работает, а также новый API. Я отдал первое, так как оно работает на старых и новых. –

0

Если у вас есть строка заголовка, попробуйте это:

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

Ответ выше был близок, но случай был выключен. Это должно быть:

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

Это должно работать должным образом.

+0

Спасибо, это сработало для меня. –

1

Полный код, когда таблица имеют заголовок строки:

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

Если заголовок строки попробуйте следующее:

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

Если не чем:

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

Это будет напрямую инициировать щелчок событие JqGrid.

8

jqGrid поддерживает setSelection метод он просто должен быть назван правильно:

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

лично, я люблю это. Благодаря! – bkwdesign

+0

Я могу выбрать это, но он не позволяет навигации по клавиатуре через новый 4.0 api. есть идеи? – Nap

0

Я использовал следующее:

var grid = $('#list'); 
grid.jqGrid({ 
    ... 
    gridComplete: function() { 
     var ids = grid.jqGrid("getDataIDs"); 
     if(ids.length > 0) { 
      grid.jqGrid("setSelection", ids[0]); 
     } 
    }, 
    ... 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^