在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. 使用gdb调试(转: http://www.cnblogs.com/luchen927/archive/2012/02/07/2339003.html)

    一般来说GDB主要调试的是C/C++的程序.要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: > ...

  2. jquery 工作空间注册

    在一些面向对象的语言中有命名空间的概念,好处就是把不同的类放在不同的文件夹下面,这样就不会发生命名冲突,当然命名空间还有其他的作用. 在这里我们讨论的是在JS中怎么使用命名空间.当然JS并没有提供原生 ...

  3. C# 根据IP查询地址归属地

    必备文件:IPLocation.dll.QQWry.Dat 下载地址:http://pan.baidu.com/s/1jG1dlOy (可百度下载) 之前有过将 QQWry.Dat 转为 Access ...

  4. 栈的链式存储方法的C语言实现

    /* 编译器:Dev-c++ 5.4.0 文件名:linkStack.cpp 代码版本号:1.0 时间:2015年10月15日18:56:06 */ #include <stdio.h> ...

  5. PQJ 1686(栈栈栈)

    PQJ  1686(栈栈栈) 用栈解决问题 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I6 ...

  6. listen函数

    listen函数仅仅由TCP服务器调用,它做2件事: 1)当socket函数创建一个套接字时,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字 listen函数把一 ...

  7. JQ——选择器

    选择器 实例 选取 * $("*") 所有元素 #id $("#lastname") id="lastname" 的元素 .class $( ...

  8. some words that I always make mistake

    发音相似容易混淆的词汇 alteration  英 [ɔːltə'reɪʃ(ə)n; 'ɒl-]  美 [,ɔltə'reʃən]  n. 修改,改变:变更 alteration /ˌɔːltəˈre ...

  9. java四种创建对象的方法

    1.用new语句创建对象,这是最常见的创建对象的方法.   2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance ...

  10. LED驅動芯片 兩種恒流控制方式

    下面要說的是,兩種恒流控制模式的開關電源,從而產生兩種做法.這兩種做法無論是原理,還是器件應用,還是性能差別,相當都較大.     首先說原理.第一種以現在恒流型LED專用IC為代表,主要如9910系 ...