Web下TreeView同一节点连续点击,只执行一次SelectedNodeChanged的解决

 
 
一、本章主要介绍.NET一个小技巧,在web下的TreeeView,当对一个节点进行SelectedNodeChanged后,如果再次连续单击这个节点,则SelectedNodeChanged不会再触发,为了使SelectedNodeChanged每次都执行,要进行如下操作:
     在SelectedNodeChanged事件里,对选中的节点马上将其Selected属性置为false

二、具体例子如下:
    我的Web应用的名字为MingXu.WebSite,我在根目录下见了一个目录Controls,用来放WebUserControl,我的例子就是一个WebUserControl。

WebUserControl代码如下:
1、前台页面内容:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ucTreeList.ascx.cs" Inherits="MingXu.WebSite.Controls.ucTreeList" %>
<asp:TreeView ID="tvTest" runat="server"
    onselectednodechanged="tvTest_SelectedNodeChanged">
</asp:TreeView>
<p>
    显示选中节点的Text:<asp:TextBox ID="txtSelectedNodeText" runat="server"></asp:TextBox>
    节点单击计数器:<asp:TextBox ID="txtCount" runat="server"></asp:TextBox>
</p>

2、后台文件:
//******************************************************
//文件名:ucTreeList.ascx
//功能:Web下TreeView同一节点连续点击,只执行一次SelectedNodeChanged的解决
//作者:徐明
//日期:2009-11-4
//*******************************************************

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace MingXu.WebSite.Controls
{
    public partial class ucTreeList : System.Web.UI.UserControl
    {
        private static int _count = 0;

/// <summary>
        /// 功能:构造一个树
        /// 作者:Jerry
        /// 日期:2009-11-4
        /// </summary>
        private void LoadTree()
        {
            tvTest.Nodes.Clear();

TreeNode rootNode = null;
            TreeNode pNode1 = null;
            TreeNode pNode2 = null;

rootNode = new TreeNode("Root");
           
            pNode1 = new TreeNode("pNode1");
            pNode1.ChildNodes.Add(new TreeNode("Node1"));
            pNode1.ChildNodes.Add(new TreeNode("Node2"));

pNode2 = new TreeNode("pNode2");
            pNode2.ChildNodes.Add(new TreeNode("Node3"));
            pNode2.ChildNodes.Add(new TreeNode("Node4"));

rootNode.ChildNodes.Add(pNode1);
            rootNode.ChildNodes.Add(pNode2);

tvTest.Nodes.Add(rootNode);
        }

/// <summary>
        /// 功能:加载树
        /// 作者:Jerry
        /// 日期:2009-11-4
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                LoadTree();
        }

/// <summary>
        /// 功能:树节点SelectedNodeChanged事件
        /// 作者:Jerry
        /// 日期:2009-11-4
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void tvTest_SelectedNodeChanged(object sender, EventArgs e)
        {
            txtSelectedNodeText.Text = tvTest.SelectedNode.Text;
            txtCount.Text = _count++.ToString();
            //置选中节点的Selected属性为false
            tvTest.SelectedNode.Selected = false;
           
        }
    }
}

3、资源文件:
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.3603
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace MingXu.WebSite.Controls {
   
   
    public partial class ucTreeList {
       
        /// <summary>
        /// tvTest control.
        /// </summary>
        /// <remarks>
        /// Auto-generated field.
        /// To modify move field declaration from designer file to code-behind file.
        /// </remarks>
        protected global::System.Web.UI.WebControls.TreeView tvTest;
       
        /// <summary>
        /// txtSelectedNodeText control.
        /// </summary>
        /// <remarks>
        /// Auto-generated field.
        /// To modify move field declaration from designer file to code-behind file.
        /// </remarks>
        protected global::System.Web.UI.WebControls.TextBox txtSelectedNodeText;
       
        /// <summary>
        /// txtCount control.
        /// </summary>
        /// <remarks>
        /// Auto-generated field.
        /// To modify move field declaration from designer file to code-behind file.
        /// </remarks>
        protected global::System.Web.UI.WebControls.TextBox txtCount;
    }
}

4、新建一个WebForm,把这个用户控件拖进去,然后,把这个页设为默认页,启动运行就能看到结果,结果页面如下:

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/net_boy/archive/2009/11/05/4772227.aspx

