在用户控件中动态添加控件及事件
问题来自网上:
动态添加控件,应该加在OnInit(EventArgs e)事件里。
protected override void OnInit(EventArgs e)
{
//加在这个事件内
}
{
//加在这个事件内
}
下面Insus.NET就以动态添加一个TextBox在用户控件内,在控件值发生变化时,触发事件,并提示变化后的值。
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="InsusUserControl.ascx.cs" Inherits="InsusUserControl" %>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
InsusUserControl.ascx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class InsusUserControl : System.Web.UI.UserControl
{
protected override void OnInit(EventArgs e)
{
TextBox tb = new TextBox();
tb.ID = "TextBox1";
tb.AutoPostBack = true;
tb.TextChanged +=tb_TextChanged;
this.PlaceHolder1.Controls.Add(tb);
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void tb_TextChanged(object sender, EventArgs e)
{
var tb = (TextBox)sender;
if (string.IsNullOrEmpty(tb.Text.Trim ())) return;
string s = "当前TextBox控件值为:" + tb.Text.Trim();
InsusJavascriptUtility objJs = new InsusJavascriptUtility ();
objJs.JsAlert (s);
//Response.Write ("<scr" + "ipt> alert('" + s +"') </scr" + "ipt>");
}
}
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Insus.NET;
public partial class InsusUserControl : System.Web.UI.UserControl
{
protected override void OnInit(EventArgs e)
{
TextBox tb = new TextBox();
tb.ID = "TextBox1";
tb.AutoPostBack = true;
tb.TextChanged +=tb_TextChanged;
this.PlaceHolder1.Controls.Add(tb);
base.OnInit(e);
}
protected void Page_Load(object sender, EventArgs e)
{
}
protected void tb_TextChanged(object sender, EventArgs e)
{
var tb = (TextBox)sender;
if (string.IsNullOrEmpty(tb.Text.Trim ())) return;
string s = "当前TextBox控件值为:" + tb.Text.Trim();
InsusJavascriptUtility objJs = new InsusJavascriptUtility ();
objJs.JsAlert (s);
//Response.Write ("<scr" + "ipt> alert('" + s +"') </scr" + "ipt>");
}
}
把用户控件拉入aspx页面中,并运行: