2010-11-16 2 views
0

Когда мышь нависает над каждым столбцом, мне нужна подсказка , чтобы указать, можно ли сортировать этот столбец.
я могу изменить название атрибут с чем-то вроде этого:jqGrid - как изменить заголовок на основе сортируемого свойства colModel

$("#List .ui-th-column").each(function(i) { 
    var isSortable = i % 2; 
    $(this).attr('title', isSortable ? "Not Sortable" : "Click header to sort."); 
}); 

я хотел бы заменить демо-выражение: «I% 2» с проверкой сортируемого имущества colMode в , но я не могу понять, как получить значение сортируемого свойства colModel.

colModel: [ { name: 'Name', index: 'Name', width: 100, sortable: true }, 
      { name: 'Note', index: 'Note', width: 200, sortable: false } ] 

Я попытался .getGridParam и .getColProp, но я не думаю, что синтаксис я использую правильно.

ответ

0

Чтобы получить значение sortable собственности, как и любой другой собственности из определения столбца вы можете сделать примерно следующее:

var grid=$("#list"); 
var propsName = grid.jqGrid('getColProp','Name'); 
var propsNote = grid.jqGrid('getColProp','Note'); 
alert("'Name' has sortable="+propsName.sortable+ 
     "\n'Note' has sortable="+propsNote.sortable); 

Чтобы установить всплывающую подсказку на заголовке столбца вы можете сделать следующее

var setTooltipsOnColumnHeader = function (grid, iColumn, text) { 
    var thd = $("thead:first", grid.hdiv)[0]; 
    $("tr th:eq(" + iColumn + ")", thd).attr("title", text); 
}; 
var grid=$("#list"); 
setTooltipsOnColumnHeader(grid,2,"Bla Bla!"); 

Здесь мы идентифицируем столбец по индексу видимых столбцов.

Вы можете легко переписать примеры кода для своей цели.

+0

@Greg: Извините, что вы имеете в виду? – Oleg

+0

var propsName = grid.jqGrid ('getColProp', 'Name'); дает мне логическую потребность в isSortable - спасибо. Есть ли способ использовать переменную i в .each (function (i) для замены имени столбца, поэтому мне не нужно вводить «Name», «Description» и т. Д. – Greg

+0

@Greg: var propsName = grid.jqGrid ('getColProp', 'Name'); дает ** объект **, имеющий логическое свойство 'sortable', если он определен в' colModel''. Посмотрите пример http: //www.ok-soft -gmbh.com/jqGrid/isSortable.htm. Вы можете сделать цикл через все столбцы, но использование '$ (" # List .ui-th-column ") кажется мне неправильным, потому что столбцы не являются частью из '$ (" # List ")'. jqGrid некоторые родительские divs над основным элементом таблицы. См. http: // stackoverflow.com/questions/3462071/jqgrid-get-th-and-thead-using-jquery/3463002 # 3463002 для получения дополнительной информации. – Oleg

0

Это работает красиво. спасибо за всю помощь Олега.

$("#gbox_List .ui-th-column").each(function(i) { 
    var col = grid.getGridParam('colModel'); 
    var isSortable = grid.jqGrid("getColProp", col[i].name).sortable; 
    $(this).attr('title', isSortable ? "Click header to sort by column." : "Not Sortable"); 
}); 

Вы были правы о $ (# Список не находится в правильном месте на DOM, он должен был #gbox_List. - дополнительная информация ясно дал понять

Я имел использовать .ui-th- столбец, а не .ui-th- этикетки для .each в цикле через каждую колонку.

я был в состоянии избежать жесткого кодирования имя столбца, используя grid.getGridParam ('colModel'), чтобы возвратить массив, а затем захватить .name свойство от этого для каждого столбца.

Это решение хорошо, потому что у меня есть ~ 20 сетки, каждая из которых имеет большое количество несортируемых столбцов и должна иметь другую строку для каждого несортируемого столбца, была бы грязной. Теперь я могу воспользоваться параметром sortable property в colModel.