在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. CSS3重要内容翻译

    以上是废话 1.3    此处未完全确认,相较于css3和css3的选择器,区别包括: 基础定义改变(选择器.选择器组,简单选择器等),特别的,作为css2中简单选择器,如今被成为简单选择器序列,“简 ...

  2. Javascript模块化编程:模块的写法

    声明:本文转载自:阮一峰的网络日志,原文地址http://www.ruanyifeng.com/blog/2012/10/javascript_module.html,http://www.ruany ...

  3. Python django admin 替换表单控件

    测试版本: Python 2.7 Django 1.6.2 models.py from django.db import models class Article(models.Model): ti ...

  4. getUrlParam,jQuery中的URL参数获取

    大家经常会需要在一段URL中截取到自己所需参数的值,下面的方法也许能帮到您: $.getUrlParam = function(name){ var reg = new RegExp("(^ ...

  5. Websocket 与代理服务器如何交互? How HTML5 Web Sockets Interact With Proxy Servers

    How HTML5 Web Sockets Interact With Proxy Servers Posted by Peter Lubberson Mar 16, 2010 With the re ...

  6. facebook分块加载,页面优化,BigPipe,简单实例

    <!DOCTYPE html><html><head><meta charset=”utf-8″><title>BigPipe Demo 3 ...

  7. 转:mysql5.6.12 for Linux安装

    原文链接:http://mmicky.blog.163.com/blog/static/1502901542013635317349/ 1:上www.mysql.org下载64位版本mysql5.6. ...

  8. c语言用封装来优化程序

    一.基础研究 先对函数fa进行研究,代码如下: fa函数的参数为一个字符指针,他存储要输出的字符串.因为要显示在屏幕的中央位置,所以我们要把字符串放在段地址b800处.用strlen获取字符串的长度, ...

  9. 14.1.1 使用InnoDB 表的好处:

    14.1.1 Benefits of Using InnoDB Tables 14.1.2 Best Practices for InnoDB Tables 14.1.3 Checking InnoD ...

  10. 用Visual Studio创建gtest动态链接库工程

    Step1 创建名为gtest的Win32 Project Step2 在Application Settings中的Application type下选择DLL Step3 把gtest-all.c ...