internal void OnDeleted(object sender, DalcDataSourceChangeEventArgs e) { if (Deleted != null) { Deleted(sender, e); } }
internal void OnInserted(object sender, DalcDataSourceChangeEventArgs e) { if (Inserted != null) { Inserted(sender, e); } }
internal void OnUpdated(object sender, DalcDataSourceChangeEventArgs e) { if (Updated != null) { Updated(sender, e); } }
protected override int ExecuteDelete(IDictionary keys, IDictionary oldValues) { DalcDataSourceChangeEventArgs eArgs = new DalcDataSourceChangeEventArgs(Name, keys, oldValues, oldValues); DataSource.OnDeleting(DataSource, eArgs); if (eArgs.Cancel) { return(0); } QueryNode uidCondition = ComposeUidCondition(keys); if (DataSource.DataSetMode) { DataSet ds = GetDataSet(); var tbl = DataSource.Dalc.Load(new Query(eArgs.TableName, uidCondition), ds); EnsureDataSchema(tbl); eArgs.AffectedCount = tbl.Rows.Count; for (int i = 0; i < tbl.Rows.Count; i++) { tbl.Rows[i].Delete(); } DataSource.Dalc.Update(tbl); } else { eArgs.AffectedCount = DataSource.Dalc.Delete(new Query(eArgs.TableName, uidCondition)); } // raise event DataSource.OnDeleted(DataSource, eArgs); return(eArgs.AffectedCount); }
protected override int ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) { DalcDataSourceChangeEventArgs eArgs = new DalcDataSourceChangeEventArgs(Name, keys, oldValues, values); DataSource.OnUpdating(DataSource, eArgs); if (eArgs.Cancel) { return(0); } QueryNode uidCondition = ComposeUidCondition(keys); if (DataSource.DataSetMode) { DataSet ds = GetDataSet(); var tbl = DataSource.Dalc.Load(new Query(eArgs.TableName, uidCondition), ds); EnsureDataSchema(tbl); eArgs.AffectedCount = tbl.Rows.Count; foreach (DataRow r in tbl.Rows) { foreach (DataColumn col in tbl.Columns) { if (values.Contains(col.ColumnName)) { r[col] = PrepareDataRowValue(values[col.ColumnName]); } } } DataSource.Dalc.Update(tbl); // push back into context all fields (if only 1 record is updated) if (tbl.Rows.Count == 1) { foreach (DataColumn c in tbl.Columns) { values[c.ColumnName] = tbl.Rows[0][c]; } } } else { eArgs.AffectedCount = DataSource.Dalc.Update(new Query(eArgs.TableName, uidCondition), values); } // raise event DataSource.OnUpdated(DataSource, eArgs); return(eArgs.AffectedCount); }
protected override int ExecuteInsert(IDictionary values) { DalcDataSourceChangeEventArgs eArgs = new DalcDataSourceChangeEventArgs(Name, null, null, values); DataSource.OnInserting(DataSource, eArgs); if (eArgs.Cancel) { return(0); } if (DataSource.DataSetMode) { DataSet ds = GetDataSet(); // if schema is unknown, lets try to load from datasource if (!ds.Tables.Contains(eArgs.TableName)) { DataSource.Dalc.Load(new Query(eArgs.TableName, new QueryConditionNode((QConst)1, Conditions.Equal, (QConst)2)), ds); } DataTable tbl = ds.Tables[eArgs.TableName]; EnsureDataSchema(tbl); DataRow r = tbl.NewRow(); foreach (DataColumn col in tbl.Columns) { if (values.Contains(col.ColumnName)) { r[col] = PrepareDataRowValue(values[col.ColumnName]); } } tbl.Rows.Add(r); DataSource.Dalc.Update(tbl); // push back into context all fields foreach (DataColumn c in tbl.Columns) { values[c.ColumnName] = r[c]; } } else { DataSource.Dalc.Insert(eArgs.TableName, values); } DataSource.OnInserted(DataSource, eArgs); return(1); }