- 热门文章:
- · Implementing Cross-Browser Compatible Smart Navigation Features
- · ASP.NET立即上手教程 13(完)
- · 关于多层repeater,datagrid,datalist嵌套的示例
- · Display hierarchical data with TreeView
- · 怎么后台添加CheckBoxList并且得到选择结果
- · HTTP Downloader for Updater Application Block 2 (GotDotNet)
- · HOW TO:从资源管理器中拖放文件到控件
- · dataGrid在页面拖动(用表头),不刷新页面
- · winform下如何检测你一个给定的网址(Ull),是否可访问?
- · Abstract Factory pattern -- Structural example
- · XML-RPC学习笔记(一)
- · [VS宏]根据函数名称定位函数
上一篇:(论坛答疑点滴)如何得知调用当前方法的方法名? >>
(论坛答疑点滴)用户控件动态加载PostBack后的问题
很多网友在按钮的click事件中动态添加用户控件在页面回传后消失了或者就是用户控件中的按钮事件不能触发,下面是解决办法:
(1)
首先添加一个用户控件:WebUserControl1.ascx
添加一个按钮:public System.Web.UI.WebControls.Button ucb;Text为"用户控件的按钮"(等会要在Page中用到这个按钮,所以设置为public)
<asp:Button id="ucb" Text="用户控件的按钮" runat="server"></asp:Button>
为按钮的click事件添加代码:
Response.Write(i.ToString());
i++;
在类中申明static int i=0;
这样通过点击按钮可以看到点击一次,计数增加1
(2)
添加一个页面
放置一个PlaceHolder,两个按钮
<asp:PlaceHolder id="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:Button id="Button1" runat="server" Text="加载用户控件"></asp:Button>
<asp:Button id="Button2" runat="server" Text="获取用户控件中的值"></asp:Button>
添加一个加载用户控件的操作:
private void adduc()
{
WebUserControl1 uc=(WebUserControl1)Page.LoadControl("WebUserControl1.ascx");
uc.ID="uc";
this.PlaceHolder1.Controls.Add(uc);
}
为第一个按钮增加click事件:
private void Button1_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]==null)
{
adduc();
ViewState["adduc"]=1;
}
}
我们在视图状态中增加一个标志位,表示是否点击了按钮来加载用户控件,当然如果已经加载了再点击按钮就不需要重复加载了。
关键的是需要在Page.IsPostBack的时候也要加载用户控件
(因为如果不这么做的话,回传的时候用户控件就消失了)
if(Page.IsPostBack)
{
if(ViewState["adduc"]!=null)
{
adduc();
}
}
下面可以点击Button1试验一下,是不是加载了用户控件?同时再点击用户控件中的按钮也能很好的触发其事件。
再为Button2添加click事件,用来读取用户控件中btn这个按钮的标题,动态加载的用户控件和设计时加载的用户控件一样也能很好的和页面进行交互:
private void Button2_Click(object sender, System.EventArgs e)
{
if(ViewState["adduc"]!=null)
{
Response.Write(((WebUserControl1)Page.FindControl("uc")).ucb.Text);
}
}
这里注意到在加载用户控件的时候我们为之指定了id,能够方便的通过FindControl来找到
相关文章:
- · 三层式的层次划分
- · 服务器控件中js脚本注册方法
- · 复制文件夹所有内容和删除整个文件夹的2个函数
- · 动态绑定DATAGRID里的DropDownList
- · 彻底解决!无效的 CurrentPageIndex 值.它必须大于等于 0 且小于 PageCount!的问题
- · HOW TO:检索本机硬件信息
- · HOW TO:检索应用程序当前执行代码的引用信息
- · HOW TO:初始化共享变量
- · 怎么触发DataGrid模板列中控件的事件?
- · 刚学ASP.Net,学了个简单的计算器
- · 全选DataGrid里的复选框
- · WEB页面多语言支持解决方案
- · javascript 与 asp.net 的交互
- · 动态模板列更新数据分页的例子
- · DataList 控件分页操作
- · 如何用请求字符串传值给用模式窗口打开的aspx页面。
- · Duwamish7学习笔记1
- · Matt Powell的《Server-Side 异步Web Methhods》
- · DataGrid和DropDownList的一些配合以及使用css定制DataGrid
- · 轻松解决asp.net论坛中的一版块多斑竹和一用户担任多版块斑竹的问题(不用数组和split)
- · 分享:aspx页面javascript的几个trick
- · 2个页面间不通过Session与url的传值方式
- · Solidworks二次开发—09--添加配合参考
- · Solidworks二次开发—08--判断是什么特征
- · 创建动态数据输入用户界面
- · 可以代替窗体Refresh方法的函数
- · 无外部控件制作多媒体播放器(四)
- · 无外部控件制作多媒体播放器(三)
- · DirectX9 3D快速上手 3
- · AlertButton, 您确定要执行吗?
- · 无外部控件制作多媒体播放器(二)
- · 用TreeView显示数据通用方法
- · 无外部控件制作多媒体播放器(一)
- · Web Browser Express 概述
- · datagrid编辑删除分页
- · 展现C# 清单5.10 生成exe文件执行的问题
- · 联通增值业务“定位之星”L1协议服务端的模拟器
- · 一个自认为写得还可以的存储过程,就是没有注释,看起来有点乱。与ERP的BOM相关的
