
关于asp.net user control 中 的 按钮 事件 的 触发问题
我有一个usercontrol,里面有个按钮,前台代码例子如下:<div><asp:ButtonID="Button1"runat="server"Text="Butto...
我有一个user control,里面有个按钮,前台代码例子如下:
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="buttonclick" />
</div>
在后台我也定义了buttonclick 方法了。
在放这个控件的页面里,我有个timer,每次timer tick的时候,我需要重新载入那个控件。 我的问题是,每次那个控件的按钮,我得点两下,才能调用buttonclick方法,请问大家是什么问题?如何解决?如果我去掉那个timer,那一切都正常,就是加了timer,不行。我加timer是因为那个user control本来还有其他的label,然后timer不断query后台,然后update那个label。
页面的前台代码如下:
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="pl" runat="server">
</asp:PlaceHolder>
<asp:Timer ID="Timer1" Interval="2000" Enabled="true" runat="server"
ontick="Timer1_Tick">
</asp:Timer>
</div>
</form>
后台代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
temp();
}
protected void temp()
{
pl.Controls.Clear();
var tempControl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx");
pl.Controls.Add(tempControl);
}
protected void Timer1_Tick(object sender, EventArgs e)
{
temp();
}
}
} 展开
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="buttonclick" />
</div>
在后台我也定义了buttonclick 方法了。
在放这个控件的页面里,我有个timer,每次timer tick的时候,我需要重新载入那个控件。 我的问题是,每次那个控件的按钮,我得点两下,才能调用buttonclick方法,请问大家是什么问题?如何解决?如果我去掉那个timer,那一切都正常,就是加了timer,不行。我加timer是因为那个user control本来还有其他的label,然后timer不断query后台,然后update那个label。
页面的前台代码如下:
<form id="form1" runat="server">
<div>
<asp:PlaceHolder ID="pl" runat="server">
</asp:PlaceHolder>
<asp:Timer ID="Timer1" Interval="2000" Enabled="true" runat="server"
ontick="Timer1_Tick">
</asp:Timer>
</div>
</form>
后台代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
temp();
}
protected void temp()
{
pl.Controls.Clear();
var tempControl = (WebUserControl1)LoadControl("~/WebUserControl1.ascx");
pl.Controls.Add(tempControl);
}
protected void Timer1_Tick(object sender, EventArgs e)
{
temp();
}
}
} 展开
2个回答
2013-09-11
展开全部
你试试会不会出现这么一个情况:以你现在的代码,点一下那个button控件后隔5秒再点一下button控件,看看是不是有反应(即两次点击不要小于你的timer所设定的时间),如果没有反应,那么下面就是对应的解释。
因为你这个是一个网页,所以不会自动刷新,你的timer控件每两秒往你的pl中换一个内容,导致后台与你实际页面显示的不同,即你的页面显示的是你加载页面时所看到的东西,而实际上却是经过timer控件处理过的内容,当你点第一次时,它会变为当前的实际状态,再点时才会有反应
因为你这个是一个网页,所以不会自动刷新,你的timer控件每两秒往你的pl中换一个内容,导致后台与你实际页面显示的不同,即你的页面显示的是你加载页面时所看到的东西,而实际上却是经过timer控件处理过的内容,当你点第一次时,它会变为当前的实际状态,再点时才会有反应
更多追问追答
追问
好的我试一下先
请问如何解决这个问题呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询