关于等待提示.
我在server端Button的OnClick事件下调用后台一个类的查询方法,这个方法执行会花很长时间,所以想在点击Button调用这个查询方法的时候,在前台浏览器界面上显示一个我已经做好的隐藏层,这个该怎么实现?目前代码如下,该如何修改:
protected void Button1_Click(object sender, EventArgs e)
{
msg.Visible = true; //显示隐藏的层
DataTable dt_table = new DataTable();
DataSearch ds_DataSearch = new DataSearch();
dt_table = ds_DataSearch.Search_Rapt_Pic(s_yy.Text, e_yy.Text, tt.Text, smlx.SelectedItem.Value.ToString()); //执行查询返回datatable
GridView1.DataSource = dt_table;
GridView1.DataBind();
}
--------------------编程问答-------------------- 另开一个线程,委托一下 --------------------编程问答-------------------- 是不是显示加开条啊? --------------------编程问答-------------------- 就像“正在加截中。。。” --------------------编程问答-------------------- 换一张图片就是了阿 --------------------编程问答-------------------- 还是开个线程 再线程里面控制隐藏层 --------------------编程问答-------------------- 具体怎么实现,能给段例子代码吗? --------------------编程问答-------------------- 这是“正在加截数据。。”的例子
建一个HTML文件:源码以下,
<!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" id="mainWindow">
<head>
<title>无标题页</title>
<script language="javascript" type="text/javascript">
function SetPorgressBar(pos)
{
//设置进度条居中
var screenHeight = window["mainWindow"].offsetHeight;
var screenWidth = window["mainWindow"].offsetWidth;
ProgressBarSide.style.width = Math.round(screenWidth / 4);
ProgressBarSide.style.left = Math.round(screenWidth / 3);
ProgressBarSide.style.top = Math.round(screenHeight / 2);
ProgressBarSide.style.height = "21px";
ProgressBarSide.style.display = "";
//设置进度条百分比
ProgressBar.style.width = pos + "%";
ProgressText.innerHTML = "正在加载,请稍后....." + pos + "%";
}
//完成后隐藏进度条
function SetCompleted()
{
ProgressBarSide.style.display = "none";
MyTable.style.display="none";
}
</script>
</head>
<body>
<!--<div id="mydiv" style="width: 224px">数据处理中....</div>-->
<div id="ProgressBarSide" style="position:absolute;height:21px;width:100px;color:Silver;border-width:1px;border-style:Solid;display:none">
<div id="ProgressBar" style="position:absolute;height:21px;width:0%;background-color:PaleTurquoise"></div>
<div id="ProgressText" style="position:absolute;height:21px;width:100%;text-align:center"></div>
</div>
</body>
</html>
在你要显示加截的page_load:
if (!Page.IsPostBack)
{
beginProgress();
for (int i = 1; i <= 100; i++)
{
setProgress(i);
//此处用线程休眠代替实际的操作,如加载数据等
System.Threading.Thread.Sleep(20);
}
finishProgress();
}
函数:
/// <summary>
///显示进度条
/// </summary>
private void beginProgress()
{
//根据ProgressBar.htm显示进度条界面
string templateFileName = Path.Combine(Server.MapPath("."), "ProgressBar.htm");
StreamReader reader = new StreamReader(@templateFileName,System.Text.Encoding.GetEncoding("GB2312"));
string html = reader.ReadToEnd();
reader.Close();
Response.Write(html);
Response.Flush();
}
private void setProgress(int percent)
{
string jsBlock = "<script>SetPorgressBar('" + percent.ToString() + "'); </script>";
Response.Write(jsBlock);
Response.Flush();
}
private void finishProgress()
{
string jsBlock = "<script>SetCompleted();</script>";
Response.Write(jsBlock);
Response.Flush();
} --------------------编程问答-------------------- 用得着那么麻烦么~
后台设置:
if (!IsPostBack)
{
Button1.Attributes.Add("onclick", "ShowBar()");
}
JS代码:
function ShowBar()
{
var h=450;
var w=490;
var div=document.createElement("<div style='position:absolute;visibility:visible;background-color:#eeeeee;filter:alpha(opacity=85);border:1px;z-index:2;left:0;top:0;width:"+w+"px;height:"+h+"px;'></div>");
document.body.appendChild(div);
document.getElementById("Load_Div").style.display="";
}
然后页面里面放个DIV:
<div style="height: 10px; width: 350px; padding:5px;z-index:10;left:90px;top:90px;position: absolute;display:none" id="Load_Div">
<img src="images/FileUP_loading.gif" /> 正在上传中...
</div>
就OK --------------------编程问答-------------------- 说明:
这是我写的一个"数据提交中,请稍后......"特效的用户控件。
你可以将它做成你自已的用户控件。
调用方式如下:
<uc1:uc_Loading2 id="Uc_Loading21" m_text="数据处理中,请稍后......" runat="server"></uc1:uc_Loading2>
前台代码:
<script language="javascript">
//显示 DIV 层
function uc_load_showLoadDiv()
{
var db = document.getElementById("loadDiv");
db.style.display = "block";
return true;
}
</script>
<div id="loadDiv" style="DISPLAY: none; Z-INDEX: 100; 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="FONT-SIZE: 12px; FILTER: Alpha(Opacity=75); WIDTH: 169px; FONT-FAMILY: 宋体; HEIGHT: 62px"
height="62" width="169" bgColor="#99cccc">
<tr>
<td><% Response.Write(loading_Text.Text); %></td>
</tr>
<tr vAlign="middle" align="center">
<td>
<img src="/img/load.gif"><!--这里的图片路径以你的项目为准-->
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div style="DISPLAY: none">
<asp:Label id="loading_Text" runat="server"></asp:Label>
</div>
后台代码
/// <summary>
/// 文本
/// </summary>
public string m_text
{
get
{
return this.loading_Text.Text;
}
set
{
this.loading_Text.Text = value;
}
} --------------------编程问答-------------------- 顶,两个 div 用脚本控件就行了,单击按钮时触发隐藏div的脚本 --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 建议用AJAX,他有进度条控件,或者做个假的,放个图片显示正在加载。。。 --------------------编程问答-------------------- 请问msg这在哪个库里,我有个程序一只看不懂msg从哪里来的? --------------------编程问答-------------------- http://topic.csdn.net/u/20100727/10/6710495C-A47C-45AB-8CF2-BD8F57AC5D78.html#r_67268005 --------------------编程问答-------------------- 木有嘞
补充:.NET技术 , ASP.NET