ASP.net дизайн меню - PullRequest
       5

ASP.net дизайн меню

0 голосов
/ 28 января 2011

У меня есть меню:

        <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";
}

Ответы [ 3 ]

1 голос
/ 28 января 2011

Другой способ - создать изображение и добавить его на панель:

                    mnuArtworkTemplates.Controls.Add(new Image
                                      {
                                          ImageUrl = "images/menuArrowR.png",
                                          CssClass = "menuArrow",
                                          AlternateText = "Selected"
                                      });
1 голос
/ 28 января 2011

Если изображение всегда будет одним и тем же, вы можете поместить его в разметку и установить его по умолчанию невидимым: Мои задания

Затем, когда ваша панель выбрана, сделайте ее pnlSelectedImgвидимый.

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

Что-то подобное?

0 голосов
/ 28 января 2011

Разобрался:

        // 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);
...