在Asp.Net的Web页面处理流程中,有时候我们会碰到需要动态生成的控件,并为之绑定相应的事件。

  接下来我们来动态的生成一个控件

//在用户代码初始化阶段添加控件
protected void Page_Load(object sender, EventArgs e)
{
//声明控件对象
Button newBtn=new Button();
//指定控件属性
newBtn.ID="btnConrol";
newBtn.Text="我是动态生成的按钮";
newBtn.Click+=new System.EventHandler(this.ShowMessage);
//在Asp.Net中,Asp控件需要放在有runat="server"标记的容器中
form1.Controls.Add(newBtn);
} //方法
private void ShowMessage(object sender, EventArgs e)
{
Response.Write("<script>alert('我被点击啦')</script>");
}

我们在预览一下,可以看到被加进来的控件。

点击按钮会出发初始化绑定的事件

虽然控件已经动态生成,并且能成功绑定事件并触发事件,但是还是有点不理想。我们可以看到,每次动态生成的按钮都被加在了页面的最底部。

这个是由web页面的机制决定,只有在页面被创建成功以后,动态生成的控件才会被加到页面,这就意味着新的控件会被加到页面的最底部。

这个往往不是我们需要的效果,在实际需求中,我们需要在指定位置生成需要的控件。我们希望能更灵活的动态生成按钮,这个也很简单,借助PlaceHolder控件就能够轻松实现。

<body>
<form id="form1" runat="server">
<div>
<div>
<asp:PlaceHolder ID="phTop" runat="server"></asp:PlaceHolder>
</div>
<div>
<asp:Label ID="lblInfo" runat="server" Text=""></asp:Label>
</div>
<div>
<asp:PlaceHolder ID="phMid" runat="server"></asp:PlaceHolder>
</div>
<asp:Button ID="BtnPage" runat="server" Text="页面控件" /> </div>
</form>
</body>

接下来我们在后台动态生成按钮

protected void Page_Load(object sender, EventArgs e)
{
BtnPage.Click += new System.EventHandler(this.ShowMsg); Button topBtn = new Button();
topBtn.ID = "topBtn";
topBtn.Text = "顶部动态添加控件";
topBtn.Click += new System.EventHandler(this.TopShowMsg);
phTop.Controls.Add(topBtn); Button midBtn = new Button();
midBtn.ID = "midBtn";
midBtn.Text = "中间动态添加控件";
midBtn.Click += new System.EventHandler(this.MidShowMsg);
phMid.Controls.Add(midBtn);
}
//页面添加控件事件
private void ShowMsg(object sender, EventArgs e)
{
lblInfo.Text = "固定添加控件";
}
private void TopShowMsg(object sender, EventArgs e)
{
lblInfo.Text = "顶部动态添加控件";
}
private void MidShowMsg(object sender, EventArgs e)
{
lblInfo.Text = "中间动态添加控件";
}

好了,点击生成,然后预览

我们可以看到动态添加的按钮都被我们添加到特定的位置了

点击按钮也可以触发事件

好了,动态生成页面控件的笔记到这里就结束了。

一点基础知识,高手勿喷~

【Asp.Net】后台生成控件并绑定事件的更多相关文章

  1. Delphi不注册COM直接使用ActiveX控件并绑定事件

    文笔不行,直接上源码: 主窗口: unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System ...

  2. 关于原生js中ie的attacheEvent事件用匿名函数改变this指向后,不能用detachEvent删除绑定事件的解决办法?

    博客搬迁,给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/11/28/%e5%85%b3%e4%ba%8e%e5%8e%9f%e7%94%9fjs%e ...

  3. Android_安卓为按钮控件绑定事件的五种方式

    一.写在最前面 本次,来介绍一下安卓中为控件--Button绑定事件的五种方式. 二.具体的实现 第一种:直接绑定在Button控件上: 步骤1.在Button控件上设置android:onClick ...

  4. 原生 JS 绑定事件 移除事件

    监听事件的绑定与移除主要是addEventListener和removeEventListener的运用. addEventListener语法 element.addEventListener(ty ...

  5. asp.net 后台多线程异步处理时的 进度条实现一(Ajax+Ashx实现以及封装成控件的实现)

    (更新:有的同学说源代码不想看,说明也不想看,只想要一个demo,这边提供一下:http://url.cn/LPT50k (密码:TPHU)) 工作好长时间了,这期间许多功能也写成了不少的控件来使用, ...

  6. ASP.NET中后台数据和前台控件的绑定

    关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...

  7. Asp.net web form 动态生成控件的注意事项

    Asp.net页面生命周期 页面初始化          Page_Init   加载View State      LoadViewState    回发数据处理      LoadPostData ...

  8. asp.net学习之 数据绑定控件--表格绑定控件

    原文:asp.net学习之 数据绑定控件--表格绑定控件     数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...

  9. ASP .NET MVC HtmlHelper扩展——简化“列表控件”的绑定

    在众多表单元素中,有一类<select>元素用于绑定一组预定义列表.传统的ASP.NET Web Form中,它对应着一组重要的控件类型,即ListControl,我们经常用到DropDo ...

随机推荐

  1. Java学习----反复做某件事情

    for循环: public class TestFor{ public static void main(String[] args){ for(int x = 1; x < 3; x++) { ...

  2. jdk-动态代理

    1.HelloWorld package reflect.proxy; public interface HelloWorld { void print(); } 2.HelloWorldImpl p ...

  3. IOS开发----委托机制

    委托模式从GoF装饰模式.适配器模式和模板方法等演变过来,几乎每一个应用都会或多或少的用到委托模式. 在古希腊有一个哲学家,他毕生只做三件事情:“睡觉”.“吃饭”.和“工作”.为了更好的生活,提高工作 ...

  4. C#解析JSON几种方式-整理

    一.什么是JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition ...

  5. JavaScript 类型判断的那些事

    先准备几个变量 var a = "abcde."; var b = 222; var c= [1,2,3]; // 或者 new Array() var d = new Date( ...

  6. Python3.4+opencv3

    1.安装Python 3.4 for Windows 好的这好像没有什么可以说的 2.下载OpenCV 3和Numpy(OpenCV依赖Numpy库) 大家在这里就出了问题.如果使用直接使用pip i ...

  7. C# 基于委托的事件

    事件基于多播委托的特性. 多播委托事实上就是一组类型安全的函数指针管理器,调用则执行顺序跳转到数组里所有的函数指针里执行. class Program { public class CarInfoEv ...

  8. 【Maven实战】archetype的使用和eclipse的配置

    1.之前在进行项目的构建时都是使用手工进行文件夹的建立,maven也给我们提供了一个参数archetype,可以用来进行项目骨架的建立.使用maven archetype:generate进行创建: ...

  9. 将excel里面的数据导入到程序里面

    页面布局 <table> <tr> <td style="padding-top: 16px; padding-left: 36px;"> &l ...

  10. LD1-B(最短路径-SPFA)

    题目链接 /* *题目大意: *给定v个点的重量,并给定e条边,每条边具有一个权值; *在e条边中选v-1条边使这v个点成为一棵树; *定义这棵树的代价为(每棵子树节点重量和其子树根到父节点的边的权值 ...