作者:donna donna.zdn@gmail.com 自由转载 但请保留作者信息
   
    我在自己的网页中用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支持客户端事件

posted on 2006-08-25 16:29  donna  阅读(2890)  评论(3编辑  收藏  举报