ASP.net中Panel控件极致

2012 年 11 月 22 日5230

欢迎进入.NET社区论坛,与300万技术人员互动交流 >>进入

 有朋友问起我Panel控件有什么用,认为Panel控件只不过是控制一些控件的整体输入输出,没有什么大的用途,呵呵,确实这样,Panel控件的功能只能是这么点点,但是它一旦和其它的Web控件结合起来使用,它的优点就显现出来了。

  我们下面来模拟一个用户申请的页面。申请分为四步,第一步输入用户名,第二步输入用户信息,第三步显示确定信息,第四步确认。如图1至图4



图1





图2





图3





图4

在一般的技术中,我们每一步就需要一个程序用于判断显示,而在如果使用Panel控件,这四步(或者是更多的步骤)都可以合为一个页面搞定。按照朋友的意思,我把源程序帖出来,下面是程序,由于最近我们的时间较紧,飞刀就不多解释了,请大家自已理解了。主要是利用Web控件的保值特性:

<Script Language="C#" Runat="Server">

public void Page_Load(Object src,EventArgs e)

{

if(!Page.IsPostBack)

{

file://初始化Panel

State["PanelSeed"] = 0;

Panel0.Visible = true;

Panel1.Visible = false;

Panel2.Visible = false;

Panel3.Visible = false;

}

}

public void PrevStep(Object src,EventArgs e)

{

file://大家没有忘记State吧。

string CurrentPanel = "Panel"+State["PanelSeed"].ToString();

State["PanelSeed"] = (int)State["PanelSeed"]-1;

string PrevPanel = "Panel"+State["PanelSeed"].ToString();

file://这里注意FindControl的极致

Panel p = (Panel)FindControl(CurrentPanel);

p.Visible = false;

p = (Panel)FindControl(PrevPanel);

p.Visible = true;

}

public void NextStep(Object src,EventArgs e)

{

string CurrentPanel = "Panel"+State["PanelSeed"].ToString();

State["PanelSeed"] = (int)State["PanelSeed"]+1;

string NextPanel = "Panel"+State["PanelSeed"].ToString();

Panel p = (Panel)FindControl(CurrentPanel);

p.Visible = false;

p = (Panel)FindControl(NextPanel);

p.Visible = true;

if((int)State["PanelSeed"]==2)

{

FUserName.Text = UserName.Text;

FPasswd.Text = Passwd.Text;

FAddress.Text = Address.Text;

FZipCode.Text = ZipCode.Text;

FComment.Text = Comment.Text;

}

}

</script>

<html>

<head>

<title></title>

</head>

<body>

<form runat="server">

<asp:Panel runat="server" >

<table cellpadding="0" cellspacing="0" bordercolor="#111111">

<tr>

<td colspan="3" bgcolor="#339966">

<font color="#FFFF99">第一步 选择用户名</font></td>

</tr>

<tr>

<td bgcolor="#EEEDDB">用户名:</td>

<td bgcolor="#EEEDDB">

<asp:TextBox runat="Server" /></td>

<td bgcolor="#EEEDDB">

<asp:Button Text="下一步" runat="server"/></td>

</tr>

</table>

</asp:Panel>

<asp:Panel runat="server">

<table cellpadding="0" cellspacing="0" bordercolor="#111111">

[1][2]下一页

【责编:ivy】

0 0