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

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

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

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

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

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

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

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

  1. <body>
  2. <form id="form1" runat="server">
  3. <div>
  4. <div>
  5. <asp:PlaceHolder ID="phTop" runat="server"></asp:PlaceHolder>
  6. </div>
  7. <div>
  8. <asp:Label ID="lblInfo" runat="server" Text=""></asp:Label>
  9. </div>
  10. <div>
  11. <asp:PlaceHolder ID="phMid" runat="server"></asp:PlaceHolder>
  12. </div>
  13. <asp:Button ID="BtnPage" runat="server" Text="页面控件" />
  14.  
  15. </div>
  16. </form>
  17. </body>

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

  1. protected void Page_Load(object sender, EventArgs e)
  2. {
  3. BtnPage.Click += new System.EventHandler(this.ShowMsg);
  4.  
  5. Button topBtn = new Button();
  6. topBtn.ID = "topBtn";
  7. topBtn.Text = "顶部动态添加控件";
  8. topBtn.Click += new System.EventHandler(this.TopShowMsg);
  9. phTop.Controls.Add(topBtn);
  10.  
  11. Button midBtn = new Button();
  12. midBtn.ID = "midBtn";
  13. midBtn.Text = "中间动态添加控件";
  14. midBtn.Click += new System.EventHandler(this.MidShowMsg);
  15. phMid.Controls.Add(midBtn);
  16. }
  17. //页面添加控件事件
  18. private void ShowMsg(object sender, EventArgs e)
  19. {
  20. lblInfo.Text = "固定添加控件";
  21. }
  22. private void TopShowMsg(object sender, EventArgs e)
  23. {
  24. lblInfo.Text = "顶部动态添加控件";
  25. }
  26. private void MidShowMsg(object sender, EventArgs e)
  27. {
  28. lblInfo.Text = "中间动态添加控件";
  29. }

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

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

点击按钮也可以触发事件

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

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

【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. [FindBugs分析记录]Potentially dangerous use of non-short-circuit logic

    官网解释: This code seems to be using non-short-circuit logic (e.g., & or |) rather than short-circu ...

  2. sql批量插入数据之存储过程

    -- ============================================= -- Author: jf_ou -- Create date: 2016/03/22 -- Desc ...

  3. 基于jq插件开发及弹窗实例

    基于jq的插件开发是什么鬼,$.fn是什么鬼,我在实际工作中也遇到过这个问题,下面就让我们一起来看一看这些都是什么鬼. 首先我们介绍$.fn. $.fn是指jquery的命名空间,加上fn上的方法及属 ...

  4. python百科

    Python 编辑词条 添加义项名 B 添加义项 ? Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第 ...

  5. Tr A

    Problem Description A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第 ...

  6. STM32库中 __IO 修饰符(volatile修饰符)

    STM32例子代码中会有像这样的代码 static __IO uint32_t TimingDelay; 这里边的__IO修饰符不好理解,单从字面可以看出是为IO相关,查其标准库可以得知这个__IO原 ...

  7. 『Python』 多线程 端口扫描器

    0x 00 Before Coding 当端口打开时,向端口发送 TCP SYN 请求,会返回一个 ACK 响应: 当端口关闭,返回的是 RST 响应: 0x 01 Coding  可以用 socke ...

  8. 调试器带参数调试(OD,EDB)

    小东西,不要在意这些细节-- OD带参数比较简单: 文件-- 打开 --  在最下面有一个参数 KALI LINUX下的EDB 命令格式为  edb –run  "对应程序路径"  ...

  9. Ultra-QuickSort(归并排序求逆序对数)

    Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 34283   Accepted: 12295 Description In ...

  10. 聚类算法:K均值、凝聚层次聚类和DBSCAN

    聚类分析就仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组(簇).其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的.组内相似性越大,组间差别越大,聚类就越好. 先介绍下聚类的不 ...