弹出层的请教

leaf110 2009-01-20 11:01:06
因网络原因,需在提交数据这个按钮上加一事件,当用户点击的时同时弹出一个遮罩层,显示"数据处理中...",有点类似QQ空间的一样.
网上找的一些例子不适用(本需求不允许用下载进度度等第三方控件)

aspx:
<asp:button runat="server" text="Button" id="xx" />
cs:
xx.Attributes.Add("onclick", "return showdiv()"); /按钮添加的事件(客户端)

protected void xx_Click(object sender, EventArgs e)
{
//按钮的提交数据处理
}


//因为按钮是server控件,提交的时候有post动作,这样子会致使页面重加载一次,故客户端的js也只是一闪而逝,虽然可以在 xx.Attributes.Add("onclick", "return showdiv()"); return showdiv();加return false,但这样又不执行 xx_Click(object sender, EventArgs e)
事件.苦思多时也找不到解决方案,特来求教.给出解决方法者,100分送上,谢谢先了
...全文
298 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
HDNGO 2009-01-20
  • 打赏
  • 举报
回复
前台代码~
<div id="doing" runat="server" style="Z-INDEX: 12000; LEFT: 0px; WIDTH: 100%; CURSOR: wait; POSITION: absolute; TOP: 0px; HEIGHT: 100%"> 
<table width="100%" height="100%">
<tr align="center" valign="middle">
<td>
<table width="169" height="62" bgcolor="#99cccc" style="FILTER: Alpha(Opacity=75); WIDTH: 169px; HEIGHT: 62px">
<tr align="center" valign="middle">
<td>页面提交中.<br>
Loading.</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<asp:Button ID="Button1" runat="server" Text="Button" />

后台CS代码~
protected void Page_Load(object sender, EventArgs e)
{
this.Button1.Attributes.Add("onclick", "javascript:document.getElementById('doing').style.visibility='visible';");
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(1000);
}
}

override protected void OnPreRender(EventArgs e)
{
doing.Style.Add("visibility", "hidden");
}
xierfly 2009-01-20
  • 打赏
  • 举报
回复
你可以去网上 MagicAjax ,应该可以满足你的需求吧,微软那个ajax感觉生成的代码太多。
supremeholy 2009-01-20
  • 打赏
  • 举报
回复

<div id="doing" runat="server" style="Z-INDEX: 12000; LEFT: 0px; WIDTH: 100%; CURSOR: wait; POSITION: absolute; TOP: 0px; HEIGHT: 100%">
<table height="100%" width="100%">
<tr vAlign="middle" align="center">
<td>
<table style="FILTER: Alpha(Opacity=75); WIDTH: 169px; HEIGHT: 62px" height="62" width="169"
bgColor="#99cccc">
<tr vAlign="middle" align="center">
<td>业务处理中...<br>
请稍候...</td>
</tr>
</table>
</td>
</tr>
</table>
</div>


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码

If Page.IsPostBack = False Then
btnTj.Attributes.Add("onclick", "javascript:document.getElementById('doing').style.visibility='visible';")
End If
End Sub

Protected Overrides Sub OnPreRender(ByVal e As System.EventArgs)
doing.Style.Add("visibility", "hidden")
End Sub
jiang_jiajia10 2009-01-20
  • 打赏
  • 举报
回复

<asp:UpdatePanel ID="upl" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<div class="wopen2">
<div align="center" class="login font_04">数据加载中,请等待……</div>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:UpdatePanel>
kkun_3yue3 2009-01-20
  • 打赏
  • 举报
回复
ajax的应用场景啊
blackmeit 2009-01-20
  • 打赏
  • 举报
回复
弹出遮罩层,显示"数据处理中...",客户端是不知道数据已经处理完了,这需要与服务器交互的。简单用js是办不到了。楼主考虑用ajax吧。
liwei920 2009-01-20
  • 打赏
  • 举报
回复
用ajax吧。未处理完之前,showdiv(),当结果返回的时候,让div隐藏。
leaf110 2009-01-20
  • 打赏
  • 举报
回复
我试试~~谢谢先~
zhuanshen712 2009-01-20
  • 打赏
  • 举报
回复
用ajax吧。未处理完之前,showdiv(),当结果返回的时候,让div隐藏。
koukoujiayi 2009-01-20
  • 打赏
  • 举报
回复
微软AJAX中的UpdateProgress控件就是楼主的需求!!
zj1381289 2009-01-20
  • 打赏
  • 举报
