当前位置:编程学习 > C#/ASP.NET >>

关于等待提示.

我在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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,