Отдельные стили ASP.NET MenuItem

Итак, согласно комментариям, я использовал createQueryBuilder и beberlei / doctrineextensions.

вот DQL:

$qb = $this->createQueryBuilder('rr')
        ->andWhere('YEAR(rr.date) = :year')
        ->setParameter('year', $year)
        ->orderBy('rr.date', 'ASC')
        ->getQuery();

    return $qb->execute();

и в doctrine.yaml я добавил это:

dql:
      string_functions:
        YEAR: DoctrineExtensions\Query\Mysql\Year

и теперь он работает хорошо, спасибо всем!

12
задан CodeMonkey1313 1 April 2009 в 13:19
поделиться

2 ответа

За исключением переопределения RenderContents в Меню, Ваши опции очень ограничены. Большая часть того, в чем Вы нуждались бы, является частной и изолируется, и Вы не доберетесь нигде там.

Мое решение состояло бы в том, чтобы использовать шаблоны. Вы могли использовать MenuItem. Значение или Глубина и и ItemIndex, чтобы определить каждый объект и обеспечить необходимые атрибуты.

На странице:

<asp:Menu ID="menu" runat="server" DynamicHorizontalOffset="2" StaticSubMenuIndent="10px">
    <Items>
        <asp:MenuItem Text="Item 1" Value="value 1">
            <asp:MenuItem Text="Item 2" Value="value 2">
                <asp:MenuItem Text="Item 3" Value="value 3"></asp:MenuItem>
            </asp:MenuItem>
            <asp:MenuItem Text="Item 4" Value="value 4">
                <asp:MenuItem Text="Item 5" Value="value 5"></asp:MenuItem>
            </asp:MenuItem>
            <asp:MenuItem Text="Item 6" Value="value 6"></asp:MenuItem>
        </asp:MenuItem>
        <asp:MenuItem Text="Item 7" Value="value 7"></asp:MenuItem>
        <asp:MenuItem Text="Item 8" Value="value 8"></asp:MenuItem>
    </Items>
    <StaticItemTemplate>
        <asp:Panel runat="server" ForeColor='<%# GetItemColor(Container) %>'>
            <%# Eval("Text") %> - <%# Eval("Value") %>
        </asp:Panel>
    </StaticItemTemplate>
    <DynamicItemTemplate>
        <asp:Panel ID="Panel1" runat="server" ForeColor='<%# GetItemColor(Container) %>'>
            <%# Eval("Text") %> - <%# Eval("Value") %>
        </asp:Panel>
    </DynamicItemTemplate>
</asp:Menu>

В Коде (не берут в голову глупость этого кода, она должна только продемонстрировать принцип):

public Color GetItemColor(MenuItemTemplateContainer container)
{
    MenuItem item = (MenuItem)container.DataItem;

    //identify based value
    if (item.Value == "value 2")
        return Color.Brown;

    //identify based on depth and index
    if (item.Depth == 0)
        switch (container.ItemIndex)
        {
            case 0: return Color.Red;
            case 1: return Color.Blue;
            case 2: return Color.DarkGreen;
            default:
                return Color.Black;
        }
    else
        switch (container.ItemIndex)
        {
            case 0: return Color.Purple;
            case 1: return Color.Aqua;
            case 2: return Color.DarkOrange;
            default:
                return Color.Black;
        }
}
11
ответ дан 2 December 2019 в 07:22
поделиться

При генерации меню программно можно добавить стиль и атрибуты onmouseover/onmouseout при создании каждого MenuItem, например:

menuItem.Attributes["style"] = "color: red;";
menuItem.Attributes["onmouseover"] = "javascript:Highlight(this);";

С другой стороны, попытайтесь добавить те атрибуты в разметке, IntelliSense не скажет Вам, что они работают, но они обычно делают (я не протестировал его конкретно с MenuItems):

<asp:menuitem navigateurl="Home.aspx" 
    text="Home"
    imageurl="Images\Home.gif"
    popoutimageurl="Images\Popout.jpg"   
    tooltip="Home"
    style="color: red;" onmouseover="Highlight(this);" onmouseout="Unhighlight(this);"/>

У Вас могла бы быть некоторая удача с CSS Дружественные Адаптеры.

Конечно, можно создать наследованный класс и переделать стандартные программы рендеринга...

-4
ответ дан 2 December 2019 в 07:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: