晟晟的Blog asp.net学习笔记
晟晟的成长历程,点滴积累。 asp.net,C#,ajax,javascript,sqlserver,css+div

      ASP.NET 2.0使用TreeView控件时发现带有CheckBox控件的TreeNode对象(Treeview节点),选择CheckBox无法回发页面。在MSDN中对于TreeView, TreeNodeCheckChanged事件有一段备注:“当TreeView控件的复选框的两次向服务器发送之间要更改状态时,会引发TreeNodeCheckChanged事件。这使您可以提供一个这样的事件处理方法,即每次发生此事件时执行一个自定义例程(如更新数据库或显示的内容)。尽管TreeNodeCheckChanged事件在回发时激发,但更改复选框不会导致回发。”说明框架本身并不提供一个CheckBoX回发的机制。

      尽管点击CheckBox不会引起回发(PostBack),这样做能够做到checkbox的自动回发。

      但在构建树的时候,是没有办法在TreeNode上定义事件,所有我们把这个事件加在TreeView上。

 

TreeView1.Attributes.Add("onclick""postBackByObject()"); //注册客户端事件

 

Code

 

      在.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack("","")这个函数。

 第一个参数是你希望提交到服务器的控件的ID号,第二个参数为事件参数。

      __doPostBack()函数不是每次后台编译都生成,拉或者出一个TreeView或者DataGrid它就会有。如果没有,我们也可以在后台添加它。

      __doPostBack()的原型如下:

    

Code

 

      其它控件也可以调用这个事件。比如:TextBox1.Attributes["onclick"] = "__doPostBack(Button1,")",那它不仅可以返回服务器处理,还能调用其它控件的特有函数。

      后台CS代码如下:

      

Code

 

      注意:每次回传Page_Load事件是第一个执行的事件。

 

      相关资料来源:

      1. http://www.cnblogs.com/jerry-chen/archive/2009/04/15/1436571.html

      2. http://www.cnblogs.com/bobxie85/archive/2008/07/08/1238481.html

posted on 2009-05-11 23:31  晟晟  阅读(2406)  评论(1编辑  收藏  举报