DataSet Operations
Adding a new row to the dataSet
public virtual dsRm.rueckm_afoRow RueckmAfo(dsBab.bab_afoRow afoRow)
{
// prevent the case when datacache is null
if (this.DataCache == null)
{
LoggerSink.PushMessage(this, "busRM.RueckmAfo fehlgeschlagen: TimeLine Data Cache wird geladen! Bitte versuchen Sie es später erneut.");
return null;
}
var row = tSet.rueckm_afo.NewRow();
row.lfd_nr = ParaUtils.GetNextRueckmAfoLfdNr();
row.rm_typ = 10;
row.datum = DateTime.Now;
row.erstellt_am = DateTime.Now;
//.....
return row;
}
The primary keys for a new row are set only at saving
RowStates:
For the operations order New->Add->Initialisation the RowState of the new row will be EditingNew
For the operations order New->Initialisation->Add the RowState of the new row will be New
For all RowStates see corresponding chapter.
Deleting a row from the dataSet
public virtual DeleteAfo(dsBab.bab_afoRow afoRow)
{
afoRow.Row.Delete();
}
Duplicate an existing row
public virtual DataRow AddNewRueckmFertigart(DataRow fertigRow)
{
if (fertigRow == null)
{
return null;
}
this.tSet.rueckm_fertigart.Table.ImportRow(fertigRow);
return fertigNew;
}
Copy a table
Copy() creates a new DataTable with the same structure and data as the original DataTable.
var docPosDetailRows = BusObjDoc.tSet.belpos_detail.Copy();
Ignore change on a column
This is useful when we don’t want to receive a save message when a specific column, that comes from a db compute (not updateable), has changed.
Structure:
dSet.IgnoreStateChange(tableName, fieldName);
Example:
private void SetBestandValues()
{
dSet.IgnoreStateChange("Versandvorschlag", "cf_bestand");
foreach (var item in tSet.Versandvorschlag)
{
item.cf_bestand = BestandUtils.Instance.GetBestand(item.artnr, item.belpos_lager_nr.ToInt(-1), item.bel_typ, item.bel_nr, item.posnr);
}
}
Retrieve on one table
tSet.Documents.Retrieve(docTyp, docNr);
Save
public override int Save()
{
//...
foreach (var dataSet in AllChildDataSets)
{
dataSet.SetEditCheckpoint();
}
int ret = BookRM(commit: false);
try
{
foreach (var dataSet in AllChildDataSets)
{
dataSet.CommitEditCheckpoint();
}
}
catch (Exception ex)
{
foreach (var dataSet in AllChildDataSets)
{
dataSet.RevertEditCheckpoint();
}
LoggerSink.PushMessage(this, l.Translate(ex.Message), Severity.Exception);
}
return ret;
}
dataSet.SetEditCheckpoint() is used for prevent the possibility that an exception to be thrown. In that case, if SetEditCheckpoint() is not used, the DataBase will return to its previous state, but the DataSet will not.
Last updated