可以用 AddRowData 定义 jqGrid 悬停文本吗?

Posted

技术标签:

【中文标题】可以用 AddRowData 定义 jqGrid 悬停文本吗?【英文标题】:Can jqGrid hover text be defined with AddRowData? 【发布时间】:2011-11-16 08:12:53 【问题描述】:

在jqGrid中,是否可以在添加行数据的同时定义单元格的标题(悬停)文本?

var rowid;

for(var j=0;j<10;j++)
  
      rowid = jQuery.Guid.New();
      jQuery("#myJqGrid").jqGrid('addRowData',rowid,Amount:"$"+j+".00",Date:"09/30/2015");
  

我不希望在网格完成后不必在网格上循环,因为在添加行时,自定义悬停文本所需的 RowID 和数据更容易获得。

谢谢!

【问题讨论】:

【参考方案1】:

如果您只需要在网格中的某些特定单元格上设置自定义工具提示,您可以使用setCell(参见here 示例)。如果您想在某个列的所有单元格上设置工具提示,但使用自定义规则(不仅仅是与单元格值相同的工具提示),您可以更好地使用cellattr。例如,您可以使用

name: 'name', index: 'name', width: 70,
    cellattr: function (rowId, val, rawObject, cm, rdata) 
        return 'title="' + rawObject.name + ' (' + rawObject.note + ')"';
    

查看演示 here,其中显示以下工具提示:

如果你对性能感兴趣,你不应该使用旧的addRowData 方法,它有很多缺点:

如果您在输入数据中有日期并使用 formatter: 'date' 那么您必须使用 formatoptions: reformatAfterEdit: true 使日期格式正确。您将在the documentation 中几乎找不到有关该选项的信息。 您在行之后插入的数据将全部放在同一页上。要获得正确的本地日期分页,您必须再次重新加载网格。 与data 参数结合gridview: true 参数的使用(上面的de demo)相比,addRowData 的网格包含的构建要慢得多。如果行数很大,您可以看到差异。 在创建使用cellattraddRowData 的演示期间,我在the line 的jqGrid 中发现了一个错误,其中两个参数rowiddata 被交换了。我刚刚发布了the bug report。所以要将cellattraddRowData 一起使用,您必须对jquery.jqGrid.src.js 进行小修改。

查看使用 addRowData here 的演示。如果使用 jquery.jqGrid.src.js 的修改版本(详见我的错误报告)

【讨论】:

> 如果您对性能感兴趣,则不应使用旧的 addRowData 方法。有什么东西可以取代 addRowData? 另外,cellattr 的 rawObject 是未定义的。是否需要进行自定义修改才能使其正常工作? @Mark Maslar:请仔细阅读我的回答。 1)我写道“data 参数与gridview: true 参数结合使用”(请参阅​​the first demo)为您提供更好的性能,因为addRowData 2)没有undefined 导致工具提示如果使用addRowData,您必须使用the bug fix。它用于the second demo。 @Oleg - 你以前使用过带有 QTip 的 JqGrid 吗?我喜欢做的是悬停在一个超链接的 ID 字段上,我喜欢调用 QTip 并做一个 JSON。 @WebDev:我以前没有使用过 QTip,但您似乎应该在 <a> 元素上调用 qtip。要回答您的问题,您应该发布更多详细信息,如何在 jqGrid 中创建超链接以及要显示的工具提示。无论如何,您都应该从包含超链接的colModel 发布列的定义。

以上是关于可以用 AddRowData 定义 jqGrid 悬停文本吗?的主要内容,如果未能解决你的问题,请参考以下文章

运行addRowData时,jqGrid分组功能消失

JqGrid把数据行插入指定位置的方法addRowData

使用jqGrid过程中出现的问题

jqgrid 禁用默认客户端排序并手动处理

如何在不重新加载网格的情况下将行添加到下一页中的 jqGrid?

jqGrid细节备注—jqGrid中自定义格式,URL格式