I assign static images to RadMenuItems via the ImageUrl property, and now would like to use image sprites instead.
Because I could not find a way to do this, I next tried to configure each RadMenuItem by setting the Text value " " and a CssClass with an appropriate background image in the code behind Page_Load. But I would like to change the class on the client side, and cannot figure out how to do that. Besides, this seems like a pretty messy kludge.
What is the recommended way forward?
Resources
Current functioning RadMenu can be found in the upper right corner of this site: https://an.rsl.wustl.edu/msl/mslbrowser -- It's the Account / Cart / Help menu.
Here is what I was trying with the CssClass approach. The RadMenu declaration on the client side:
<div> <telerik:RadAjaxManager runat="server" ID="ram"></telerik:RadAjaxManager> <telerik:RadScriptManager runat="server" ID="rsm"></telerik:RadScriptManager> <asp:PlaceHolder runat="server" ID="phTop"></asp:PlaceHolder> <br /> <asp:Button runat="server" ID="bTest" Text="Test" OnClick="bTest_Click" /> <br /> <telerik:RadButton runat="server" ID="rbTest2" OnClientClicked="setCartIconFull" AutoPostBack="False"></telerik:RadButton> <asp:PlaceHolder runat="server" ID="phBottom"></asp:PlaceHolder> <telerik:RadSkinManager ID="RadSkinManager1" runat="server" ShowChooser="true" /> <telerik:RadTabStrip runat="server" ID="rts"> <Tabs> <telerik:RadTab runat="server" Text="Mission" Value="rtMiss"></telerik:RadTab> <telerik:RadTab runat="server" Text="<span class='i-s-nav-n-s16Sol vaMid'></span> Sol" Selected="True"></telerik:RadTab> <telerik:RadTab runat="server" Text="<span class='i-s-nav-n-s16maps vaMid'></span> Maps"></telerik:RadTab> </Tabs> </telerik:RadTabStrip> <asp:Label runat="server" ID="l1" CssClass="is-nav-16-CC"></asp:Label> <asp:Label runat="server" ID="l2" CssClass="is-nav-16-CCw"></asp:Label> <asp:Label runat="server" ID="l3"></asp:Label> <span class="is-nav-16-CC" style="height: 16px; width: 16px;"></span></div><img src="i/n/s16null.png" /><asp:ImageButton runat="server" ID="ibTest" CssClass="is-nav-32-cartMenuEmpty" Width="70" Height="32" /><div> <telerik:RadMenu runat="server" ID="rmTest" ClickToOpen="True" Height="40" Width="505" EnableShadows="True" Style="z-index: 2900"> <Items> <telerik:RadMenuItem runat="server" Value="rmiBarAccount"> <GroupSettings OffsetX="0" OffsetY="4"></GroupSettings> <Items> </Items> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Value="rmiBarHelp" Text=" "> <GroupSettings OffsetX="0" OffsetY="4"></GroupSettings> <Items> </Items> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Value="rmiBarCart" Text=" "> <GroupSettings OffsetX="0" OffsetY="4"></GroupSettings> <Items> </Items> </telerik:RadMenuItem> <telerik:RadMenuItem runat="server" Value="rmiBarNon" Text=" "> <GroupSettings OffsetX="0" OffsetY="4"></GroupSettings> <Items> </Items> </telerik:RadMenuItem> </Items> </telerik:RadMenu></div>
The code behind configuration:​
RadMenuItem rmiAcct = rmTest.FindItemByValue("rmiBarAccount");rmiAcct.Text = " ";rmiAcct.CssClass = "is-nav-32-accountMenuSignedOut-rmi";RadMenuItem rmiCart = rmTest.FindItemByValue("rmiBarCart");rmiCart.Text = " ";rmiCart.CssClass = "is-nav-32-cartMenuEmpty-rmi";RadMenuItem rmiHelp = rmTest.FindItemByValue("rmiBarHelp");rmiHelp.Text = " ";rmiHelp.CssClass = "is-nav-32-ucMenuHelp-rmi";
My CSS classes (using sprites):
.is-nav-32-accountMenuSignedIn-rmi .rmText { width: 128px; height: 32px; background: url('../i/s/_nav32Sprite.png') -1px -1px; width: 112px /* correct for goofy RadMenu*/ height: 31px; /* correct for goofy RadMenu*/ }.is-nav-32-accountMenuSignedOut-rmi .rmText { width: 128px; height: 32px; background: url('../i/s/_nav32Sprite.png') -130px -1px; width: 112px; /* correct for goofy RadMenu*/ height: 31px; /* correct for goofy RadMenu*/}.is-nav-32-cartMenuEmpty-rmi .rmText { width: 70px; height: 32px; background: url('../i/s/_nav32Sprite.png') -325px -1px; width: 54px; /* correct for goofy RadMenu*/ height: 31px; /* correct for goofy RadMenu*/}.is-nav-32-cartMenuFull-rmi .rmText { width: 70px; height: 32px; background: url('../i/s/_nav32Sprite.png') -396px -1px; width: 54px; /* correct for goofy RadMenu*/ height: 31px; /* correct for goofy RadMenu*/}.is-nav-32-ucMenuHelp-rmi .rmText { width: 55px; height: 32px; background: url('../i/s/_nav32Sprite.png') -1554px -1px; width: 39px; /* correct for goofy RadMenu*/ height: 31px; /* correct for goofy RadMenu*/}div.RadMenu .rmLink { padding: 0;}
The sprite image is attached.