20 Panel 控件

Panel 控件可以作为一个页面上的其他控件的容器。它控制其包含的控件的外观和可视度。它还允许生成控件编程。

面板控件的基本语法如下:

  1. <asp:Panel ID= "Panel1" runat = "server">
  2. </asp:Panel>

面板控件从 WebControl 类派生。因此,它同样地继承了所有的属性、方法和事件。它不具有任何自己的方法或事件。然而,它有自己的以下属性:

属性 描述
BackImageUrl 面板背景图像的地址。
DefaultButton 获取或设置包含在 Panel 控件的默认按钮的标识符。
Direction 面板中的文本方向。
GroupingText 允许文本作为一个字段分组。
HorizontalAlign 水平对齐面板中的内容。
ScrollBars 指定面板内滚动条的可见性和位置。
Wrap 允许文本换行。

使用面板控件

让我们从一个具体的高度和宽度、边框样式简单的滚动面板开始。滚动条属性设置为两个滚动条,因此两个滚动条同时被呈现。

源文件具有如下的面板标签代码:

  1. <asp:Panel ID="Panel1" runat="server" BorderColor="#990000" BorderStyle="Solid"
  2. Borderstyle="width:1px" Height="116px" ScrollBars="Both" style="width:278px">
  3.  
  4. This is a scrollable panel.
  5. <br />
  6. <br />
  7.  
  8. <asp:Button ID="btnpanel" runat="server" Text="Button" style="width:82px" />
  9. </asp:Panel>

面板呈现如下:

image 图片 20.1 image

例子

下面的例子演示了动态内容生成。用户提供要在面板上产生的标签控件和文本框的数目。控件以编程方式生成。

用属性窗口更改面板属性。当您在设计视图中选择一个控件时,该属性窗口中将显示特定控件的属性,并允许您更改,而无需键入。

image 图片 20.2 image

示例的源文件如下:

  1. <form id="form1" runat="server">
  2. <div>
  3. <asp:Panel ID="pnldynamic" runat="server" BorderColor="#990000"
  4. BorderStyle="Solid" Borderstyle="width:1px" Height="150px" ScrollBars="Auto" style="width:60%" BackColor="#CCCCFF" Font-Names="Courier" HorizontalAlign="Center">
  5.  
  6. This panel shows dynamic control generation:
  7. <br />
  8. <br />
  9. </asp:Panel>
  10. </div>
  11.  
  12. <table style="width: 51%;">
  13. <tr>
  14. <td class="style2">No of Labels:</td>
  15. <td class="style1">
  16. <asp:DropDownList ID="ddllabels" runat="server">
  17. <asp:ListItem>0</asp:ListItem>
  18. <asp:ListItem>1</asp:ListItem>
  19. <asp:ListItem>2</asp:ListItem>
  20. <asp:ListItem>3</asp:ListItem>
  21. <asp:ListItem>4</asp:ListItem>
  22. </asp:DropDownList>
  23. </td>
  24. </tr>
  25.  
  26. <tr>
  27. <td class="style2"> </td>
  28. <td class="style1"> </td>
  29. </tr>
  30.  
  31. <tr>
  32. <td class="style2">No of Text Boxes :</td>
  33. <td class="style1">
  34. <asp:DropDownList ID="ddltextbox" runat="server">
  35. <asp:ListItem>0</asp:ListItem>
  36. <asp:ListItem Value="1"></asp:ListItem>
  37. <asp:ListItem>2</asp:ListItem>
  38. <asp:ListItem>3</asp:ListItem>
  39. <asp:ListItem Value="4"></asp:ListItem>
  40. </asp:DropDownList>
  41. </td>
  42. </tr>
  43.  
  44. <tr>
  45. <td class="style2"> </td>
  46. <td class="style1"> </td>
  47. </tr>
  48.  
  49. <tr>
  50. <td class="style2">
  51. <asp:CheckBox ID="chkvisible" runat="server"
  52. Text="Make the Panel Visible" />
  53. </td>
  54.  
  55. <td class="style1">
  56. <asp:Button ID="btnrefresh" runat="server" Text="Refresh Panel"
  57. style="width:129px" />
  58. </td>
  59. </tr>
  60. </table>
  61. </form>

在 Page_Load 事件背后的负责动态生成的控件的源代码为:

  1. public partial class _Default : System.Web.UI.Page
  2. {
  3. protected void Page_Load(object sender, EventArgs e)
  4. {
  5. //make the panel visible
  6. pnldynamic.Visible = chkvisible.Checked;
  7.  
  8. //generating the lable controls:
  9. int n = Int32.Parse(ddllabels.SelectedItem.Value);
  10. for (int i = 1; i <= n; i++)
  11. {
  12. Label lbl = new Label();
  13. lbl.Text = "Label" + (i).ToString();
  14. pnldynamic.Controls.Add(lbl);
  15. pnldynamic.Controls.Add(new LiteralControl("<br />"));
  16. }
  17.  
  18. //generating the text box controls:
  19.  
  20. int m = Int32.Parse(ddltextbox.SelectedItem.Value);
  21. for (int i = 1; i <= m; i++)
  22. {
  23. TextBox txt = new TextBox();
  24. txt.Text = "Text Box" + (i).ToString();
  25. pnldynamic.Controls.Add(txt);
  26. pnldynamic.Controls.Add(new LiteralControl("<br />"));
  27. }
  28. }
  29. }

当被执行时,面板呈现为:

image 图片 20.3 image