65.9K
CodeProject 正在变化。 阅读更多。
Home

在 ASP.NET 中设计选项卡的简单方法

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (28投票s)

2012年1月11日

CPOL

2分钟阅读

viewsIcon

334008

downloadIcon

15389

本文将展示如何使用按钮、MultiView 控件和 CSS 在 ASP.NET 页面中创建选项卡。

引言

这是在 ASP.NET 页面中使用按钮、MultiView 控件和 CSS 显示选项卡的另一种方法。

背景

在 ASP.NET 中实现选项卡有很多方法,无需使用 AJAX 控件。

但是,许多解决方案使用 ASP.NET 菜单控件或自定义控件来显示选项卡。

此外,使用 ASP.NET 菜单控件,无法突出显示选定的选项卡。 这就是我提出一种使用命令按钮、CSS 和少量后端代码来显示选项卡的简单方法。

它是如何工作的?

这非常容易实现。

基本上会有两种 CSS 样式。

一种样式将具有初始背景图像,另一种样式将具有不同的背景图像以突出显示活动选项卡。 在每次按钮单击时,按钮的 CSS 样式将从代码隐藏处更新。

以下是理解这些步骤的简单方法:

1. 使用两张图片,一张用于初始样式,另一张用于显示选定的选项卡。(我使用画图工具创建这些图片。 不需要太多技巧)

InitialImage.png(初始显示)

SelectedButton.png(显示在选定的按钮上)

2. 创建两种不同的样式,一种用于初始显示(.Initial 和 .Initial:hover - 在鼠标指针移动到按钮上时更改样式),另一种用于显示选定的选项卡(.Clicked)。

  <style type="text/css">
  .Initial
  {
    display: block;
    padding: 4px 18px 4px 18px;
    float: left;
    background: url("../Images/InitialImage.png") no-repeat right top;
    color: Black;
    font-weight: bold;
  }
  .Initial:hover
  {
    color: White;
    background: url("../Images/SelectedButton.png") no-repeat right top;
  }
  .Clicked
  {
    float: left;
    display: block;
    background: url("../Images/SelectedButton.png") no-repeat right top;
    padding: 4px 18px 4px 18px;
    color: Black;
    font-weight: bold;
    color: White;
  }
  </style>

3. 为每个选项卡创建 ASP.NET 按钮,并将背景图像设置为初始样式。

a. 对于每个按钮,请确保将 **BorderStyle** 设置为“**None**”,以便它看起来像一个图像,而不是一个按钮。

4. 创建一个 Multi View 控件和与每个选项卡对应的不同视图。

  <body style="font-family: tahoma">
  <form id="form1" runat="server">
    <table width="80%" align="center">
      <tr>
        <td>
          <asp:Button Text="Tab 1" BorderStyle="None" ID="Tab1" CssClass="Initial" runat="server"
              OnClick="Tab1_Click" />
          <asp:Button Text="Tab 2" BorderStyle="None" ID="Tab2" CssClass="Initial" runat="server"
              OnClick="Tab2_Click" />
          <asp:Button Text="Tab 3" BorderStyle="None" ID="Tab3" CssClass="Initial" runat="server"
              OnClick="Tab3_Click" />
          <asp:MultiView ID="MainView" runat="server">
            <asp:View ID="View1" runat="server">
              <table style="width: 100%; border-width: 1px; border-color: #666; border-style: solid">
                <tr>
                  <td>
                    <h3>
                      <span>View 1 </span>
                    </h3>
                  </td>
                </tr>
              </table>
            </asp:View>
            <asp:View ID="View2" runat="server">
              <table style="width: 100%; border-width: 1px; border-color: #666; border-style: solid">
                <tr>
                  <td>
                    <h3>
                      View 2
                    </h3>
                  </td>
                </tr>
              </table>
            </asp:View>
            <asp:View ID="View3" runat="server">
              <table style="width: 100%; border-width: 1px; border-color: #666; border-style: solid">
                <tr>
                  <td>
                    <h3>
                      View 3
                    </h3>
                  </td>
                </tr>
              </table>
            </asp:View>
          </asp:MultiView>
        </td>
      </tr>
    </table>
  </form>
</body>



5. 在每次按钮单击时,将单击按钮的样式设置为采用新值。


  public partial class SimpleTabControl : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      if (!IsPostBack)
      {
        Tab1.CssClass = "Clicked";
        MainView.ActiveViewIndex = 0;
      }
    }

    protected void Tab1_Click(object sender, EventArgs e)
    {
      Tab1.CssClass = "Clicked";
      Tab2.CssClass = "Initial";
      Tab3.CssClass = "Initial";
      MainView.ActiveViewIndex = 0;
    }

    protected void Tab2_Click(object sender, EventArgs e)
    {
      Tab1.CssClass = "Initial";
      Tab2.CssClass = "Clicked";
      Tab3.CssClass = "Initial";
      MainView.ActiveViewIndex = 1;
    }

    protected void Tab3_Click(object sender, EventArgs e)
    {
      Tab1.CssClass = "Initial";
      Tab2.CssClass = "Initial";
      Tab3.CssClass = "Clicked";
      MainView.ActiveViewIndex = 2;
    }
  }

6. 最后,您可以获得所需的样式。(请使用附件中的 Zip 文件获取代码)

Tabs1.png

Tabs2.png

结论

这是显示选项卡和突出显示活动选项卡的另一种简单方法。

© . All rights reserved.