Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
367 views
in Technique[技术] by (71.8m points)

jquery - Can jqGrid hover text be defined with AddRowData?

In jqGrid, is it possible to define a cell's Title (hover) text while adding row data?

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

I'd prefer not to not to have to loop over the grid after it has completed, as the RowID and the data that is needed for the custom hover text are more readily available while the row is being added.

Thanks!

Question&Answers:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

If you just need to set custom tooltip on some specific cells in the grid you can use setCell (see here an example). If you want to set tooltips on all cells of some column, but with a custom rule (not just the same tooltip like the cell value), you can better use cellattr. For example you can use

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

See the demo here which display the following tooltips:

enter image description here

If you have an interest for performance you should not use old addRowData method which has many disadvantages:

  • If you has date in input data and use formatter: 'date' then you have to use formatoptions: {reformatAfterEdit: true} to make the date correct formatted. You will find almost no information about the option in the documentation.
  • The data which you inserted row after the row will be all placed on the same page. To have correct local date paging you have to reload the grid one more time.
  • Compare with the usage of data parameter in combination with gridview: true parameter (the de demo above) the building of grid contain with respect of addRowData is much slowly. You can see the difference if the number of row is large.
  • During creating of the demo which use cellattr and addRowData I found a bug in the jqGrid in the line where two parameters rowid and data are swapped. I just now posted the bug report. So to use cellattr together with addRowData you have to make small modification in jquery.jqGrid.src.js.

See the demo which use addRowData here. If used modified version of jquery.jqGrid.src.js (see my bug report for details)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...