SiteMapPath.OnItemCreated Method
Assembly: System.Web (in system.web.dll)
The ItemCreated event is raised after the SiteMapPath control creates a SiteMapNodeItem, which is a Web server control that represents a SiteMapNode, and associates it to a SiteMapNode. The OnItemCreated method is called before the created node item is bound to its data. This allows you to provide an event-handling method that performs a custom routine whenever a SiteMapNodeItem is created.
Raising an event invokes the event handler through a delegate. For more information, see Raising an Event.
The OnItemCreated method also allows derived classes to handle the event without attaching a delegate. This is the preferred technique for handling the event in a derived class.
Notes to Inheritors: When overriding OnItemCreated in a derived class, be sure to call the base class's OnItemCreated method so that registered delegates receive the event.The following code example demonstrates how to call the OnItemCreated method after creating a SiteMapNodeItem within the InitializeItem method. This code example is part of a larger example provided for the SiteMapPath class.
private void AddDropDownListAfterCurrentNode(SiteMapNodeItem item)
{
SiteMapNodeCollection childNodes = item.get_SiteMapNode().
get_ChildNodes();
// Only do this work if there are child nodes.
if (childNodes != null) {
// Add another PathSeparator after the CurrentNode.
SiteMapNodeItem finalSeparator = new SiteMapNodeItem(item.
get_ItemIndex(), SiteMapNodeItemType.PathSeparator);
SiteMapNodeItemEventArgs eventArgs = new SiteMapNodeItemEventArgs(
finalSeparator);
InitializeItem(finalSeparator);
// Call OnItemCreated every time a SiteMapNodeItem is
// created and initialized.
OnItemCreated(eventArgs);
// The pathSeparator does not bind to any SiteMapNode, so
// do not call DataBind on the SiteMapNodeItem.
item.get_Controls().Add(finalSeparator);
// Create a DropDownList and populate it with the children of the
// CurrentNode. There are no styles or templates that are applied
// to the DropDownList control. If OnSelectedIndexChanged is raised,
// the event handler redirects to the page selected.
// The CurrentNode has child nodes.
DropDownList ddList = new DropDownList();
ddList.set_AutoPostBack(true);
ddList.add_SelectedIndexChanged(new EventHandler(this.
DropDownNavPathEventHandler));
// Add a ListItem to the DropDownList for every node in the
// SiteMapNodes collection.
for (int iCtr = 0; iCtr < childNodes.get_Count(); iCtr++) {
SiteMapNode node = (SiteMapNode)childNodes.get_Item(iCtr);
ddList.get_Items().Add(new ListItem(node.get_Title(), node.
get_Url()));
}
item.get_Controls().Add(ddList);
}
} //AddDropDownListAfterCurrentNode