Web下TreeView同一节点连续点击,只执行一次SelectedNodeChanged的解决的更多相关文章

  1. 小技巧--让JS代码只执行一次

    有时候实在是没办法,就像我这个比赛系统中,有一个弹出框,这个弹出框之外都是模糊的(这是在ajax写出弹出框时,加了一个水印). 然而遇到的问题,也是蹊跷古怪,因为这个弹出框的事件是数据查询事件,但是因 ...

  2. js函数只执行一次,函数重写,变量控制与闭包三种做法

    一.情景需求 调用后台接口需要附带token信息,那么在每个请求的头部添加token的做法就不太优雅了:一个网站请求100次,那就得写添加100次token,假设某天接口有所变动,改起来就十分麻烦了. ...

  3. selenium+python+unittest:一个类中只执行一次setUpClass和tearDownClass里面的内容(可解决重复打开浏览器和关闭浏览器,或重复登录等问题)

    unittest框架是python自带的,所以直接import unittest即可,定义测试类时,父类是unittest.TestCase. 可实现执行测试前置条件.测试后置条件,对比预期结果和实际 ...

  4. java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次

    java后台controller中,for循环执行数据库操作,但是发现实际仅仅执行了一次,或者说提交成功了一次,并没有实际的个数循环 有可能是同一个对象导致的 可以仔细看一下下面两段代码有什么区别 p ...

  5. system.web下的HttpModules节点和system.webServer下的modules节点的配置区别

    [转]自定义HttpModule的一些经验--配置篇 自定义web模块,需继承System.Web.IHttpModule接口 一:拦截对该服务器所有的http请求. 第一步:将自定义module类使 ...

  6. IE下单选按钮隐藏后点击对应label无法选中的bug解决

    项目中,有时候填写表单我们的选项会隐藏掉radio或者checkbox,而只显示给用户对应的文字选择,如果用户点击label选择时,在FF/Chrome等标准浏览器中隐藏掉的radio/checkbo ...

  7. 让一个继承unittest.TestCase的类下的setUp和tearDown只执行一次

    知道unittest单元测试框架的朋友应该都知道, 执行继承了unittest.TestCase的类下每个test开头的方法(就是用例)时,都会执行setUp和tearDown,如下面的例子所示: i ...

  8. html中连续点击某个标签会出现蓝色的解决方法

    给标签加上下面的属性就可以了,也可以把这些属性建立一个class名,谁需要的时候加上也ok -moz-user-select: none; /*mozilar*/ -webkit-user-selec ...

  9. java中的static代码块为什么只执行一次

    原因在最后,这是其中的一个小例子. 如: SessionFactory负责保存和使用所有配置信息,消耗内存资源非常大 所以一个web项目要保证只创建一个SessionFactory 那么在使用hibe ...

随机推荐

  1. 面试题:SSH项目总结 !=!=未看 没用

    阿玻罗软件(上海)有限公司已经两年了.中国银行营销系统,到民生银行小微信贷工厂建设.再到交通银行ioffice移动平台项目.以前所学的SSH好多都用不上 公司的框架.都是负责项目的贷款查找模块开发和测 ...

  2. jQuery基础教程-第8章-002Adding jQuery object methods

    一.Object method context 1.We have seen that adding global functions requires extending the jQuery ob ...

  3. win10手动开启wifi

    win+R键,输入cmd,以管理员身份运行,输入netsh wlan set hostednetwork mode=allow ssid=wifi key=wifimima123回车 解释一下: ss ...

  4. 在Asp.Net中使用amChart统计图

    怎么在自己的ASP.NET页面插入可动态更新的数据统计图呢?网上的资源倒是不少(Fusioncharts.amCharts……),在这些资源中有一个比较好用:amChart,这个工具很炫,还能与用户交 ...

  5. hdu 1556 Color the ball (线段树做法)

    Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a ...

  6. 编写高质量代码改善C#程序的157个建议——建议56:使用继承ISerializable接口更灵活地控制序列化过程

    建议56:使用继承ISerializable接口更灵活地控制序列化过程 接口ISerializable的意义在于,如果特性Serializable,以及与其像配套的OnDeserializedAttr ...

  7. 设计模式07: Bridge 桥接模式(结构型模式)

    Bridge 桥接模式(结构型模式) 抽象与实现 抽象不应该依赖于实现细节,实现细节应该依赖于抽象. 抽象B稳定,实现细节b变化 问题在于如果抽象B由于固有的原因,本身并不稳定,也有可能变化,怎么办? ...

  8. document.domain 跨域问题

    document.domain用来得到当前网页的域名. 比如在地址栏里输入:javascript:alert(document.domain); //www.315ta.com我们也可以给docume ...

  9. 使用Jenkins远程部署war包到tomcat container

    Jenkins首先使用maven将源代码进行编译打包,之后需要将war包传送到tomcat服务器上进行部署. 来看一下Jenkins的基本配置,首先需要安装插件"Deploy to cont ...

  10. perationalError: (2003, "Can't connect to MySQL server on u'192.168.1.6' (timed out)")

    在Ubuntu(192.168.1.20)中部署项目后,mysql还在另外一台windows(192.168.1.6)机子上,ping windows时可以ping通,但是访问项目提示: perati ...