public override void ExtractWebPartPersonalization(WebPart webPart) { base.ValidateWebPart(webPart); ProxyWebPart part = webPart as ProxyWebPart; if (part != null) { this.RoundTripWebPartPersonalization(part.OriginalID, part.GenericWebPartID); } else { System.Web.UI.WebControls.WebParts.PersonalizationScope personalizationScope = this.PersonalizationScope; if ((personalizationScope == System.Web.UI.WebControls.WebParts.PersonalizationScope.User) && !webPart.IsShared) { personalizationScope = System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared; } bool isStatic = webPart.IsStatic; string personalizationID = this.CreatePersonalizationID(webPart, null); this.ExtractPersonalization(webPart, personalizationID, false, personalizationScope, isStatic, null); GenericWebPart associatedGenericWebPart = webPart as GenericWebPart; if (associatedGenericWebPart != null) { Control childControl = associatedGenericWebPart.ChildControl; personalizationID = this.CreatePersonalizationID(childControl, associatedGenericWebPart); this.ExtractPersonalization(childControl, personalizationID, false, personalizationScope, isStatic, associatedGenericWebPart); } } }
public WebPart this[string id] { get { foreach (WebPart part in base.InnerList) { if (string.Equals(part.ID, id, StringComparison.OrdinalIgnoreCase)) { return(part); } GenericWebPart part2 = part as GenericWebPart; if (part2 != null) { Control childControl = part2.ChildControl; if ((childControl != null) && string.Equals(childControl.ID, id, StringComparison.OrdinalIgnoreCase)) { return(part2); } } ProxyWebPart part3 = part as ProxyWebPart; if ((part3 != null) && (string.Equals(part3.OriginalID, id, StringComparison.OrdinalIgnoreCase) || string.Equals(part3.GenericWebPartID, id, StringComparison.OrdinalIgnoreCase))) { return(part3); } } return(null); } }
/// <devdoc> /// Returns the WebPart with the specified id, or the GenericWebPart containing a control with /// the specified id, or the ProxyWebPart with OriginalID or GenericWebPartID equal to the /// specified id, performing a case-insensitive comparison. Returns null if there are no matches. /// </devdoc> public WebPart this[string id] { // PERF: Use a hashtable for lookup, instead of a linear search get { foreach (WebPart webPart in InnerList) { if (String.Equals(webPart.ID, id, StringComparison.OrdinalIgnoreCase)) { return(webPart); } GenericWebPart genericWebPart = webPart as GenericWebPart; if (genericWebPart != null) { Control control = genericWebPart.ChildControl; if (control != null) { if (String.Equals(control.ID, id, StringComparison.OrdinalIgnoreCase)) { return(genericWebPart); } } } ProxyWebPart proxyWebPart = webPart as ProxyWebPart; if (proxyWebPart != null) { if ((String.Equals(proxyWebPart.OriginalID, id, StringComparison.OrdinalIgnoreCase)) || (String.Equals(proxyWebPart.GenericWebPartID, id, StringComparison.OrdinalIgnoreCase))) { return(proxyWebPart); } } } return(null); } }