首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

ExtJS Grid Tooltip提醒

2012-11-22 
ExtJS Grid Tooltip提示本文总结了ExtJS Grid Tooltip的几种实现方法。ExtJS Grid Tooltip可以通过表头提示

ExtJS Grid Tooltip提示

    本文总结了ExtJS Grid Tooltip的几种实现方法。ExtJS Grid Tooltip可以通过表头提示,单元格提示,行提示以及自己手动添加等方式完成。本文参考了官方FAQ上提供的描述。

    ExtJS Grid Tooltip实现之一:表头提示

    在2.2里面是设置ColumnModel.tooltip ,3.0则是Column. tooltip 如下:

    1. var?grid?=?new?Ext.grid.GridPanel({?? ???columns:[?? ?
    2. ????{header:'名称',dataIndex:'name',tooltip:'对象名称'},?? ?????{header:'开始时间?-?结束时间?<?br/>成功/失败/成功率',?dataIndex:'sucRate',tooltip:'成功/失败/成功率'}?? ?
    3. ??]?? ?});??

    ExtJS Grid Tooltip实现之二:单元格提示

    1)使用Ext.QuickTips

    在开始的时候就执行Ext.QuickTips.init();

    然后对需要提示的单元格,重写renderer函数,添加ext:qtitle , ext:qtip这2个属性即可。

    这个在官方的FAQ上有详细描述: http://extjs.com/learn/Ext_FAQ_Grid#Add_ToolTip_or_Qtip

    1. //option?1?? ? //========?? ?
    renderer?=?function?(data,?metadata,?record,?rowIndex,?columnIndex,?store)?{?? ?
      ????//build?the?qtip:?? ?
    1. ????var?title?=?'Details?for?'?+?value?+?'-'?+?record.get('month')?+?? ? ????????'-'?+?record.get('year');?? ?
    2. ????var?tip?=?record.get('sunday_events');?? ? ??? ?
    3. ????metadata.attr?=?'ext:qtitle="'?+?title?+?'"'?+?'?ext:qtip="'?+?tip?+?'"';?? ? ??? ?
    4. ????//return?the?display?text:?? ? ????var?displayText?=?'<?span?style="color:?#000;">'?+?value?+?'<?/span><?br?/>'?+?? ?
    5. ????????record.get('sunday_events_short');?? ? ????return?displayText;?? ?
    6. };?? ? ??? ?
    7. //option?2?? ? //========?? ?
    8. renderer?=?function?(data,?metadata,?record,?rowIndex,?columnIndex,?store)?{?? ? ????var?qtip?=?'>';?? ?
    9. ????if(data?>=?0){?? ? ????????qtip?=?"?qtip='yeah'/>";?? ?
    10. ????????return?'<?span?style="color:green;"'?+?qtip?+?data?+?'%<?/span>';?? ? ????}else?if(data?<??0){?? ?
    11. ????????qtip?=?"?qtip='woops'/>";?? ? ????????return?'<?span?style="color:red;"'?+?qtip?+?data?+?'%<?/span>';?? ?
    12. ????}?? ? ????return?data;?? ?
    13. };?? ? ??? ?
    14. //option?3?? ? //========?? ?
    15. var?qtipTpl?=?new?Ext.XTemplate(?? ? ????'<?h3>Phones:<?/h3>',?? ?
    16. ????'<?tpl?for=".">',?? ? ????'<?div><?i>{phoneType}:<?/i>?{phoneNumber}<?/div>',?? ?
    17. ????'<?/tpl>'?? ? );?? ?
    18. ??? ? renderer?=?function?(data,?metadata,?record,?rowIndex,?columnIndex,?store)?{?? ?
    19. ??? ? ????//?get?data??? ?
    20. ????var?data?=?record.data;?? ? ??? ?
    21. ????//?convert?phones?to?array?(only?once)??? ? ????data.phones?=?Ext.isArray(data.phones)???? ?
    22. ????????data.phones?:??? ? ????????this.getPhones(data.phones);?? ?
    23. ??? ? ????//?create?tooltip??? ?
    24. ????var?qtip?=?qtipTpl.apply(data.phones);?? ? ??? ?
    25. ????metadata.attr?=?'ext:qtitle="'?+?title?+?'"'?+?'?ext:qtip="'?+?tip?+?'"';?? ? ??? ?
    26. ????//return?the?display?text:?? ? ????return?data;?????? ?
    27. };???

    2)使用ToolTip

    官方也已经给出方法:

    http://extjs.com/forum/showthread.php?p=112125#post112125

    http://extjs.com/forum/showthread.php?t=55690

    以上给出的方法是可以让一个grid里面的元素共享一个tooltip对象。一般用来做rowtip

    不过3.0有更好的方式,如下:

    ExtJS Grid Tooltip实现之三:行提示 RowTip

    ExtJS3.0新增的方法,设置tooltip的delegate

    1. var?myGrid?=?new?Ext.grid.gridPanel(gridConfig);?? ? myGrid.on('render',?function(grid)?{?? ?
    2. ????var?store?=?grid.getStore();??//?Capture?the?Store.?? ? ?? ?
    ????var?view?=?grid.getView();????//?Capture?the?GridView.?? ?
      ?? ?
    1. ????myGrid.tip?=?new?Ext.ToolTip({?? ? ????????target:?view.mainBody,????//?The?overall?target?element.?? ?
    2. ?? ? ????????delegate:?'.x-grid3-row',?//?Each?grid?row?causes?its?own?seperate?show?and?hide.?? ?
    3. ?? ? ????????trackMouse:?true,?????????//?Moving?within?the?row?should?not?hide?the?tip.?? ?
    4. ?? ? ????????renderTo:?document.body,??//?Render?immediately?so?that?tip.body?can?be?referenced?prior?to?the?first?show.?? ?
    5. ?? ? ????????listeners:?{??????????????//?Change?content?dynamically?depending?on?which?element?triggered?the?show.?? ?
    6. ?? ? ????????????beforeshow:?function?updateTipBody(tip)?{?? ?
    7. ?????????????????? var rowIndex = view.findRowIndex(tip.triggerElement);
      ?
      ??????????????????? if(!Ext.isEmpty(content)){
      ?? ??????????????? ??? ?tip.body.dom.innerHTML = "提示信息";
      ?? ???????????????? }else{
      ?? ??????????????? ??? ?return false; //停止执行,从而禁止显示Tip
      ?? ??????????????? ??? ?tip.destroy();
      ?? ???????????????? }

    8. ????????????}?? ? ????????}?? ?
    9. ????});?? ? });???

热点排行