Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jqGrid-如何基于colModel sortable属性更改标题_Jqgrid - Fatal编程技术网

jqGrid-如何基于colModel sortable属性更改标题

jqGrid-如何基于colModel sortable属性更改标题,jqgrid,Jqgrid,当鼠标悬停在每个列上时,我希望工具提示指示该列是否可排序 我可以通过以下方式更改title属性: $("#List .ui-th-column").each(function(i) { var isSortable = i % 2; $(this).attr('title', isSortable ? "Not Sortable" : "Click header to sort."); }); 我想用检查colMode的sortable属性来替换演示表达式“I%2”,但我不

当鼠标悬停在每个列上时,我希望工具提示指示该列是否可排序
我可以通过以下方式更改title属性:

$("#List .ui-th-column").each(function(i) { 
    var isSortable = i % 2;
    $(this).attr('title', isSortable ? "Not Sortable" : "Click header to sort."); 
});
我想用检查colMode的sortable属性来替换演示表达式“I%2”,但我不知道如何获取colModel的sortable属性的值

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

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

要像列定义中的任何其他属性一样获取可排序属性的值,可以执行以下操作:

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!");
这里我们通过可见列的索引来标识列


您可以根据自己的需要轻松地重写代码示例。

这很有效。谢谢你的帮助,奥列格

$("#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_列表——附加信息清楚地说明了这一点

我必须使用.ui-th-列而不是.ui-th-标签来实现.each循环遍历每个列

通过使用grid.getGridParam('colModel')返回一个数组,然后从每个列的属性中获取.name属性,我可以避免对列名进行硬编码


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

@Greg:对不起,你是什么意思?var propsName=grid.jqGrid('getColProp','Name'));为我提供了ISortable所需的布尔值-谢谢。是否有办法使用.each(函数(i)中的变量i替换列名,这样我就不必键入“name”、“Description”等?@Greg:var-propsName=grid.jqGrid('getColProp','name'));如果对象是在
colModel``中定义的,则给出一个具有布尔属性
sortable
的对象http://www.ok-soft-gmbh.com/jqGrid/isSortable.htm. 当然,您可以对所有列进行循环,但是使用
$(“#List.ui th column”)`似乎是错误的,因为列不是
$(“#List”)的一部分
.jqGrid主表元素上的一些父div。有关详细信息,请参阅。