jqGrid - 如何根据colModel可排序属性更改标题

时间:2010-11-16 17:49:35

标签: jqgrid

当鼠标悬停在每列上时,我希望工具提示指示该列是否可排序。
我可以使用以下内容更改标题属性:

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

我想用 colMode的可排序属性检查替换演示表达式'i%2',但我无法弄清楚如何获取colModel的可排序属性的值。

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

我已经尝试过.getGridParam和.getColProp,但我不认为我使用的语法是正确的。

2 个答案:

答案 0 :(得分: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!");

这里我们按可见列索引标识列。

您可以轻松地为您的目的重写代码示例。

答案 1 :(得分:0)

这很好用。感谢Oleg的所有帮助。

$("#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"); 
});

你是对的 $(#List 不在DOM上的正确位置,它应该是 #gbox_List - 其他信息清楚了。

我必须使用.ui-th- 而不是.ui-th- 标签,以便.each循环遍历每一列。

通过使用 grid.getGridParam('colModel')返回一个数组,然后关闭 .name 属性,我能够避免对列名进行硬编码对于每一列。

这个解决方案很好,因为我有大约20个网格,每个网格都有很多不合格的列,并且每个不可移动的列都必须有不同的行。现在我可以利用colModel中的可排序属性设置。