在用户控件中动态添加控件及事件

问题来自网上:

 

动态添加控件,应该加在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>

 

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>");
    }
}

 

把用户控件拉入aspx页面中,并运行:

posted @ 2012-10-20 16:42  Insus.NET  阅读(653)  评论(0编辑  收藏  举报