回复
使用层

11111111
<script language="javascript" type="text/javascript">
function ShowDiv()
{
document.getElementById('divProcess').style.display='block';
document.getElementById('cmdQuery').click();
}
</script>
22222222
<div id="divProcess" style="position:absolute; width:80%; height:200px; top:60px; left:80px; display:none;z-index:100;">
<table border="0" cellpadding="0" cellspacing="0" style="background-color:GrayText; width:100%; height:100%">
<tr>
<td align="center"><img src="../images/loading.gif" width="20px" height="20px"/><b> 正在统计,请等待......</b></td>
</tr>
</table>
</div>
33333333
<input id="btn_sel" type="button" class="btn1" value="查询" onclick="ShowDiv()" />
44444444
<asp:Button ID="cmdQuery" runat="server" CssClass="btn1"
Text="查询" OnClick="cmdQuery_Click" Width="0px"/>



hongyin163 2009-01-20
  • 打赏
  • 举报
回复
要回传到服务器的啊,还是用ajax吧
xwk789xwk 2009-01-20
  • 打赏
  • 举报
回复
学习了
liuyeede 2009-01-20
  • 打赏
  • 举报
回复
重新写继承自Button的新按钮控件,在Render()方法中同时将客户端代码和你要的div加进去。这样你就可以控制点击按钮时控制div层的显示和消失。
shumark 2009-01-20
  • 打赏
  • 举报
回复
来晚了只有学习了~
rodgerluo 2009-01-20
  • 打赏
  • 举报
回复
我给你推荐一个
肯定能解决你的问题
微软发布的 Ajax.dll
可以做到前台html调用后台cs的方法
我现在就用的这个。
你可以去微软的官方网去找找,那里有很详细的例子。



html
<asp:TemplateField>
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<a href="#" onclick="ExpertRestore('<%# DataBinder.Eval(Container,"DataItem.Cid")%>')"
style="color: Blue">查看</a>
</ItemTemplate>
</asp:TemplateField>
---------
//专家回复
function ExpertRestore(cid)
{
document.getElementById('ctl00_ContentPlaceHolder1_lblCtime').innerHTML = "";
document.getElementById('ctl00_ContentPlaceHolder1_lblCsubject').innerHTML = "";
document.getElementById('ctl00_ContentPlaceHolder1_lblCcontent').innerHTML = "";
document.getElementById('ctl00_ContentPlaceHolder1_lblRestore').innerHTML = "";

document.getElementById("Experts").style.display="";
if(Member_Apply_Expert.SConsultationByCid(cid).value !="null")
{
var obj = Member_Apply_Expert.SConsultationByCid(cid).value.split(',');

document.getElementById('ctl00_ContentPlaceHolder1_lblCtime').innerHTML = obj[0];
document.getElementById('ctl00_ContentPlaceHolder1_lblCsubject').innerHTML = obj[1];
document.getElementById('ctl00_ContentPlaceHolder1_lblCcontent').innerHTML = obj[2];
document.getElementById('ctl00_ContentPlaceHolder1_lblRestore').innerHTML = obj[3];
}
}
-------------------
cs
#region Ajax
[Ajax.AjaxMethod()]
public static string SConsultationByCid(string cid)
{
MemberManageDB db = new MemberManageDB();
string content = "null";
//string sql = "select sid,pid,ApplySchool,ApplyPlan,ApplyDatum,ApplyCtime from at_Students where mid = " + mid;
DataSet dst = db.SConsultationByCid(cid);
if (dst.Tables.Count != 0)
{
if (dst.Tables[0].Rows.Count != 0)
{
string title = "";
for (int i = 0; i < dst.Tables[0].Rows.Count; i++)
{
int num = i + 1;
title += num.ToString()
+ dst.Tables[0].Rows[i]["CTime"].ToString() + ","
+ dst.Tables[0].Rows[i]["CSubject"].ToString() + ","
+ dst.Tables[0].Rows[i]["CContent"].ToString() + ","
+ dst.Tables[0].Rows[i]["EContent"].ToString() + " ";

}
return title;
}
else
{
return content;
}
}
else
{
return content;
}
}

#endregion
飞飞虫2015 2009-01-20
  • 打赏
  • 举报
回复
我是来顶帖的
liuenhai211 2009-01-20
  • 打赏
  • 举报
回复
AJAX
Adechen 2009-01-20
  • 打赏
  • 举报
回复
微软得ajax可以模拟一下

62,269

社区成员

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

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

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

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