在加载aspx页面时,为引用的ascx当中的按钮添加事件,以方便调用aspx页面中的函数
Posted on 2012-05-17 15:07 遗忘地角落 阅读(1246) 评论(0) 编辑 收藏 举报刚刚有个需求要改,在一个用户控件中添加一个上传文件的按钮,触发这个按钮的前提是需要验证用户的身份,这个判断事件是后台触发的,在引用它的aspx页面中也有类似的功能按钮,所以想到,在加载aspx页面后,再去创建这个按钮的事件,找了些资料,实现了这个功能,记录下。
首先在用户控件中,定义一个属性来保存这个按钮属性,普通的Button就可以:
public Button button
{
get { return button1; }//button1为此按钮的ID
}
{
get { return button1; }//button1为此按钮的ID
}
但是我的用户控件的页面中,使用了一个Repeater,所以我在获取它的值时:
调用的问题:当我在引用的aspx页面的page_load中直接去调用button时是可以的,但是直接调用这个属性是不可以的,此时,Repeater1.Items.Count的值是为0的
public LinkButton InnerButton
{
get
{
LinkButton lnkShow = (LinkButton)Repeater1.Items[0].FindControl("lnkShow");//获取上传按钮
return lnkShow;
}
}
{
get
{
LinkButton lnkShow = (LinkButton)Repeater1.Items[0].FindControl("lnkShow");//获取上传按钮
return lnkShow;
}
}
在引用了此按钮所在的用户控件的aspx页面中,在page_load事件中去获取它,并且为它绑定一个事件
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
.............
}
else //我在这里的写法是如果页面回调的时候才去执行下面的操作,页面初始化时,是无法绑定控件当中的按钮事件的,我想这是页面生命周期的问题吧,以后再研究研究
{
if (string.IsNullOrEmpty(HidUser.Value.Trim()))//判断用户的权限,是否已经登录
{
//注册用户控件中的按钮事件
UCScenicCards.InnerButton.Click += new EventHandler(Login_Click);
}
}
}
{
if (!IsPostBack)
{
.............
}
else //我在这里的写法是如果页面回调的时候才去执行下面的操作,页面初始化时,是无法绑定控件当中的按钮事件的,我想这是页面生命周期的问题吧,以后再研究研究
{
if (string.IsNullOrEmpty(HidUser.Value.Trim()))//判断用户的权限,是否已经登录
{
//注册用户控件中的按钮事件
UCScenicCards.InnerButton.Click += new EventHandler(Login_Click);
}
}
}
对了,还要写一个对应的Login_Click事件:
protected void Login_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(HidUser.Value.Trim()))
{
UserLogin();
}
}
{
if (string.IsNullOrEmpty(HidUser.Value.Trim()))
{
UserLogin();
}
}