public GetNewFromTemplate ( int dataViewId ) : DataView | ||
dataViewId | int | The identifier of a Data View to use as a template for the new Data View. |
return | DataView |
public DataView GetNewFromTemplate( int dataViewId )
{
var item = this.Queryable()
.AsNoTracking()
.Include( x => x.DataViewFilter )
.FirstOrDefault( x => x.Id == dataViewId );
if ( item == null )
{
throw new Exception( string.Format( "GetNewFromTemplate method failed. Template Data View ID \"{0}\" could not be found.", dataViewId ) );
}
// Deep-clone the Data View and reset the properties that connect it to the permanent store.
var newItem = (DataView)( item.Clone( true ) );
newItem.Id = 0;
newItem.Guid = Guid.NewGuid();
newItem.ForeignId = null;
newItem.ForeignGuid = null;
newItem.ForeignKey = null;
newItem.DataViewFilterId = 0;
this.ResetPermanentStoreIdentifiers( newItem.DataViewFilter );
return newItem;
}
/// <summary> /// Handles the Click event of the Copy button control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> protected void btnCopy_Click( object sender, EventArgs e ) { // Create a new Data View using the current item as a template. var id = int.Parse( hfDataViewId.Value ); var dataViewService = new DataViewService( new RockContext() ); var newItem = dataViewService.GetNewFromTemplate( id ); if (newItem == null) return; newItem.Name += " (Copy)"; // Reset the stored identifier for the active Data View. hfDataViewId.Value = "0"; ShowEditDetails( newItem ); }