asp.net 页面中动态增加的控件、添加事件第1/2页 -k8凯发
要求:页面上有一个add按钮,每点击一次该按钮,页面上动态创建一个webpartzone!
提醒:webpartzone只能在oninit或之前才能创建,否则报异常!
大家都知道,按钮的点击事件是在raisepostbackevent时触发的,这意味着点击事件在onload阶段之后才执行,远远落后于 oninit阶段,而且viewstate在onload时才准备好,oninit以及之前的阶段根本就不能使用viewstate!如果试图在按钮点击事件里面创建webpartzone等控件,唯一的后果就是页面出错;而如果在oninit里面创建控件,由于viewstate没有准备好,那么有些数据比如当前需要创建的个数(存在viewstate里面)就无法获得!
目前对这个问题我还没有找到什么好的凯发k8国际手机app下载的解决方案,经过实验,勉强得出一个不怎么优雅的方案,就是利用hiddenfield保存数据,然后直接使用request。
form[“xxx”]在oninit阶段取得数据;而判断是否点击按钮也是通过request。form是否存在对应数据来判断的!废话不多说了,大家看看代码吧!
代码如下:
private void page_load(object sender, system。
eventargs e)
{
button button1 = new button();
button1。commandargument = “b1”;
button1。
text = “btn1”;
button1。command = new commandeventhandler(this。onbutton);
placeholder1。controls。add(button1);
button button2 = new button();
button2。
commandargument = “b2”;
button2。text = “btn2”;
button2。command = new commandeventhandler(this。onbutton);
placeholder1。
controls。add(button2);
control c3 = parsecontrol(“
control c4 = parsecontrol(“
placeholder1。
controls。add(c3);
placeholder1。controls。add(c4);
button mybut = (button)page。findcontrol(“button3”);
mybut。
command = new commandeventhandler(this。onbutton);
button mybut2 = (button)page。findcontrol(“button4”);
mybut2。
command = new commandeventhandler(this。onbutton);
}
public void onbutton(object sender, commandeventargs e)
{
switch (e。
commandargument。tostring()。tolower())
{
case “b1”:
label1。text = “button 1”;
break;
case “b2”:
label1。
text = “button 2”;
break;
case “b3”:
label1。text = “button 3”;
break;
case “b4”:
label1。
text = “button 4”;
break;
};
}
asp。net为控件动态添加事件
实现的功能是在网页上的panel中动态添加一个button,并为这个button写一个单击事件。
动态添加控件的事件,语句:
代码如下:
control。command = new commandeventhandler(this。eventfun);
具体的代码请看下面:
需要特别注意的是:
添加控件和给控件加事件时绝对不能放到 if(!ispostback){}里面,那样的话,点击一次后控件会消失,而且事件也不
会执行。
代码如下:
protected void page_load(object sender, eventargs e)
{
//将输入字符串分析为system。web。
ui。control对象,b为传进去的值
control c = parsecontrol(“
//将控件添加大panel中
this。
panel1。controls。add(c);
//查找页面名为mybutton的控件
button button = (button)page。findcontrol(“mybutton”);
//添加事件on_button
button。
command = new commandeventhandler(this。on_button);
}
//commandeventargs为command事件提供数据
protected void on_button(object sender,commandeventargs e)
{
response。
write(“”);
}
12下一页阅读全文。
1.文章《asp.net 页面中动态增加的控件、添加事件第1/2页》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚凯发k8国际手机app下载的联系方式。
2.文章《asp.net 页面中动态增加的控件、添加事件第1/2页》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。