public WebPart AddWebPart(WebPart webPart, WebPartZoneBase zone, int zoneIndex) { this.Personalization.EnsureEnabled(true); if (webPart == null) { throw new ArgumentNullException("webPart"); } if (zone == null) { throw new ArgumentNullException("zone"); } if (!this._webPartZones.Contains(zone)) { throw new ArgumentException(System.Web.SR.GetString("WebPartManager_MustRegister"), "zone"); } if (zoneIndex < 0) { throw new ArgumentOutOfRangeException("zoneIndex"); } if ((webPart.Zone != null) && !webPart.IsClosed) { throw new ArgumentException(System.Web.SR.GetString("WebPartManager_AlreadyInZone"), "webPart"); } WebPartAddingEventArgs e = new WebPartAddingEventArgs(webPart, zone, zoneIndex); this.OnWebPartAdding(e); if (this._allowEventCancellation && e.Cancel) { return null; } if (this.Controls.Contains(webPart)) { WebPart part = webPart; this.AddWebPartToZone(webPart, zone, zoneIndex); this.OnWebPartAdded(new WebPartEventArgs(part)); return part; } return this.AddDynamicWebPartToZone(webPart, zone, zoneIndex); }
protected virtual void OnWebPartAdding(WebPartAddingEventArgs e) { WebPartAddingEventHandler handler = (WebPartAddingEventHandler) base.Events[WebPartAddingEvent]; if (handler != null) { handler(this, e); } }
protected virtual new void OnWebPartAdding(WebPartAddingEventArgs e) { }
// Returns the WebPart that was actually added. For an existing Closed WebPart, this is a reference // to the webPart parameter. For a new DynamicWebPart, this will be a copy of the webPart parameter. public WebPart AddWebPart(WebPart webPart, WebPartZoneBase zone, int zoneIndex) { Personalization.EnsureEnabled(/* ensureModifiable */ true); if (webPart == null) { throw new ArgumentNullException("webPart"); } // Do not check that Controls.Contains(webPart), since this will be called on a WebPart // before it is added to the Controls collection. if (zone == null) { throw new ArgumentNullException("zone"); } if (_webPartZones.Contains(zone) == false) { throw new ArgumentException(SR.GetString(SR.WebPartManager_MustRegister), "zone"); } if (zoneIndex < 0) { throw new ArgumentOutOfRangeException("zoneIndex"); } if (webPart.Zone != null && !webPart.IsClosed) { throw new ArgumentException(SR.GetString(SR.WebPartManager_AlreadyInZone), "webPart"); } WebPartAddingEventArgs e = new WebPartAddingEventArgs(webPart, zone, zoneIndex); OnWebPartAdding(e); if (_allowEventCancellation && e.Cancel) { return null; } WebPart addedWebPart; // If a part is already in the controls collection, dynamic or static, just make it // not closed and add it to the specified zone if (Controls.Contains(webPart)) { addedWebPart = webPart; AddWebPartToZone(webPart, zone, zoneIndex); OnWebPartAdded(new WebPartEventArgs(addedWebPart)); } else { addedWebPart = AddDynamicWebPartToZone(webPart, zone, zoneIndex); // OnWebPartAdded() is called by AddDynamicWebPartToZone } #if DEBUG CheckPartZoneIndexes(zone); #endif return addedWebPart; }
private void WebPartManager_WebPartAdding(object sender, WebPartAddingEventArgs e) { WebPartZoneBase zone = e.Zone; if (e.ZoneIndex < zone.WebParts.Count) { WebPart part = zone.WebParts[e.ZoneIndex]; if (part != null && part is ISymbolWebPart && !part.IsStatic) { base.WebPartManager.DeleteWebPart(part); } } }