ASP.NET页面中动态增加的控件、添加事件

53 篇文章 0 订阅

/--------------------------利用计数器实现动态button的累加---------------------------------/

 

     在ASP.NET中动态创建一个控件总是不那么顺利,特别是当对页面的Life Cycle不是那么了然的情况下!这里简单描述一下要求,然后提供一个解决方案,大家看看有没有更好的Idea,如果有的话就是我的大幸了,呵呵!

  要求:页面上有一个Add按钮,每点击一次该按钮,页面上动态创建一个WebPartZone!

  提醒:WebPartZone只能在OnInit或之前才能创建,否则报异常!

  大家都知道,按钮的点击事件是在RaisePostbackEvent时触发的,这意味着点击事件在OnLoad阶段之后才执行,远远落后于 OnInit阶段,而且ViewState在OnLoad时才准备好,OnInit以及之前的阶段根本就不能使用ViewState!如果试图在按钮点击事件里面创建WebPartZone等控件,唯一的后果就是页面出错;而如果在OnInit里面创建控件,由于ViewState没有准备好,那么有些数据比如当前需要创建的个数(存在ViewState里面)就无法获得!

  目前对这个问题我还没有找到什么好的解决方案,经过实验,勉强得出一个不怎么优雅的方案,就是利用HiddenField保存数据,然后直接使用Request.Form["XXX"]在OnInit阶段取得数据;而判断是否点击按钮也是通过Request.Form是否存在对应数据来判断的!废话不多说了,大家看看代码吧!

 

 

==========================动态添加事件===================================

 

asp.net为控件动态添加事件

实现的功能是在网页上的Panel中动态添加一个Button,并为这个Button写一个单击事件。

动态添加控件的事件,语句:

具体的代码请看下面:

需要特别注意的是:

添加控件和给控件加事件时绝对不能放到 if(!IsPostback){}里面,那样的话,点击一次后控件会消失,而且事件也不

会执行。

 

 

-----------------------------------------asp.net为控件动态添加事件----------------------------------------------------

实现的功能是在网页上的Panel中动态添加一个Button,并为这个Button写一个单击事件。

动态添加控件的事件,语句:

具体的代码请看下面:

需要特别注意的是:

添加控件和给控件加事件时绝对不能放到 if(!IsPostback){}里面,那样的话,点击一次后控件会消失,而且事件也不

会执行。

 

 

 

-----------------------------asp.net 中服务器端控件动态添加事件和删除事------------------------------------------

PlaceHolder :控件容器,本身不显示,主要用来放服务器控件的,只显示其子元素(他里面的控件)

服务器控件动态添加和删除

 <一>PlaceHolder  中动态添加服务器端控件

添加控件的一般方法:

声明一个新控件 如 label lb =new label()

设置控件属性   如:lb.text="text"

添加控件到 PlaceHolder 中 如: PlaceHolder1.controls.add(lb)

可以用 ViewState[AddedControl]=null 判断是不是第一次执行

动态添加控件,如果需要数据绑定,要先添加控件,然后再数据绑定,提交后(postback) 就不需要重新绑定了

new 一下就可以了,如:

<二>panel中动态添加服务器端控件

在一个panel 中添加datagrid 并且绑定数据

<三> 给动态添加的控件添加事件:

如:给button 添加事件

这样二个按钮都对应一个函数,执行同一个事件

如果想让他们执行不同事件,

可以这样写:

<四>:在table中添加行和服务器端控件

在table中添加一行二列  table要转化服务器端控件

代码如下:

取得textbox中数据方法:

((TextBox)(TABLE1.Rows[m].FindControl("t" + m))).Text  第m行 id 为"t"+m的控件的值

添加html 控件,可以用 response.write("")

为服务器端控件添加客户端事件方法;

如:buttton.Attributes["onclick"] = "javascript:alert('shijain')";

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值