zoukankan      html  css  js  c++  java
  • Asp.net Treeview 客户端选中效果实现 (初级)

     

    Asp.net Treeview 客户端选中效果实现

    最近将asp.net默认自带的treeview控件,做成一个导航树,导向其它的几个站点,所以这样写

    TreeNode tn = new TreeNode();

    tn.Text = 新浪网;

    tn.NavigateUrl = "http://www.sina.com.cn";

    tn.Target = "mainFr";

    但是发现一个问题,所选中的树节点,不会选中效果

    导航树

    内嵌一个iframe name=” mainFr” 

    然后自然想起用自定义样式,来解决这个问题,于是从网络上随便COPY了一段样式回来如下:

    <asp:TreeView ID="TreeView1" runat="server" ShowLines="True">

                    <SelectedNodeStyle BackColor="White" VerticalPadding="1px" BorderColor="#888888"

                        BorderStyle="Solid" BorderWidth="1px" HorizontalPadding="3px"></SelectedNodeStyle>

                    <NodeStyle VerticalPadding="2px" Font-Names="Verdana" Font-Size="8pt" NodeSpacing="1px"

                        HorizontalPadding="5px" ForeColor="Black"></NodeStyle>

                    <HoverNodeStyle BackColor="#CCCCCC" BorderColor="#888888" BorderStyle="Solid" BorderWidth="1px"

                        Font-Underline="True"></HoverNodeStyle>

                </asp:TreeView>

    但结果你会发现只有鼠标移入移出有效果,点中是没有效果的,分析最后生成的HTML解析后的树节点如下:

     <table cellpadding="0" cellspacing="0" style="border-0;">

             <tr style="height:1px;">

                  <td></td>

             </tr><tr>

                  <td><img src="/pms2/WebResource.axd?d=NcGWj-qNqtl9MKe7hlPi6oqQI3MC5mSq6_3UjP0SAHw1&amp;t=633911118017187500" alt="" /></td><td class="TreeView1_2" onmouseover="TreeView_HoverNode(TreeView1_Data, this)" onmouseout="TreeView_UnhoverNode(this)" style="white-space:nowrap;"><a class="TreeView1_0 TreeView1_1" href="http://www.sina.com.cn" target="mainFr" onclick="javascript:TreeView_SelectNode(TreeView1_Data, this,'TreeView1t3');" id="TreeView1t3">3</a></td>

             </tr><tr style="height:1px;">

                  <td></td>

             </tr>

         </table>

    分析上面这段HTML,发现构成一个treenode对象是由<Td><a>标记来生成,看到这里,自然就想在<a> 加上一个自己的onclick客户端事件,点击这个<a>标签的时候能够变化树的当前选中样式,于是想到继承TreeNode对象,再AddAttribute("onclick", "tn_Click(this);");即可。

    代码如下:

    public class TreeNodeEx : TreeNode

        {

            protected override void RenderPreText(HtmlTextWriter writer)

            {

                writer.AddAttribute("onclick", " tn_Click(this);");

                base.RenderPreText(writer);

            }

        }

    构造节点的时候代码如下:

    TreeNodeEx  tn = new TreeNodeEx();

                    tn.Text = 新浪网;

                    tn.NavigateUrl = "http://www.sina.com.cn";

                    tn.Target = "mainFr";

    前台的JS代码如下:

    tn_Click 函数

    function tn_Click(obj)

    {

                var ds = document.getElementById("TreeView1").getElementsByTagName("a");

                for(var i=0;i<ds.length;i++)

                {

                    if(ds[i].className!="" && ds[i]!=obj)

                    { 

                        //普通状态样式

                        ds[i].className="TreeView1_1";

                        //alert(ds[i].className);

                    }

                    else

                    {

                        //选中的样式

                        obj.className = "TreeView1_1 TreeView1_5";

                    }

                }

            }

     

  • 相关阅读:
    甲午年总结
    浅谈数字营销
    机器学习笔记
    上海GDG活动有感
    我也谈谈游戏
    CSS3新增属性
    js事件详解
    DOM与BOM相关操作
    JS基础知识
    js数据类型
  • 原文地址:https://www.cnblogs.com/upshania/p/1661662.html
Copyright © 2011-2022 走看看