asp.net用户控件调用js,主界面使用时会放置多个用户控件,只有一个的js会起作用。
用户控件界面代码:
用户控件后台代码:
调用界面前台:
调用界面后台:
现在的问题是,当只使用一个用户控件,闪烁变色时,是没问题的,多个时会出问题,我想应该是用胡控件中的JS方法名都是一个造成的,就是在用户控件后台注册JS,我就可以控制js的方法名,但是在后台注册的定时器js无效了,想不出来用什么办法来实现自己的功能了。
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication1.WebUserControl1" %>
<div>
<asp:Button ID="Button1" runat="server" BackColor="red" Width="40"
BorderStyle="None" OnClick="UserOnClick" style="height: 17px" />
</div>
<script>
var timename;
function text() {
timename = setInterval("change()", 1000);
}
function change() {
var btnId = "<%=GetBtnId()%>";
var btnColor = document.getElementById(btnId).style.backgroundColor;
if (btnColor == 'blue') {
document.getElementById(btnId).style.backgroundColor = 'red';
}
else {
document.getElementById(btnId).style.backgroundColor = 'blue';
}
}
function textClose() {
clearInterval(timename);
}
</script>用户控件后台代码:
protected void Page_Load(object sender, EventArgs e)
{
}
private Color _flickerColor1;
public Color FlickerColor1
{
get { return _flickerColor1; }
set { _flickerColor1 = value; }
}
private Color _flickerColor2;
public Color FlickerColor2
{
get { return _flickerColor2; }
set { _flickerColor2 = value; }
}
public Color BackGroud
{
get { return this.Button1.BackColor; }
set { this.Button1.BackColor = value; }
}
private bool isBroken;
public bool IsBroken
{
get { return isBroken; }
set {
isBroken = value;
if (isBroken)
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>text()</script>");
}
else
{
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>textClose()</script>");
}
}
}
/// <summary>
/// 返回控件
/// </summary>
/// <returns></returns>
public string GetBtnId()
{
return this.Button1.ClientID.ToString();
}
void timer_Tick(object sender, EventArgs e)
{
if (isBroken)
{
if (Button1.BackColor == Color.Red)
{
Button1.BackColor = Color.Black;
}
else
{
Button1.BackColor = Color.Red;
}
}
}
public event EventHandler Login; //添加事件句柄
protected void UserOnClick(object sender, EventArgs e)
{
if (Login != null)
Login(this, new EventArgs()); //激活Login事件
}
调用界面前台:
<%@ Register src="WebUserControl1.ascx" tagname="WebUserControl1" tagprefix="uc1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="margin:4,4,4,4;">
<asp:Button ID="Button1" runat="server" Text="是否停止闪烁" onclick="Button1_Click" />
<uc1:WebUserControl1 ID="WebUserControl13" runat="server" BackGroud="Black" />
<uc1:WebUserControl1 ID="WebUserControl12" runat="server" BackGroud="Black" />
<uc1:WebUserControl1 ID="WebUserControl11" runat="server" BackGroud="Black" />
</div>
</form>
</body>
</html>
调用界面后台:
protected void Page_Load(object sender, EventArgs e)
{
}
protected void OnLoginPress(Object Render, EventArgs e)
{
this.RegisterClientScriptBlock("", "<script>alert(1);</script>");
}
protected void Button1_Click(object sender, EventArgs e)
{
if (!WebUserControl11.IsBroken)
{
WebUserControl11.IsBroken = true;
}
else
{
WebUserControl11.IsBroken = true;
}
if (!WebUserControl12.IsBroken)
{
WebUserControl12.IsBroken = true;
}
else
{
WebUserControl12.IsBroken = true;
}
}
现在的问题是,当只使用一个用户控件,闪烁变色时,是没问题的,多个时会出问题,我想应该是用胡控件中的JS方法名都是一个造成的,就是在用户控件后台注册JS,我就可以控制js的方法名,但是在后台注册的定时器js无效了,想不出来用什么办法来实现自己的功能了。
...全文
相关推荐
asp.net时间控件JS文件部分
一款asp.net时间控件,此处仅是js文件,关于如何使用详见我的csdn博客。
ASP.NET动态添加TextBox控件
ASP.NET动态添加TextBox控件
ASP.NET使用FileUpLoad控件上传图片前预览图片
<br /><%@ Page Language="C#" AutoEventWireup="true" CodeFile="Managerment.aspx.cs" Inherits="Managerment" %><br /><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br /><html xmlns="ht
Asp.net+Vue+EmelentUI的实现(一)框架搭建
vue对于web端的开发优势是很明显的,特别是单页应用,响应、数据等都很明显,而且开发效率也高,又有很多资料可查、有社区的支持。但vue对于开发较大的项目时,则会显得笨重,因为编译成了单页应用,非常臃肿,首次加载变的很慢。而且在使用VS来开发时,虽然VS可以创建vue的项目,但是基于node.js来编译的,不好操作,而且经常出现卡死现象,于是就考虑有没有其他的方式来应用vue。 vue本质上是一...
Asp.net的Timer控件使用
该控件能够定是引发整个页面回送,当它与Updatepanel空间搭配使用时,就可以定时引发异步回送并进行局部刷新


