ASP.NET从代码隐藏中动态地为每个MenuItem添加单独的背景颜色 [英] ASP.NET add individual Background Color for each MenuItem dynamically from codebehind

查看:99
本文介绍了ASP.NET从代码隐藏中动态地为每个MenuItem添加单独的背景颜色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用asp菜单控件。我正在绑定数据库中的菜单项。但是,我要求每个MenuItem的背景颜色必须是不同的颜色(即)每个菜单将以不同的颜色显示。这可能吗?或建议我做任何其他方法。



非常感谢提前

I'm using asp Menu Control. I was binding Menu items from database. However, I've got a requirement that each MenuItem's Background color must be different colors(i.e) Each menu will be displayed in different colur. Is this possible to do that? or Suggest me any other method to do.

Many thanks in advance

推荐答案

是的,同样的解决方法这里讨论。

http://stackoverflow.com/questions/ 705440 / asp-net-menuitem-individual-styles [ ^ ]
Yes, same workaround is discussed here.
http://stackoverflow.com/questions/705440/asp-net-menuitem-individual-styles[^]


<br />
public partial class WebForm1 : System.Web.UI.Page<br />
    {<br />
        protected void Page_Load(object sender, EventArgs e)<br />
        {<br />
<br />
            DataTable dt = new DataTable();<br />
<br />
            dt.Columns.Add("pkid");<br />
            dt.Columns.Add("MenuName");<br />
            dt.Columns.Add("ParentID");<br />
            dt.Columns.Add("MenuLocation");<br />
<br />
            dt.Rows.Add("1", "Parent 1", 0, "#");<br />
            dt.Rows.Add("2", "Parent 2", 0, "#");<br />
<br />
            dt.Rows.Add("3", "Child 1-1", 1, "#");<br />
            dt.Rows.Add("4", "Parent 1-2", 1, "#");<br />
            dt.Rows.Add("5", "Parent 1-3", 1, "#");<br />
<br />
            dt.Rows.Add("6", "Child 2-1", 2, "#");<br />
            dt.Rows.Add("7", "Parent 3-2", 2, "#");<br />
            dt.Rows.Add("8", "Parent 3-3", 2, "#");<br />
<br />
            foreach (DataRow dr in dt.Select("ParentID =" + 0)) <br />
            {<br />
                MenuItem mnu = new MenuItem(dr["MenuName"].ToString(), dr["pkid"].ToString(), "", dr["MenuLocation"].ToString());<br />
                menuBar.Items.Add(mnu); <br />
            }<br />
<br />
            foreach (DataRow dr in dt.Select("ParentID >" + 0)) <br />
            { <br />
                MenuItem mnu = new MenuItem(dr["MenuName"].ToString(), dr["pkid"].ToString(), "", dr["MenuLocation"].ToString()); <br />
                menuBar.FindItem(dr["ParentID"].ToString()).ChildItems.Add(mnu); <br />
            } <br />
        }<br />
<br />
        public Color GetItemColor(MenuItemTemplateContainer container)<br />
        {<br />
            MenuItem item = (MenuItem)container.DataItem;<br />
<br />
            //identify based value<br />
            //if (item.Value == "value 2")<br />
            //    return Color.Brown;<br />
<br />
            //identify based on depth and index<br />
            if (item.Depth == 0)<br />
                switch (Convert.ToInt32(item.Value))<br />
                {<br />
                    case 0: return Color.Red;<br />
                    case 1: return Color.Blue;<br />
                    case 2: return Color.DarkGreen;<br />
                    default:<br />
                        return Color.Black;<br />
                }<br />
<br />
            return Color.Black;<br />
            //else<br />
                //switch (container.ItemIndex)<br />
                //{<br />
                //    //case 0: return Color.Purple;<br />
                //    //case 1: return Color.Aqua;<br />
                //    //case 2: return Color.DarkOrange;<br />
                //    //default:<br />
                //        return Color.Black;<br />
                //}<br />
<br />
<br />
        }<br />
    }<br />







<br />
<pre lang="xml"><asp:Menu ID="menuBar" runat="server" Orientation="Horizontal"  StaticPopOutImageUrl="~/Images/down.png"><br />
        <StaticItemTemplate><br />
        <asp:Panel runat="server" BackColor='<%# GetItemColor(Container) %>' ForeColor="White"><br />
            <%# Eval("Text") %> - <%# Eval("Value") %><br />
        </asp:Panel><br />
    </StaticItemTemplate><br />
    <DynamicItemTemplate><br />
        <asp:Panel ID="Panel1" runat="server" BackColor='<%# GetItemColor(Container) %>' ForeColor="White"><br />
            <%# Eval("Text") %> - <%# Eval("Value") %><br />
        </asp:Panel><br />
    </DynamicItemTemplate><br />
    </asp:Menu></pre><br />
<br />
<br />


这篇关于ASP.NET从代码隐藏中动态地为每个MenuItem添加单独的背景颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