天天看点

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

问题来自网上:

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

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

​​

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

继续阅读