早起的朋友们,帮忙看个问题,我用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更新中:
现在的问题是:点击提交修改的按钮后,当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更新中:
拖一个updateprogress控件,在这个控件中加div/图片/文字等,
设置DisplayAfter=0毫秒;或默认!
再更新完以后再弹出你的"修改成功"框!
假如说你有一个读取数据库某字段的方法叫ReadPwd(),刚才修改后的密码为strPwd;
则有
while(ReadPwd() != strPwd)
{
palBefore.Visable = false;
palOut.Visible = true;
//显示正在更新
}
//更新已经完成
palOut.Visible = false;
//显示更新完成
UPDATEpanel 有个 条件设置的,你可以 看看
updateprogress,这个现实出来的时候,palBefore不能隐藏啊?