﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>StrataFrame Forum » StrataFrame Application Framework - V1 » Business Objects and Data Access (How do I?)  » How to set BO undirty ?</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Tue, 05 May 2026 19:56:07 GMT</lastBuildDate><ttl>20</ttl><item><title>How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22416.aspx</link><description>Hi,&lt;/P&gt;&lt;P&gt;i have an issue with my maintanance forms allways starting with the maintanance toolstrip showing the save and undo buttons enabled and the navigate buttons disabled.&lt;/P&gt;&lt;P&gt;i guess this is because automations on the form cause the bo to become dirty. ?&lt;/P&gt;&lt;P&gt;so within the bo, i tried this, to set it "undirty":&lt;/P&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;[codesnippet]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected override void OnIsDirtyChanged(bool DirtyShouldBe)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (this.isDirty &amp;amp;&amp;amp; this.EditingState ==&amp;nbsp; BusinessEditingState.Idle)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.Save();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.OnIsDirtyChanged(DirtyShouldBe);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;[/codesnippet]&lt;/P&gt;&lt;P&gt;however, this throws a stackoverflow exception. &lt;/P&gt;&lt;P&gt;So, what is the appropriate way to handle this ?&lt;/P&gt;&lt;P&gt;thanks.&lt;FONT size=2&gt;&lt;/P&gt;&lt;/FONT&gt;</description><pubDate>Fri, 20 Mar 2009 07:09:41 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22454.aspx</link><description>hi,&lt;/P&gt;&lt;P&gt;the issue is solved by setting the ClearOnNULL-Property of the DateTime-Picker&amp;nbsp;to false.</description><pubDate>Fri, 20 Mar 2009 07:09:41 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22453.aspx</link><description>any ideas ?..&lt;br&gt;</description><pubDate>Thu, 19 Mar 2009 14:15:59 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22448.aspx</link><description>the problem has something todo with binding to the datetime-picker control.&lt;/P&gt;&lt;P&gt;on the form there are two of thoose. if i unbind them by selecting Business-Object = none in the property editor, the form behaves correctly (bo doesnt get dirty). however off course then they are not bound :)&lt;/P&gt;&lt;P&gt;i am setting default values to thoose from the bo's SetDefaultValues procedure. however this aint the cause of the problem, because if i comment theese lines out, the bo still gets dirty. &lt;/P&gt;&lt;P&gt;the datetime picker controls are set up with following property values:&lt;/P&gt;&lt;P&gt;BindableValue = 01.01.1800&lt;BR&gt;BindingField = MyDateTimeField&lt;BR&gt;BindingProperty = Value&lt;BR&gt;BindingUpdateMode = OnPropertyChanged&lt;BR&gt;BusinessObject = MyBO&lt;BR&gt;ClearOnNULL = True&lt;BR&gt;CustomFormat = dd.MM.yyyy HH:mm:ss&lt;BR&gt;Format = Custom&lt;BR&gt;MaxDate = 31.12.9998&lt;BR&gt;MinDate = 01.01.1753&lt;BR&gt;NullDateValue = 01.01.1800&lt;BR&gt;ShowUpDown = True&lt;BR&gt;StripTimeFromValue = False&lt;BR&gt;Value = 01.01.1800</description><pubDate>Thu, 19 Mar 2009 03:44:25 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22438.aspx</link><description>ive put code in the isdirty event to show a messagabox with all original and current fieldvalues of the modified-state row.&lt;/P&gt;&lt;P&gt;for every field, the original and current values are the same.</description><pubDate>Wed, 18 Mar 2009 09:37:04 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22437.aspx</link><description>hi,&lt;/P&gt;&lt;P&gt;the line below is:&lt;/P&gt;&lt;P&gt;[codesnippet]MyNamespace.Business_Objekte.Basis.MyBO.MyDateTimefield.set(System.DateTime value = {18.03.2009 11:39:59}) Zeile 410 + 0x40 [/codesnippet]&lt;/P&gt;&lt;P&gt;the value is the value of that field in the first datarow from the database.&lt;/P&gt;&lt;P&gt;further below:&lt;/P&gt;&lt;P&gt;[codesnippet]&lt;/P&gt;&lt;P&gt;MyProject.Business_Objekte.Basis.MyBO.FieldDescriptor.SetValue(object component = { [MyProject.Business_Objekte.Basis.MyBO]}, object value = {18.03.2009 11:39:59}) Zeile 682 + 0x50 Bytes&amp;nbsp;C#&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.BindToObject.SetValue(object value) + 0x58 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Binding.PullData(bool reformat, bool force) + 0x14f Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Binding.Target_PropertyChanged(object sender, System.EventArgs e) + 0x28 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.DateTimePicker.OnValueChanged(System.EventArgs eventargs) + 0x17 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;MicroFour StrataFrame UI.dll!MicroFour.StrataFrame.UI.Windows.Forms.DateTimePicker.OnValueChanged(System.EventArgs eventargs) + 0x36 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.DateTimePicker.Value.set(System.DateTime value) + 0x14d Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;[Übergang von Systemeigen zu Verwaltet]&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;[Übergang von Verwaltet zu Systemeigen]&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.dll!System.ComponentModel.ReflectPropertyDescriptor.SetValue(object component = {MicroFour.StrataFrame.UI.Windows.Forms.DateTimePicker, Value: 18.03.2009 11:39:59}, object value = {18.03.2009 11:39:59}) + 0xe3 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Binding.SetPropValue(object value) + 0xc9 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Binding.PushData(bool force) + 0x71 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Binding.UpdateIsBinding() + 0x60 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Binding.CheckBinding() + 0x235 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Binding.SetListManager(System.Windows.Forms.BindingManagerBase bindingManagerBase) + 0xe7 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ListManagerBindingsCollection.AddCore(System.Windows.Forms.Binding dataBinding = {System.Windows.Forms.Binding}) + 0x2f Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.BindingsCollection.Add(System.Windows.Forms.Binding binding) + 0x32 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.BindingContext.UpdateBinding(System.Windows.Forms.BindingContext newBindingContext, System.Windows.Forms.Binding binding) + 0x8d Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.UpdateBindings() + 0x49 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xef Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd2 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd2 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd2 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd2 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.set(System.Windows.Forms.BindingContext value) + 0x8a Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ContainerControl.BindingContext.set(System.Windows.Forms.BindingContext value) + 0x5 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ContainerControl.BindingContext.get() + 0x4e Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.SplitContainer.BindingContext.get() + 0x5 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContext.get() + 0x5 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ContainerControl.BindingContext.get() + 0xc Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContextInternal.get() + 0x75 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.BindingContext.get() + 0x5 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.UpdateBindings() + 0x28 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xef Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnParentBindingContextChanged(System.EventArgs e) + 0x39 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.Control.OnBindingContextChanged(System.EventArgs e = {System.EventArgs}) + 0xd2 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.ContainerControl.OnCreateControl() + 0x48 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Windows.Forms.dll!System.Windows.Forms.UserControl.OnCreateControl() + 0xa Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;MicroFour StrataFrame UI.dll!MicroFour.StrataFrame.UI.Windows.Forms.ThemedContainer.OnCreateControl() + 0xa Bytes&amp;nbsp;&lt;BR&gt;[/codesnippet]</description><pubDate>Wed, 18 Mar 2009 09:16:15 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22435.aspx</link><description>The stack trace begins (at the bottom) with an edit, so you are going to have to look at the data table to determine the field that is changed.&amp;nbsp; You may have to look at the row as well:&lt;/P&gt;&lt;P&gt;[codesnippet]MyBO.CurrentDataTable.Rows(0).RowState[/codesnippet]&lt;/P&gt;&lt;P&gt;[codesnippet]MyBO.CurrentDataTable.Rows(0)("MyField", Original)&lt;BR&gt;MyBO.CurrentDataTable.Rows(0)("MyField", Current)[/codesnippet]</description><pubDate>Wed, 18 Mar 2009 09:09:22 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22433.aspx</link><description>this is what it shows right before the breakpoint:&lt;/P&gt;&lt;P&gt;[codesnippet]&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.raise_IsDirtyChanged(object sender, System.EventArgs e) + 0xa4 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.OnIsDirtyChanged(bool DirtyShouldBe) + 0x27 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;MicroFour StrataFrame Business.dll!MicroFour.StrataFrame.Business.BusinessLayer.CurrentView_ListChanged(object sender, System.ComponentModel.ListChangedEventArgs e) + 0x13f Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataView.OnListChanged(System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x10e Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataView.IndexListChanged(object sender, System.ComponentModel.ListChangedEventArgs e = {System.ComponentModel.ListChangedEventArgs}) + 0x1a Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataView.IndexListChangedInternal(System.ComponentModel.ListChangedEventArgs e) + 0x4b Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataViewListener.IndexListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x3c Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.Index.OnListChanged.AnonymousMethod(System.Data.DataViewListener listener, System.ComponentModel.ListChangedEventArgs args, bool arg2, bool arg3) + 0x7 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.Listeners&amp;lt;System.Data.DataViewListener&amp;gt;.Notify&amp;lt;System.ComponentModel.ListChangedEventArgs,bool,bool&amp;gt;(System.ComponentModel.ListChangedEventArgs arg1 = {System.ComponentModel.ListChangedEventArgs}, bool arg2 = false, bool arg3 = false, System.Data.Listeners&amp;lt;System.Data.DataViewListener&amp;gt;.Action&amp;lt;System.Data.DataViewListener,System.ComponentModel.ListChangedEventArgs,bool,bool&amp;gt; action = {Method = {Void &amp;lt;OnListChanged&amp;gt;b__2(System.Data.DataViewListener, System.ComponentModel.ListChangedEventArgs, Boolean, Boolean)}}) + 0x75 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.Index.OnListChanged(System.ComponentModel.ListChangedEventArgs e) + 0x9b Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.Index.RecordStateChanged(int oldRecord, System.Data.DataViewRowState oldOldState, System.Data.DataViewRowState oldNewState, int newRecord, System.Data.DataViewRowState newOldState, System.Data.DataViewRowState newNewState) + 0xfa Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataTable.RecordStateChanged(int record1 = 0, System.Data.DataViewRowState oldState1 = Unchanged, System.Data.DataViewRowState newState1 = ModifiedOriginal, int record2 = 2, System.Data.DataViewRowState oldState2 = None, System.Data.DataViewRowState newState2 = ModifiedCurrent) + 0x7f Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataTable.SetNewRecordWorker(System.Data.DataRow row = {System.Data.DataRow}, int proposedRecord, System.Data.DataRowAction action = Change, bool isInMerge, int position, bool fireEvent = true, out System.Exception deferredException = null) + 0x29d Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataTable.SetNewRecord(System.Data.DataRow row, int proposedRecord, System.Data.DataRowAction action, bool isInMerge, bool fireEvent) + 0x3d Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataRow.EndEdit() + 0x48 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataRow.this[System.Data.DataColumn].set(System.Data.DataColumn column, object value) + 0xe4 Bytes&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;System.Data.dll!System.Data.DataRow.this[string].set(string columnName, object value) + 0x19 Bytes&amp;nbsp;&lt;BR&gt;[/codesnippet]</description><pubDate>Wed, 18 Mar 2009 08:57:40 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22429.aspx</link><description>just put a breakpoint and looked at the stacktrace. whats immediatly happening before the isdirty changed event triggers is that a bo datetime field gets its value for the first datarow in the bo.</description><pubDate>Wed, 18 Mar 2009 08:40:32 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22427.aspx</link><description>hi,&lt;/P&gt;&lt;P&gt;ahem. i tried to figure out where it comes from, but no luck thus far. i put Messagebox.Show(Boname.isDirty.ToString()) infront and at the end of every procedure that i added to the bo and the form. &lt;/P&gt;&lt;P&gt;it happens after the bo is filled, but where, is not clear. &lt;/P&gt;&lt;P&gt;however, i also dont really care about if its dirty at that point or not, because the user hasnt specified to edit or add a row at that time anyways. actually when i press the undo-button on the maintanance-strip after the form appears, everything is how it should be.&lt;/P&gt;&lt;P&gt;cant i just tell the maintanance form to only care about the isdirty-state of the bo if in edit or add mode ?&lt;/P&gt;&lt;P&gt;thanks.</description><pubDate>Wed, 18 Mar 2009 08:22:55 GMT</pubDate><dc:creator>Philipp Guntermann</dc:creator></item><item><title>RE: How to set BO undirty ?</title><link>http://forum.strataframe.net/FindPost22425.aspx</link><description>You created an infinite loop.&amp;nbsp; The first thing that you need to figure out is why the BO is becoming dirty.&amp;nbsp; Something is changing a value.&amp;nbsp; One thing I would do is handle the IsDirtyChanged event, put a break point, then look at the call stack to determine if I could see what is changing.</description><pubDate>Wed, 18 Mar 2009 08:09:42 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item></channel></rss>