问题来自网上:
动态添加控件,应该加在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页面中,并运行: