public static TableAdapter WriteDataTable(DataTable dataTable, TableName tname, Locator locator, string[] columnNames, RowChangedHandler rowChangedHandler, ValueChangedHandler columnHandler) { if (dataTable == null) { return(null); } if (locator == null) { locator = new Locator(tname); } TableAdapter adapter = new TableAdapter(dataTable, tname, locator); if (rowChangedHandler != null) { adapter.DataRowChangedHandler += rowChangedHandler; } if (columnHandler != null) { adapter.ValueChangedHandler = columnHandler; } adapter.AddFields(columnNames); adapter.Save(); return(adapter); }
public static TableAdapter WriteDataTable(DataTable dataTable, TableName tname, Locator locator, string[] columnNames, RowChangedHandler rowChangedHandler, ValueChangedHandler columnHandler) { if (dataTable == null) return null; if (locator == null) locator = new Locator(tname); TableAdapter adapter = new TableAdapter(dataTable, tname, locator); if(rowChangedHandler != null) adapter.DataRowChangedHandler += rowChangedHandler; if (columnHandler != null) adapter.ValueChangedHandler = columnHandler; adapter.AddFields(columnNames); adapter.Save(); return adapter; }
public virtual bool Save(Selector columnNames, RowChangedHandler rowHandler, ValueChangedHandler columnHandler) { if (dataTable == null || dataTable.Rows.Count == 0) { return(false); } //update this.dataTable // this.AcceptChanges(); objectPermission = ObjectPermission.DenyUpdateObject; RowAdapter d = this.NewSqlRow(columnNames); d.RowChanged += RowChanged; if (rowHandler != null) { d.RowChanged += rowHandler; } if (columnHandler != null) { d.ValueChangedHandler = columnHandler; } else { d.ValueChangedHandler = ValueChanged; } int count = 0; foreach (DataRow dataRow in dataTable.Rows) { BeforeSave(dataRow); if (dataRow.RowState != DataRowState.Deleted) { if (dataRow.RowState != DataRowState.Unchanged) { d.CopyFrom(dataRow); d.Fill(); d.Save(); if (dataRow.RowState == DataRowState.Added) //in case of existing identity columns { d.CopyTo(dataRow); UpdateObject(dataRow); } //slow version //T t = this[dataRow]; //t.Save(d); count++; } } else { dataRow.RejectChanges(); d.CopyFrom(dataRow); d.Fill(); d.Delete(); //slow version //T t = this[dataRow]; //t.Delete(); dataRow.Delete(); } AfterSave(dataRow); } dataTable.AcceptChanges(); objectPermission = ObjectPermission.AllowUpdateObject; return(true); }