asp.net动态生成ascx用户控件

在.aspx中动态生成ascx用户控件 对div写点击事件

**//
//
//
//
由于我的ascx用户控件是用div做成的动态生成之后没有点击事件所以在网上找了好久都没有找到合适自己的
终于在看了大牛 sp1234 的一个回答之后总算是有了写眉目
今天将过程记录下来
先贴ascx代码
//前端

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="student.ascx.cs" Inherits="one.scripts.teacher.student" %>
<div style="background-image:url(../image/173.jpg);height:95px;width:170px;margin:20px 20px 20px 45px;float:left;" id="mydiv" runat="server">
   
     <div style="margin-left:75px;margin-top:12px;font-size:15px;"> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></div>
   <div style="margin-left:75px;margin-top:12px;font-size:15px;">  <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label></div>
  <div style="margin-left:75px;margin-top:12px;font-size:12px;"><asp:Label ID="Label3" runat="server" Text="Label"></asp:Label></div>
    
</div>

//.cs代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Threading.Tasks;
using System.ComponentModel;
namespace one.scripts.teacher
{
    public partial class student : System.Web.UI.UserControl,IPostBackEventHandler
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        [DefaultValue(typeof(string), ""), Browsable(true)
     , Description("控件中的Lable的Text属性"), Category("Action")]
        public string LableText1
        {
            get
            {
                return Label1.Text;
            }
            set
            {
                this.Label1.Text = value;
            }
        }
        [DefaultValue(typeof(string), ""), Browsable(true)
        , Description("控件中的Lable2的Text属性"), Category("Action")]
        public string LableText2
        {
            get
            {
                return Label2.Text;
            }
            set
            {
                this.Label2.Text = value;
            }
        }
        [DefaultValue(typeof(string), ""), Browsable(true)
    , Description("控件中的Lable3的Text属性"), Category("Action")]
       
        public string LableText3
        {
            get
            {
                return Label3.Text;
            }
            set
            {
                this.Label3.Text = value;
            }
        }

//这段是对三个lable写text属性
//

  public event EventHandler<EventArgs> Click;
        public void  RaisePostBackEvent(string eventArgument)
        {
            if (this.Click != null)
                this.Click(this, EventArgs.Empty);
        }
       protected void Page_PreRender(object sender,EventArgs e)
        {
            var ct1 = this.mydiv;
            var script = this.Page.ClientScript.GetPostBackEventReference(this, string.Empty);
             ((HtmlContainerControl)ct1).Attributes["onclick"] = script;
          
        }
    //这段是获取div的ID,然后对div进行click脚本的注册

//
aspx中我用PlaceHolder作为容器

 <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

将ascx用户控件动态添加在PlaceHolder中
这边我写了一个for循环就不放出来了

for(int i=1;i<10;i++){
  student f=(student)Page.LoadControl("~/scripts/teacher/student.ascx");
    PlaceHolder1.Controls.Add(f);
 f.Click += g_Click;     //然后给它加点击事件
}

student是我的ascx用户控件
对了还要在aspx页面上将ascx用户控件注册一下像这样
放在aspx页面的最上方就行

<%@ Register Src="~/scripts/teacher/student.ascx" TagName="student1" TagPrefix="student1" %>

//
//
g_Click是自己写的
我的是这样的

 private void g_Click(object sender, EventArgs e)
        {
          Response.Write("<script>alert('点击完成')</script>");
}

最后放上大牛的回答链接
[https://bbs.csdn.net/topics/330152344]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值