【话题】Ajax 动态加载UserControl的问题
2009-09-16 11:07:27 来自:思绪跳跃 浏览数:51次
我有三个UserControl: Top.ascx, LoginBar.ascx,Logined.ascx. 想在top.ascx 中动态加载后面连个控件,当session["user"]=null 是加载loginBar.ascx 非空时 加载logined.ascx 表明用户已经登录并显示登录信息。用非Ajax,已经可以实现了,但现在想用Ajax显示无刷新的动态加载。
LoginBar.ascx 中,当用户输入正确的用户名和密码后,就回去设 Session["User"] ,现在不知道怎么做的当session["user"]有指后,让Top.ascx 中的UpdatePanel 去update 加载新的用户控件?
现在的代码如下:
Top.ascx (UpdatePanel 中的LogControl div 是用来放加载的2个用户控件的
<%@ Register Src="LoginBar.ascx" TagName="LoginBar" TagPrefix="uc2" %>
<%@ Register Src="Logined.ascx" TagName="Logined" TagPrefix="uc1" %>
<asp:ScriptManager ID="sm" runat="server">
</asp:ScriptManager>
<div style="text-align: center;">
<asp:UpdatePanel ID="updatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<div id="LogControl" runat="server">
</div>
</ContentTemplate>
</asp:UpdatePanel>
--------------------------------------------------------------
Top.ascx.cs
public partial class Top : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
if (Session["User"] == null || Session["User"].ToString()=="")
{
Control ct = LoadControl("LoginBar.ascx");
LogControl.Controls.Clear();
LogControl.Controls.Add(ct);
}
else
{
Control ct = LoadControl("Logined.ascx");
LogControl.Controls.Clear();
LogControl.Controls.Add(ct);
}
}
}
--------------------------------------------------------------------
LoginBar.ascx (是用户登录条)
<table border="0" align="center" cellpadding="0" cellspacing="0" style="width: 750px;
height: 34px">
<tr>
<td style="width: 70px;">
</td>
<td class="fontlogin" style="width: 65px; text-align: left;">
用户名: </td>
<td align="left" style="width: 170px">
<asp:TextBox CssClass="textbox" ID="txtUid" runat="server" Height="16px" Width="150px"> </asp:TextBox> </td>
<td valign="middle" class="fontlogin" style="width: 65px; text-align: left;">
密 码: </td>
<td align="left" style="width: 170px">
<asp:TextBox CssClass="textbox" ID="txtPwd" runat="server" TextMode="Password" Height="16px" Width="150px"> </asp:TextBox> </td>
<td style="width: 80px; text-align: left;">
<asp:ImageButton ID="ibtnLogin" runat="server" ImageUrl="../images/btnLogin.jpg" OnClick="ibtnLogin_Click" CausesValidation="False" /> </td>
<td align="left" valign="middle">
<asp:ImageButton ID="ibtnRegister" runat="server" ImageUrl="../images/btnRegister.jpg"
OnClick="ibtnRegister_Click" CausesValidation="False" /> </td>
</tr>
</table>
-----------------------------------------------------------------
LoginBar.ascx.cs
public partial class LoginBar : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void ibtnLogin_Click(object sender, ImageClickEventArgs e)
{
string strUid = this.txtUid.Text.Trim();
string strPwd = this.txtPwd.Text.Trim();
if (strUid != "" && strPwd != "")
{
string role = Users.VerifyUserLogin(strUid, strPwd);
if (role != string.Empty)
{
Session["User"] = strUid;
}
}
}
protected void ibtnRegister_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("Register.aspx");
}
}
------------------------------------------------------------------------------------
Logined.ascx (显示登录后信息)
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Logined.ascx.cs" Inherits="Logined" %>
<table border="0" align="center" cellpadding="0" cellspacing="0" background="images/lbg.jpg"
style="width: 750px; height: 34px">
<tr>
<td>
<div align="center">
欢迎您!
<asp:Label ID="lblUid" runat="server" Text="用户名"> </asp:Label>
<asp:LinkButton ID="lbtnLogout" runat="server" OnClick="lbtnLogout_Click" CausesValidation="False">注销 </asp:LinkButton>
</div>
</td>
<td>
</td>
</tr>
</table>
logined.ascx.cx
public partial class Logined : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["User"] != null && Session["User"].ToString()!="")
{
this.lblUid.Text = Session["User"].ToString();
}
}
protected void lbtnLogout_Click(object sender, EventArgs e)
{
Session.Clear();
}
}
更多相关的话题
柠檬茶回复于16日11点16分
有人能解吗?
kuailemama回复于16日11点31分
这个ViewPanel 怎么用? 一个类不能直接拖到ASPX里吧
白雪公主1回复于16日11点47分
顶哈子,免得沉了
我爱物理书回复于16日12点01分
顶下。。。
燕小燕回复于16日12点14分
顶
lxh0452回复于16日12点29分
OK, Cat 已经解决了, ViewPanel 很方便。
syfx-myr回复于16日12点41分
补充下:在LoginBar.ascx 按登录 和在logined.ascx中的 注销 linkbuttion 都要点两下才运行注销?
潘乃延回复于16日12点57分
如需要阅读该回复,请登录或注册CSDN!