====== 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}}