扩展IE WebControls之二:让TreeView的每个节点显示自己的ToolTip

作者:donna [email protected] 自由转载 但请保留作者信息
   
    我在自己的网页中用TreeView来做菜单导航,实际使用中经常遇到这种情况:由于需要显示的内容比较长而页面上又没有充足的空间来显示,导至用户不能看到节点的全部内容。于是我想到了ToolTip属性,当用户用鼠标指向某一节点时,在ToolTip里显示该项的使用内容。但TreeView控件并没有提供节点的ToolTip属性,于是就有了这篇随笔。
   
    1、为TreeView的节点添加ToolTip属性
    打开treenode.cs文件添加如下内容:

     // add by donna;ToolTip
     /// <summary>
    
/// ToolTip
    
/// </summary>

    [DefaultValue( "" )]
    [Category(
" Appearance " )]
    [ResDescription(
" ToolTip " )]
    
public   string  ToolTip
    
{
        
get
        
{
            
object obj = ViewState["ToolTip"];
            
return (obj == null? String.Empty : (string)obj;
        }


        
set { ViewState["ToolTip"= value; }
    }

    
// add end


    这样就可以在设计时或在运行时使用代码来修改节点的ToolTip了。
   
    2、在IE中显示ToolTip
    首先,打开treenode.cs文件,在protected override void RenderUpLevelPath(HtmlTextWriter output)方法中添加如下内容:
 

    // add by donna; 用于在IE中显示每个节点的ToolTip
     if  (ToolTip  !=   string .Empty)
        output.AddAttribute(
" title " ,ToolTip);
    
// add end
    然后,打开runtime目录下的treeview.htc文件,在function generateItem(el, nodeClass)方法中添加如下内容:
    
// modified by donna ;用于在IE中显示每个节点的ToolTip
     if  (element.getAttribute( " showToolTip " !=   false )
    
{
     str 
= getNodeAttribute(el, "title");
     
if (str != null && str != "")
     
{
      
if (nodeClass == "parent")
          accessAnchor.title 
= str + " : " + L_strToolTip_Text;
      
else
       accessAnchor.title 
= str;
     }

    }

    
// modify end

    
    3、在FireFox中显示ToolTip
    打开treenode.cs文件,在protected override void RenderDownLevelPath(HtmlTextWriter output)方法中添加如下内容:

     // add by donna;在FireFox中显示ToolTip
  if  (ParentTreeView.ShowToolTip  &&  ToolTip  !=   string .Empty)
 
{
  output.AddAttribute(HtmlTextWriterAttribute.Title, ToolTip);
 }

 
// add end

 
 使用方法:
 1、运行build.bat编译控件;
 2、将src\runtime\目录下所有内容复制到你的WEB应用程序目录的webctrl_client\1_0\目录下;
 3、请参考演示程序使用。

 环境:WIN2003、IIS6、VS2003、Framework1.1、IE6、FireFox1.5

代码下载

请参考:扩展IE WebControls之一:让Toolbar支持客户端事件

你可能感兴趣的:(treeview)