jqGrid 3.4中的自定义数据工具提示

我一直在使用优秀的jqGrid插件,效果很好。 最近,我被要求为网格实现一些自定义工具提示。 现在, 文档非常详尽,但它没有解决如何(如果可能的话)完成此任务。

这是我正在寻找的一个例子:

| col A | col B | ……
| 数据| 数据| …
| (鼠标hover) – 数据x

我搜索了文档和源代码,了解如何/在何处定义工具提示,但我得到的最接近的是编辑模式下按钮的自定义工具提示。 我确实有一个afterInsertRow事件的事件处理程序 – 通过我可以得到rowId等,但我不确定如何在该事件中定义HTML属性。

编辑:澄清一下,我想将单个单元格的title属性设置为特定的数据(我在jqgrid模型中已有)

编辑2:我尝试将以下内容插入到afterInsertRow事件中,没有任何乐趣,其中aData是JSON模型,ExpirationDate是模型名称:

afterInsertRow: function(rowid, aData) { grid.setCell(rowid, 'ExpirationDate', '', { title: aData.ExpiredBy }); 

但是,同一事件处理程序中的以下代码仍可正常工作:

 grid.setCell(rowid, 'ExpirationDate', '', { color: 'red' }); 

编辑3:使用redsquare的优秀suggesstions,我已经确定title属性是在afterInsertRow事件之后的某个时间设置的:我已经介入并确定它是通过注释中概述的任一方法正确设置的,但不幸的是,我在尝试更进一步时,获取此位置的源代码不可用,这意味着我无法确切地看到标题的更改位置。

编辑4 :(感谢您的耐心,并帮助我完成这个!)再次采取redsquare关于尝试loadComplete事件的评论,我能够成功获取并修改单元格的属性,但title属性固执地保持不变:

 loadComplete: function() { var ids = grid.getDataIDs(); for (var i = 0; i < ids.length; i++) { grid.setCell(ids[i], 'ExpirationDate', '', { title: 'FOO!'}); } 

最终编辑:请参阅下面的答案 – 在redsquare的帮助下,我找到了问题的根本原因。

任何帮助,将不胜感激

好的,我在对所设置的属性进行仔细检查后发现了这个问题。 事实certificate,我,我是指关节,没有仔细阅读grid.setCell(…)方法的文档:

此方法可以更改特定单元格的内容,并可以设置类或样式属性。 其中:•rowid:行的id,

•colname:列的名称(此参数可以是从0开始的数字)

•data:可以放入单元格的内容。 如果为空字符串,则不会更改内容

•class:如果class是string,那么我们使用addClass向单元格添加一个类; 如果class是一个数组,我们通过css设置新的css属性

•properties:设置单元格的属性

示例:

setCell(“10”,“tax”,“’,{color:’red’,’text-align’:’center’}’,{title:’Sales Tax’})

将第10行中的tax字段的内容设置为红色并居中,并将标题更改为“Sales Tax”。

简而言之,我传递给方法的参数是设置css属性(第4个arg)而不是属性(第5个arg)。 结果是添加了两个标题属性,其中一个属性格式不正确。 下面显示了正确的方法调用,以完成我想要做的事情:

 grid.setCell(rowid, 'ExpirationDate', '', '',{ title: aData.ExpiredBy}); 

再次感谢redsquare帮助解决这个问题!

工具提示会显示什么信息? 让我们假设工具提示信息可能位于行的第一个单元格(隐藏)中。 您可以定位网格中的任何行,并使用.live方法覆盖任何新行。

 $('#gridId>tbody>tr').live('mouseover', showTip) .live('mouseoff', hideTip); function showTip(){ var $row = $(this); //get tooltip from first hidden cell var tipText = $row.children(':eq(0)').text() //append tipText to tooltip and show } function hideTip(){ //hide tip } 

清楚后你可以试试这个。 它假定您要更改的单元格是每行中的第四个单元格,并将单元格的标题设置为该单元格中的当前文本。 根据需要改变。

NB网格实际上通过对行使用整数id来破坏标准。 但是,以下应该仍然有效。

 $("#gridId").jqGrid({ ..., afterInsertRow : setCellTitle, ... }); function setCellTitle(rowid){ //get fourth cell in row var $cell = $(rowid).children(':eq(3)'); //set title attribute $cell.attr('title', $cell.text()); }