• 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";

                    }

                }

            }

     

  • 相关阅读:
    利用dockerfile定制镜像
    发布Docker 镜像到dockerhub
    Docker 停止容器
    133. Clone Graph
    132. Palindrome Partitioning II
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    127. Word Ladder
  • 原文地址:https://www.cnblogs.com/upshania/p/1661662.html
Copyright © 2020-2023  润新知