【问题标题】:ASP.net menu designASP.net 菜单设计
【发布时间】:2011-01-28 10:17:35
【问题描述】:

我有我的菜单:

        <asp:Panel runat="server" CssClass="menuLink" ID="mnuMyJobs">
            <a href="../jobs/index.asp">My Jobs</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuCreateSpec">
            <a href="../multipart/index.asp">Create Spec</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuArtworkTemplates">
            <img src="images/menuArrowR.png" class="menuArrow" alt="Selected" />
            <a href="#">Artwork Templates</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuAllReports">
            <a href="../reportingDashboard/index.asp?snavid=1">All Reports</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuBuyerReports">
            <a href="../buyerReports/index.asp?snavid=1">My Reports</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuSupplierReports">
            <a href="../supplierReports/index.asp?snavid=1">My Reports</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuContractPrices">
            <a href="../clientPrices/index.asp">Contract Prices</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuJobDirectory">
            <a href="../jobDirectory/index.asp">Job Directory</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuAddressBook">
            <a href="../addressBook/index.asp">Address Book</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuMyAccount">
            <a href="../account/index.asp">My Account</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuUserManager">
            <a href="../manage/userManager.asp">User Manager</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuCampaignManager">
            <a href="../campaignManager/indexMenu.asp?snavid=0">Campaign Manager</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuPackingConfig">
            <a href="../packingManager/index.asp?snavid=1">Packing Config</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuTemplateManager">
            <a href="../templateManager/index.asp?snavid=0">Template Manager</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuStockManager">
            <a href="../stockManager/index.asp?snavid=0">Stock Manager</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuHelpCentre">
            <strong><a href="../helpCentre/index.asp?snavid=1">Help Centre</a></strong>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuApprovalManager">
            <a href="../approvalManager/index.asp?snavid=1">Approval Manager</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuAdmin">
            <a href="../admin/search.asp?snavid=1">Admin</a>
        </asp:Panel>
        <asp:Panel runat="server" CssClass="menuLink" ID="mnuLogout">
            <a href="LoginHandler.ashx?userID=-1">Logout</a>
        </asp:Panel>

在我的代码后面:

// Hide/show menu items
            mnuCreateSpec.Visible = loginData.loggedInUser.isBuyer;
            mnuBuyerReports.Visible = loginData.loggedInUser.isBuyer;
            mnuSupplierReports.Visible = loginData.loggedInUser.isSupplier;
etc

我知道这不是最好的设计 ^ 但它必须向后兼容旧系统。但是,我的问题是,当“选择”菜单项时,面板应该带有图像:

<asp:Panel runat="server" CssClass="menuLink" ID="mnuArtworkTemplates">
                <img src="images/menuArrowR.png" class="menuArrow" alt="Selected" />
                <a href="#">Artwork Templates</a>
            </asp:Panel>

如何将该图像动态添加到正确的面板中?我真的不想要每个面板中的文字控件,还是我唯一的选择?此功能“选择”正确的面板,我需要使用此功能以某种方式插入图像

public void selectMenu(Panel menuToSelect)
{
    menuToSelect.CssClass = "menuLink selected";
}

【问题讨论】:

    标签: c# asp.net panel menu


    【解决方案1】:

    另一种方法是创建图像并将其添加到面板中:

                        mnuArtworkTemplates.Controls.Add(new Image
                                          {
                                              ImageUrl = "images/menuArrowR.png",
                                              CssClass = "menuArrow",
                                              AlternateText = "Selected"
                                          });
    

    【讨论】:

      【解决方案2】:

      如果图像始终是同一个图像,您可以将其放入标记中并默认设置为不可见: 我的工作

      然后,当您的面板被选中时,使其 pnlSelectedImg 可见。

      public void SelectMenu (Panel menuToSelect){
          ((Image)(menuToSelect.FindControl("pnlSelectedImg")).Visible = true;
      }
      

      类似的东西?

      【讨论】:

      • +1 感谢您的关注,我找到了一个效果很好的解决方案(自己回答)
      • 没问题。当然,更巧妙的方法是使用 JQuery/Javascript 来完成这一切 - 更改类是轻而易举的事情,并且可以节省所有那些令人厌烦的 20 世纪风格的回发;-)
      【解决方案3】:

      想通了:

              // Add the arrow image
              Image arrowImage = new Image();
              arrowImage.ImageUrl = "images/menuArrowR.png";
              arrowImage.CssClass = "menuArrow";
              arrowImage.AlternateText = "Selected menu item";
              menuToSelect.Controls.Add(arrowImage);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-26
        • 2010-09-22
        • 2016-08-19
        • 1970-01-01
        相关资源
        最近更新 更多