- 热门文章:
- · 解决ASP.NET创建的线程的用户改变引发的拒绝访问错误
- · 有关sql注入
- · 一个动态编译的例子
- · 一个拷贝整个文件夹(包括子文件夹)的方法(原创)
- · 在ASP.NET中实现弹出日历
- · 在DataGrids和DropDownLists中使用ADO
- · asp.net 页面中生成 RSS 2.0 提要
- · Session登陆后丢失的解决办法
- · 基于HTTP协议用WinSock实现任意文件下载
- · 奔腾Flash Player source code
- · 《Essential .Net》读书笔记 - Chapter 2
- · 《Essential .Net》读书笔记 - Chapter 1
Asp.net中Treeview终极解决方案
最近在做权限模块,挺头痛的东西。不包括权限部分的业务,还包括权限部分的界面实现。由于采用了微软的Treeview控件来分配权限,所以碰到网上热烈讨论的有关TreeView操作的刷新问题,在众位先人和同事的帮助下,终于使Treeview的问题得到了较好的解决。
1、前台控制展开,收缩,Check/UnCheck,后台控制SelectedIndexChanged。
解决方法:
将autopostback设置成false;
在body里添加 <body onload="initTree()">
然后在PageLoad里写:
string strTreeName = "TreeView1";
string strRef = Page.GetPostBackEventReference(TreeView1);
string strScript = "<script language=\"JavaScript\"> \n" + "<!-- \n" + " function initTree() { \n" +" " + strTreeName + ".onSelectedIndexChange = function() { \n" + "if (event.oldTreeNodeIndex !=
event.newTreeNodeIndex) \n" + "this.queueEvent(@#onselectedindexchange@#, event.oldTreeNodeIndex + @#,@# + event.newTreeNodeIndex); \n" + "window.setTimeout(@#" + strRef.Replace("@#","\\@#") + "@#, 0, @#JavaScript@#); \n" + " } \n" + " } \n" + "// --> \n" + "</script>";
Page.RegisterClientScriptBlock("InitTree",strScript );
2、在CheckBox情况下。在前台选择checkbox后进行刷新,发现Checkbox的状态变得混乱,有些应该被选上的被弄丢了。这个问题是微软Treeview.htc中的一个bug,而且问题之前网上一直未发现有好的解决方法。昨天发现有位牛哥解决了这个问题,他完善了htc文件,并且在htc中增加了在checkbox情况下父子联动的效果,对于需要实现这个功能而对JS不太熟的人真是个福音啊,因为这意味着你不用写任何代码就可以实现这个功能了,真是非常感激啊。我把这位牛哥文章的http提供给大家:http://blog.csdn.net/cuike519/archive/2005/02/02/278271.aspx
3、对于SelectedIndexChanged,可以做到进一步的自定义。即如果树有三层,可以使点击第一层,第二层时不进行Postback,只是在选择第三层时才进行Postback。
这个其实就是在第一点上进行修改,对于onSelectedIndexChange 处发的条件进行扩充。上面代码中只是判断了如果新节点与旧节点不是同一节点,就触发SelectedIndexChange,执行_dopostback,你只要将条件改成你想要的限制条件就可以做到你想要的控制。不过要注意if后面的语句啊,if后面没有跟{号,如果你要加附加条件的话,意味着应该有条件的执行后面两句。
以上就是我两天来的成果,呵呵。
下一篇:解决ASP.NET创建的线程的用户改变引发的拒绝访问错误 >>
相关文章:
- · 获取指定IP的终端的MAC地址
- · 网络传输(FTP)问题
- · Paint.NET: An Open Source GDI+ App Likes Photoshop
- · 看到有人用 WebClient来下载, 发篇用 WebRequest 实现有进度下载的吧.
- · 树形控件TreeView的序列化
- · 使用javascript+XML实现分页
- · 使用Control.Invoke处理多线程应用程序界面
- · WEB页面TreeView的应用-(得到所有选中的节点)
- · DotNetNuke(DNN)
- · 枚举器模式(Enumerator pattern)
- · 用ASP.NET 1.1 新特征防止Script攻击
- · 关于ASP.Net中的时间处理
- · javascript实现的数据表格:冻结列、调整列宽和客户端排序
- · [常见问题]cookie使用1.Page与HttpContext的Request、Response
- · 怎样在页面和页面的用户控件进行交互
- · webform页面间传值的特殊方法
- · 怎么直接建立一个DataTable并且为之添加数据
- · 我的第一个Asp.Net程序
- · 如何把数据放到web不能访问的文件夹中并给用户下载?
- · How to handle the concurrency problems on ASP.Net Database
- · 后台动态设置前台标签内容和属性
- · ASP.NET中让同一个页面不同的文本框回车响应不同的事件
- · 认识ASP.NET配置文件Web.config
- · 将ArrayList中的ListItem绑定到DropDownList中去
- · 安全存放web项目数据库连接字符串
- · 分享:Project级别的权限控制
- · Solidworks二次开发—06—在装配体中添加配合
- · 在Repeater中嵌套使用Repeater
- · 一个简单的加密/解密方法
- · 加入身份验证信息的SMTP mail发送
- · webconfig的设置节点说明
- · 现有的Web打印控制技术分成几种方案
- · 一段实现DataGrid的“编辑”、“取消”功能脚本[无刷新]
- · WEB图片高清晰浏览同打印
- · Tangram与软件的组合构造
- · solidworks二次开发-04-修改数据
- · Solidworks二次开发-05-装配体中插入零部件
- · solidworks二次开发-03-访问特征数据
