/// <summary> /// Fires the <see cref="RowInserting"/> event. /// </summary> /// <param name="args"></param> protected virtual void OnRowInserting(GridViewInsertEventArgs args) { Delegate handler = this.Events[RowInsertingEvent]; if (null != handler) { handler.DynamicInvoke(this, args); } }
/// <summary> /// Prepares the <see cref="RowInserting"/> event and calls insert on the DataSource. /// </summary> /// <param name="rowIndex"></param> /// <param name="causesValidation"></param> private void InsertRow(int rowIndex, bool causesValidation) { GridViewRow row = null; if ((!causesValidation || (this.Page == null)) || this.Page.IsValid) { DataSourceView dsv = null; bool useDataSource = base.IsBoundUsingDataSourceID; if (useDataSource) { dsv = this.GetData(); if (dsv == null) { throw new HttpException("DataSource Returned Null View"); } } GridViewInsertEventArgs args = new GridViewInsertEventArgs(rowIndex); if (useDataSource) { if ((row == null) && (this.InnerTable.Rows.Count > rowIndex)) { row = this.InnerTable.Rows[rowIndex] as GridViewRow; } if (row != null) { this.ExtractRowValues(args.NewValues, row, true, true); } } this.OnRowInserting(args); if (!args.Cancel && useDataSource) { dsv.Insert(args.NewValues, new DataSourceViewOperationCallback(DataSourceViewInsertCallback)); } } }