====== callafterchange ======
**callafterchange** ist ein Attribut eines [[Datenblatt]] Feldes. Ändert sich der Feldinhalt dann wird eine im Attribut hinterlegte [[Addins|Addinmethode]] aufgerufen.
===== Beispiel =====
===== Beispiel für das Addin =====
public void progrDeckungsbeitragFeldUpdate(object oControl, DataGridViewRow oRow, string oParams)
{
if (oControl is TextBox)
{
TextBox oTB = (TextBox)oControl;
if (oTB.Tag is PrimGUIDataField)
{
PrimGUIDataField oPrimGUIDataField = (PrimGUIDataField)oTB.Tag;
string sFilePath = (string)oRow.Tag;
if (!File.Exists(sFilePath)) return;
IDictionary oDataDict = PrimData.ReadDataXML(sFilePath + ".xml");
if (oDataDict != null)
{
string sEPValue, sValue;
if (oDataDict.TryGetValue("StkEPAuftr", out sEPValue) && sEPValue.Length > 0 && oDataDict.TryGetValue(oPrimGUIDataField.sField, out sValue) && sValue.Length > 0)
{
decimal dEPValue, dValue;
try
{
dEPValue = Convert.ToDecimal(sEPValue);
dValue = Convert.ToDecimal(sValue);
}
catch { return; }
bool bWriteData = true;
if (oPrimGUIDataField.sField == "StkVP")
{
decimal dDeckungsbEUR = dValue - dEPValue;
oDataDict["DeckungsbEUR"] = dDeckungsbEUR.ToString("F2");
oDataDict["DeckungsbProz"] = (dDeckungsbEUR / (dEPValue / 100)).ToString("F1");
}
else bWriteData = false;
if (bWriteData)
{
string sRetMsg;
PrimData.WriteDataXML(oPrimData.oActivePrimProject, oPrimData.oActivePrimFolder.sCFGPath, sFilePath + ".xml", oDataDict, "XML_Position", true, out sRetMsg);
oPrimData.UpdateListViewRow(oRow.DataGridView, oRow, true);
}
}
}
}
}
}
===== Siehe auch =====
*[[GUI_Document_DataSheet]]
{{tag>GUI DataSheet Addin}}