asp.net中alert样式丢失问题

lin364653705 2011-02-14 09:50:29
问题描述:在我的asp.net页面中,有一个table,table的行数非常多,就使用了JS来设置table的隔行样式
function setTableRowCss(tableid) {
var tabRows = $get(tableid).rows; //这里是asp.net ajax的语法
for (i = 0; i < tabRows.length; i++) {
(i % 2 == 0) ? (tabRows[i].className = "usertablerow2") : (tabRows[i].className = "usertablerow1");
}
}
页面显示正常的!
问题:但是遇到后台页面需要alert提示信息的时候,隔行样式效果短暂丢失,alert确定以后,样式又恢复。
问题补充:后台弹出JS,使用的是ClientScript.RegisterStartupScript来,BAIDU,GOOGLE以后,说是response.write的原因,我这里没使用response.write。测试使用ClientScript.RegisterClientScriptBlock,这里面alert以后,背景为空白,效果不是很理想。
...全文
367 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrxqc 2011-10-24
  • 打赏
  • 举报
回复
ClientScript.RegisterClientScriptBlock(this.GetType(), "this", "<script>alert('成功!');</script>"); 这句话可以解决
wenlixmh123 2011-09-09
  • 打赏
  • 举报
回复
顶下吧 我的问题也要解决
windy19871011 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 lin364653705 的回复:]
引用 7 楼 windy19871011 的回复:
【问题:但是遇到后台页面需要alert提示信息的时候,隔行样式效果短暂丢失,alert确定以后,样式又恢复。】

解决方法:
1.你可以把alert写在前台,如果写在后台的话,需要调一次服务器,重新加载页面,导致【隔行样式效果短暂丢失】
2.[页面生命周期] 在Page_init()的时候 调用样式

解决方法1中,alert写在前……
[/Quote]

你可以把后台需要判断的东西,放在隐藏域中,在前台判断啊。。(document.getElementById("<%=hidden.ClientID%>").value)
全部在前台判断,不会出现CSS样式丢失问题!
lin364653705 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 chenhaoying 的回复:]
那段js设置table的样式的代码移下来放到那个lable的前面。这样在页面加载完table以后,就执行js设置样式,接着执行lable的加载弹出提示。你看看你的页面加载执行顺序对不对。
[/Quote]
执行顺序的这个问题我也考虑过
lable1.Text="<script>setTableRowCss('tabel1');alert(‘成功');</script>";
如果是这样写css样式显示正常了。只是难道我要每个需要alert的地方都写这个?而且tabel的个数也不一定呢

zhaoyycit 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 chenhaoying 的回复:]
引用 6 楼 lin364653705 的回复:
引用 2 楼 chenhaoying 的回复:
用一个lable输出那段弹出的脚本就行了。lable1.Text="<script>alert(‘成功');</script>";

这个效果是一样的,在alert出现的时候,我用js设置table的样式就会丢失。点确定以后又恢复。如果把样式全部写死在td的每行中,alert后效果不变,但是t……
[/Quote]

好办法!!顶一下
chenhaoying 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lin364653705 的回复:]
引用 2 楼 chenhaoying 的回复:
用一个lable输出那段弹出的脚本就行了。lable1.Text="<script>alert(‘成功');</script>";

这个效果是一样的,在alert出现的时候,我用js设置table的样式就会丢失。点确定以后又恢复。如果把样式全部写死在td的每行中,alert后效果不变,但是table行太多,而且很多页面都有这样的table
[/Quote]

那段js设置table的样式的代码移下来放到那个lable的前面。这样在页面加载完table以后,就执行js设置样式,接着执行lable的加载弹出提示。你看看你的页面加载执行顺序对不对。
zhaoyycit 2011-02-14
  • 打赏
  • 举报
回复
楼主可以考虑把样式写在后台在load()中刷新调用
lin364653705 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 windy19871011 的回复:]
【问题:但是遇到后台页面需要alert提示信息的时候,隔行样式效果短暂丢失,alert确定以后,样式又恢复。】

解决方法:
1.你可以把alert写在前台,如果写在后台的话,需要调一次服务器,重新加载页面,导致【隔行样式效果短暂丢失】
2.[页面生命周期] 在Page_init()的时候 调用样式
[/Quote]
解决方法1中,alert写在前台,但是依然需要通过后台某些判断过后,去调用的,依然调了一次服务器,CSS效果同样会丢失!
lin364653705 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 windy19871011 的回复:]
【问题:但是遇到后台页面需要alert提示信息的时候,隔行样式效果短暂丢失,alert确定以后,样式又恢复。】

解决方法:
1.你可以把alert写在前台,如果写在后台的话,需要调一次服务器,重新加载页面,导致【隔行样式效果短暂丢失】
2.[页面生命周期] 在Page_init()的时候 调用样式
[/Quote]
嗯,现在试下。。。如果alert写在前台,那就是所有页面都需要这个方法,将方法写入单独的JS中,所有需要的页面引用?
porschev 2011-02-14
  • 打赏
  • 举报
回复


自带弹框不可能有多理想的。。

可以考虑自己做一个层。。。做为提示层。。。
静缘 2011-02-14
  • 打赏
  • 举报
回复
JS的执行是逐行执行的,出现这个问题应该是因为你弹出对话框的调用代码在改变表格行背景代码的前面,你可以在页面载入完成后查看HTML源码来验证,如果是这个问题,可以通过调整执行顺序来解决
windy19871011 2011-02-14
  • 打赏
  • 举报
回复
【问题:但是遇到后台页面需要alert提示信息的时候,隔行样式效果短暂丢失,alert确定以后,样式又恢复。】

解决方法:
1.你可以把alert写在前台,如果写在后台的话,需要调一次服务器,重新加载页面,导致【隔行样式效果短暂丢失】
2.[页面生命周期] 在Page_init()的时候 调用样式
lin364653705 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenhaoying 的回复:]
用一个lable输出那段弹出的脚本就行了。lable1.Text="<script>alert(‘成功');</script>";
[/Quote]
这个效果是一样的,在alert出现的时候,我用js设置table的样式就会丢失。点确定以后又恢复。如果把样式全部写死在td的每行中,alert后效果不变,但是table行太多,而且很多页面都有这样的table
lin364653705 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangting0613 的回复:]
是不是与什么样式有冲突??
[/Quote]
如果有效果冲突,页面显示的时候就有问题了
lin364653705 2011-02-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]
ScriptManager.RegisterStartupScript
<script defer >
</script> Page.ClientScript.RegisterStartupScript
[/Quote]
使用ScriptManager.RegisterStartupScript的效果是一样的!后面那两句是什么意思?
wuyq11 2011-02-14
  • 打赏
  • 举报
回复
ScriptManager.RegisterStartupScript
<script defer >
</script> Page.ClientScript.RegisterStartupScript
chenhaoying 2011-02-14
  • 打赏
  • 举报
回复
用一个lable输出那段弹出的脚本就行了。lable1.Text="<script>alert(‘成功');</script>";
wangting0613 2011-02-14
  • 打赏
  • 举报
回复
是不是与什么样式有冲突??
yangyalin8425 2011-02-14
  • 打赏
  • 举报
回复
你可以用个updatepanel控件
lin364653705 2011-02-14
  • 打赏
  • 举报
回复
解决方法,在alert()前,先调用样式设置方法。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