不知道单位为什么一直在用vs2003而不用vs2005,自己本来就是一个菜得不能再菜的菜鸟了。做了好几年的web开发。到现在很多东西还是第一次使用。所以感觉自己浪费了太多时间。唉。。。。。。。。
说了一些费话啊。在vs2003里,treeview是没有被集成的,你得去下一个。这个就不多说了。现在说一下如何在它的上面加上复选框。在vs2005里面,属性里有一个属性可以直接选择,可是在vs2003里却不行。它有一个属性是node.CheckBox=true/false。默认情况是false所以 你要在生成节点的时候在下面加上它才行。
TreeNode node = new TreeNode();
node.CheckBox = true;
这样你就会发现所有的节点的前面出现一个复选框了。
展开时不提交,改变选择节点时才提交。这个功能其实是就是让你写一段javascript代码。让它来完成autopostback的功能。好了说一下它的实现。
一,autopostback的属性值设置成false
二,<body οnlοad="initTree()">这里加上οnlοad="initTree()"
三,在后台Page_Load中写入如下代码:
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 );
这里大家要注意,strTreeName变量里的值是你的treeview的名字。
变量strScript变量里的内容千万不要折行,不然的话,会提示说你有错误。
试一下,是不是在点开结点的时候。不会再有闪烁的感觉了。这里还有一个问题,当你点选其中一个节点时,你会发现多出一个根节点,而且展开后,里面是所有的节点,你点几个就会出现几个。这是为什么呢。
呵呵。。。。因为在上面说的第三步中的代码,是不能放到!Page.IsPostBack里的,否则会提示出错。但是我们在在处理树节点显示的问题时,又必须放在!Page.IsPostBack里,否则一旦出现刷新,就会发生上面的问题,会重复出现多个树。这个时候,我们只要把上面第三步的代码,放到!Page.IsPostBack的外面。而别的代码依然放在!Page.IsPostBack的里面。这样就可以了。
试一下,还是比较好用的吧。不过我想很少有人会用了。因为大家都在用vs2005吗。呵呵。。。。。。。。。
转载于:https://www.cnblogs.com/chen79/archive/2007/11/29/976943.html