WebPart.CatalogIconImageUrl Property
Assembly: System.Web (in system.web.dll)
/** @property */ public String get_CatalogIconImageUrl () /** @property */ public void set_CatalogIconImageUrl (String value)
public function get CatalogIconImageUrl () : String public function set CatalogIconImageUrl (value : String)
Property Value
A string that represents the URL to an image used to represent the control in a catalog. The default value is an empty string ("").The personalization scope of this property is set to Shared and can be modified only by authorized users. For more information, see PersonalizableAttribute and Web Parts Personalization Overview.
The following code example demonstrates how to set the CatalogIconImageUrl property for a WebPart control, so that an image appears with the control in a catalog of controls. This example assumes the use of a custom control, TextDisplayWebPart, created in the Example section of the WebPart class overview.
The code example also uses a custom user control that enables users to change display modes on a Web Parts page. The user control is referenced by means of a Register directive near the top of the Web page that hosts the user control. For a detailed description of how to create this user control and work with display modes, see Walkthrough: Developing and Using a Custom Server Control.
<%@ control language="C#" classname="DisplayModeMenuCS"%> <script runat="server"> // Use a field to reference the current WebPartManager. WebPartManager _manager; void Page_Init(object sender, EventArgs e) { Page.InitComplete += new EventHandler(InitComplete); } void InitComplete(object sender, System.EventArgs e) { _manager = WebPartManager.GetCurrentWebPartManager(Page); String browseModeName = WebPartManager.BrowseDisplayMode.Name; // Fill the dropdown with the names of supported display modes. foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes) { String modeName = mode.Name; // Make sure a mode is enabled before adding it. if (mode.IsEnabled(_manager)) { ListItem item = new ListItem(modeName, modeName); DisplayModeDropdown.Items.Add(item); } } // If shared scope is allowed for this user, display the scope-switching // UI and select the appropriate radio button for the current user scope. if (_manager.Personalization.CanEnterSharedScope) { Panel2.Visible = true; if (_manager.Personalization.Scope == PersonalizationScope.User) RadioButton1.Checked = true; else RadioButton2.Checked = true; } } // Change the page to the selected display mode. void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e) { String selectedMode = DisplayModeDropdown.SelectedValue; WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode]; if (mode != null) _manager.DisplayMode = mode; } // Set the selected item equal to the current display mode. void Page_PreRender(object sender, EventArgs e) { ListItemCollection items = DisplayModeDropdown.Items; int selectedIndex = items.IndexOf(items.FindByText(_manager.DisplayMode.Name)); DisplayModeDropdown.SelectedIndex = selectedIndex; } // Reset all of a user's personalization data for the page. protected void LinkButton1_Click(object sender, EventArgs e) { _manager.Personalization.ResetPersonalizationState(); } // If not in User personalization scope, toggle into it. protected void RadioButton1_CheckedChanged(object sender, EventArgs e) { if (_manager.Personalization.Scope == PersonalizationScope.Shared) _manager.Personalization.ToggleScope(); } // If not in Shared scope, and if user is allowed, toggle the scope. protected void RadioButton2_CheckedChanged(object sender, EventArgs e) { if (_manager.Personalization.CanEnterSharedScope && _manager.Personalization.Scope == PersonalizationScope.User) _manager.Personalization.ToggleScope(); } </script> <div> <asp:Panel ID="Panel1" runat="server" Borderwidth="1" Width="230" BackColor="lightgray" Font-Names="Verdana, Arial, Sans Serif" > <asp:Label ID="Label1" runat="server" Text=" Display Mode" Font-Bold="true" Font-Size="8" Width="120" /> <asp:DropDownList ID="DisplayModeDropdown" runat="server" AutoPostBack="true" Width="120" OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" /> <asp:LinkButton ID="LinkButton1" runat="server" Text="Reset User State" ToolTip="Reset the current user's personalization data for the page." Font-Size="8" OnClick="LinkButton1_Click" /> <asp:Panel ID="Panel2" runat="server" GroupingText="Personalization Scope" Font-Bold="true" Font-Size="8" Visible="false" > <asp:RadioButton ID="RadioButton1" runat="server" Text="User" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton1_CheckedChanged" /> <asp:RadioButton ID="RadioButton2" runat="server" Text="Shared" AutoPostBack="true" GroupName="Scope" OnCheckedChanged="RadioButton2_CheckedChanged" /> </asp:Panel> </asp:Panel> </div>
In the declarative markup of the Web page, note the <asp:CatalogZone> element. Nested within it are several elements, including an <aspSample:TextDisplayWebPart> element. This set of elements enables the custom WebPart control to appear in a catalog. In the markup for the <aspSample:TextDisplayWebPart> element, notice that the CatalogIconImageUrl attribute is assigned a string that contains the URL to an image file. Load the page in a browser and use the Display Mode drop-down list control to change the display mode to catalog mode. Then use the catalog user interface (UI) to add the custom WebPart control to the page.
<%@ page language="C#" %> <%@ register TagPrefix="uc1" TagName="DisplayModeMenuCS" Src="DisplayModeMenuCS.ascx" %> <%@ register tagprefix="aspSample" Namespace="Samples.AspNet.CS.Controls" Assembly="TextDisplayWebPartCS"%> <html> <head id="Head1" runat="server"> </head> <body> <form id="Form1" runat="server"> <asp:webpartmanager id="WebPartManager1" runat="server" /> <uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" /> <asp:webpartzone id="WebPartZone1" runat="server" title="Zone 1" PartChromeType="TitleAndBorder"> <parttitlestyle font-bold="true" ForeColor="#3300cc" /> <partstyle borderwidth="1px" borderstyle="Solid" bordercolor="#81AAF2" /> <zonetemplate> <asp:Calendar ID="cal1" Runat="server" /> </zonetemplate> </asp:webpartzone> <asp:CatalogZone ID="catalogzone1" Runat="server"> <ZoneTemplate> <asp:DeclarativeCatalogPart ID="catalogpart1" Runat="server"> <WebPartsTemplate> <aspSample:TextDisplayWebPart runat="server" id="textwebpart" title = "Text Content WebPart" AllowClose="true" CatalogIconImageUrl="MyFile.gif" /> </WebPartsTemplate> </asp:DeclarativeCatalogPart> </ZoneTemplate> </asp:CatalogZone> </form> </body> </html>
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.
Reference
WebPart ClassWebPart Members
System.Web.UI.WebControls.WebParts Namespace
Other Resources
ASP.NET Web Parts PagesWhen deploying WebParts to SharePoint and standard ASP.NET Web Part Pages, note that the use of this property is dropped for the former. The only place that the image provided in CatalogIconImageUrl is used is in a CatalogZone in an ASP.NET Web Part Page.
It seems as though Microsoft.SharePoint.WebPartPages.WebPart.CatalogIconImageUrl should be used to customise the image in SharePoint, but this obviously can only be implemented by custom WebParts that inherit from the SharePoint WebPart rather than the WebControls WebPart.
- 10/9/2007
- WolfyUK