早起的朋友们,帮忙看个问题,我用UpdatePanel结合ModalPopupExtender做的弹出对话框,用来修改用户密码,修改功能已经实现!
现在的问题是:点击提交修改的按钮后,当UpdatePanel更新还没完成的时候,隐藏palBefore,显示一个loading的图片(palOut),更新完成后,隐藏(palOut),显示“修改成功”(palAfter)!我用的三个panel分别表示这个三块,三个放在一个div中的!
想在后台程序中实现,请教前辈们如何实现?
<asp:Panel ID="palUpdatePwd" CssClass="updatepwd" runat="server" style="display:none;">
        <asp:UpdatePanel ID="UpalPwd" runat="server">
        <ContentTemplate><!--标题栏-->
            
            
            <ul>
                <li class="pal_l"></li>
                <li class="pal_c"><p>修改密码</p>
                    <asp:ImageButton ID="ibtn_Close" ImageUrl="~/images/alax_close.gif" 
                        runat="server" onclick="ibtn_Close_Click" /></li>
                <li class="pal_r"></li>
            </ul>
            <div class="pal_content">
            //更新前显示的Panel
            <asp:Panel ID="palBefore" runat="server">
              <table>
                <tr>
                    <td class="pal_contitle">原密码:</td>
                    <td>
                        <asp:TextBox ID="txtOldPwd" runat="server" TextMode="Password" BorderColor="Gray"
                            BorderStyle="Solid" BorderWidth="1px" onBlur="OldPwdIsNull()"></asp:TextBox></td>
                    <td style="width:114px;">
                        <label id="oldPwdError"></label></td>
                </tr>
                <tr>
                    <td class="pal_contitle">新密码:</td>
                    <td>
                        <asp:TextBox ID="txtNewPwd" runat="server" TextMode="Password" BorderColor="Gray"
                            BorderStyle="Solid" BorderWidth="1px" onBlur="CheckPassword()"></asp:TextBox></td>
                    <td style="width:114px;"><label id="newPwdError"></label></td>
                </tr>
                <tr>
                    <td class="pal_contitle">确认密码:</td>
                    <td>
                        <asp:TextBox ID="txtRepeatNewPwd" runat="server" TextMode="Password" BorderColor="Gray"
                            BorderStyle="Solid" BorderWidth="1px" onBlur="IsCheckPassword()"></asp:TextBox></td>
                    <td style="width:114px;"><label id="repPwdErrot"></label></td>
                </tr>
            </table>  
            <ul class="pwd_btn">
                <li>
                    //提交修改的按钮
                    <asp:ImageButton ID="ibtnUpdatePwd" ImageUrl="~/images/btn_03.jpg" OnClientClick="if(!CheckReslut()) return false;"
                        runat="server" onclick="ibtnUpdatePwd_Click" /></li>
                <li class="pwd_cancle">
                   //取消按钮
                    <asp:ImageButton ID="ibtnUpdateCancel" runat="server" 
                        ImageUrl="~/images/btn_02.jpg" onclick="ibtnUpdateCancel_Click" />
                    </li>
            </ul>
            </asp:Panel>
            //更新中显示的Panel
            <asp:Panel ID="palOut" runat="server" Visible="false">
            <img alt="" src="images/loading1.gif" /></asp:Panel>
            //更新后显示的Panel
            <asp:Panel ID="palAfter" runat="server" Visible="false">
            修改密码成功...</asp:Panel>
            </div>
            
        </ContentTemplate>
        </asp:UpdatePanel>
        </asp:Panel>
int count = Convert.ToInt32(SqlHelper.ExecuteNonQuery(CommandType.Text, "update users set password = @password where username = @username", new SqlParameter("@password",Tool.EncryptPassword(txtNewPwd.Text)), new SqlParameter("@username", Request.Cookies["myGameLogin"]["UserName"])));
            if (count > 0) 
            {
                //在这里修改密码成功后,判断UpdatePanel的更新状态,如果在更新过程中,就显示palOut,更新完成显示palAfter
                //我这样写的代码,把loading那个panle显示出来了,而且显示出来了就不消失,不知道下面该怎么做了
                if (ScriptManager.GetCurrent(this).IsInAsyncPostBack)
                {
                    palBefore.Visible = false;
                    palOut.Visible = true;
                }
                else if (!ScriptManager.GetCurrent(this).IsInAsyncPostBack) 
                {
                    palBefore.Visible = true;
                    palOut.Visible = false;
                }
            }
修改密码前:UpdatePanel更新中:

解决方案 »

  1.   

    应该是添加updateprogress,在这里里面定义把
      

  2.   

    不需要这么麻烦!
    拖一个updateprogress控件,在这个控件中加div/图片/文字等,
    设置DisplayAfter=0毫秒;或默认!
    再更新完以后再弹出你的"修改成功"框!
      

  3.   

    按照你的说法你可以用while循环,一直等到结果出现再执行下面的操作。
    假如说你有一个读取数据库某字段的方法叫ReadPwd(),刚才修改后的密码为strPwd;
    则有
    while(ReadPwd() != strPwd)
    {
        palBefore.Visable = false;
        palOut.Visible = true;
        //显示正在更新
    }
    //更新已经完成
        palOut.Visible = false;
        //显示更新完成
      

  4.   

    updateprogress 嗯 就是酱紫的 、
      

  5.   

    UPDATEPANEL 应用比较麻烦(个人认为),你要设置好,甚设置不好任何异步都会引起UPDATE 的刷新
    UPDATEpanel 有个 条件设置的,你可以 看看
      

  6.   

    UpdatePanel我们就用的是这个控件啊,好使看有没有什么属性可以设的,或是看你的panel隐藏那块是否写正确了。
      

  7.   


    updateprogress,这个现实出来的时候,palBefore不能隐藏啊?
      

  8.   

    updateprogress,这个显示出来的时候,palBefore怎么隐藏啊?