﻿<?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?)  » IsDirty Question?</title><generator>InstantForum 2017-1 Final</generator><description>StrataFrame Forum</description><link>http://forum.strataframe.net/</link><webMaster>StrataFrame Forum</webMaster><lastBuildDate>Fri, 05 Jun 2026 20:21:54 GMT</lastBuildDate><ttl>20</ttl><item><title>IsDirty Question?</title><link>http://forum.strataframe.net/FindPost14071.aspx</link><description>Whenever I do a BO.Add() to my business object the IsDirty flag is being turned on even though no bound UI controls have been changed.&amp;nbsp; I'm not sure but I believe its because I have several fields in the BO that have Custom Field Properties set.&amp;nbsp; The underlying table does NOT allow nulls on any field but the user is not required to enter all fields.&amp;nbsp; So for the fields that are not required I set the Null Value Option and Null Replacement value as follows:&lt;/P&gt;&lt;P&gt;Strings: Return Alternate On Null/Set Null On Alternate(reference type) -- String.Empty&lt;/P&gt;&lt;P&gt;Integers: Return Alternate On Null/Set Null On Alternate(value type) -- 0&lt;/P&gt;&lt;P&gt;DateTime: Return Alternate On Null/Set Null On Alternate(reference type) -- #1/1/1800#&lt;/P&gt;&lt;P&gt;The getting/setting of the values works fine but is that what is causing the BO to be flagged as dirty when a new record is added?&amp;nbsp; If so, how do I get around this problem?&amp;nbsp; I have a simple data entry app that clears the BO on each successful BO.Save and then adds a new record using BO.Add.&amp;nbsp; When the user closes the app, they're always prompted with the "Save Changes" message dialog since the BO is flagged as dirty.&lt;/P&gt;&lt;P&gt;Thanks!!</description><pubDate>Wed, 06 Feb 2008 13:00:51 GMT</pubDate><dc:creator>fansanitis</dc:creator></item><item><title>RE: IsDirty Question?</title><link>http://forum.strataframe.net/FindPost14103.aspx</link><description>[quote]This seems to work but is this a proper way of getting what I need or am I opening myself up for future problems?[/quote]&lt;/P&gt;&lt;P&gt;No, I think you are good. :)</description><pubDate>Wed, 06 Feb 2008 13:00:51 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item><item><title>RE: IsDirty Question?</title><link>http://forum.strataframe.net/FindPost14099.aspx</link><description>I added a &lt;FONT size=2&gt;Evaluations.CurrentDataTable.AcceptChanges() statement immediately after each Evaluations.Add() to accept the changes to the table but not the database.&amp;nbsp; This gaves me&amp;nbsp;Original datavalues that I can compare to the Current datavalues to see if anything has changed.&lt;/P&gt;&lt;/FONT&gt;&lt;P&gt;Here's some code I placed in the FormClosing event:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; ix &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Integer&lt;/FONT&gt;&lt;FONT size=2&gt; = Evaluations.CurrentDataTable.Columns.Count&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; isDirty &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Boolean&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;For&lt;/FONT&gt;&lt;FONT size=2&gt; ix = 0 &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;To&lt;/FONT&gt;&lt;FONT size=2&gt; Evaluations.CurrentDataTable.Columns.Count - 1&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; If&lt;/FONT&gt;&lt;FONT size=2&gt; Evaluations.CurrentRow.Item(ix, Data.DataRowVersion.Original) &amp;lt;&amp;gt; &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Evaluations.CurrentRow.Item(ix, Data.DataRowVersion.Current) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; isDirty = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;True&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;For&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Next&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; isDirty &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp; Dim&lt;/FONT&gt;&lt;FONT size=2&gt; dlgResult &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; DialogResult&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; dlgResult = MessageBox.Show(&lt;/FONT&gt;&lt;FONT color=#a31515 size=2&gt;"Do you want to save changes?"&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;My&lt;/FONT&gt;&lt;FONT size=2&gt;.Application.Info.Title, _&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button3)&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Select&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Case&lt;/FONT&gt;&lt;FONT size=2&gt; dlgResult&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case&lt;/FONT&gt;&lt;FONT size=2&gt; Windows.Forms.DialogResult.Cancel&lt;/P&gt;&lt;P&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; e.Cancel = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;True&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case&lt;/FONT&gt;&lt;FONT size=2&gt; Windows.Forms.DialogResult.Yes&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&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; If&lt;/FONT&gt;&lt;FONT size=2&gt; Evaluations.Save() &amp;lt;&amp;gt; MicroFour.StrataFrame.Data.SaveUndoResult.Success &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&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;&amp;nbsp; e.Cancel = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;True&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&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;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Case&lt;/FONT&gt;&lt;FONT size=2&gt; Windows.Forms.DialogResult.No&lt;/P&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&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; '--Do nothing&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Select&lt;/P&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;This seems to work but is this a proper way of getting what I need or am I opening myself up for future problems?&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;Thanks!!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description><pubDate>Wed, 06 Feb 2008 12:51:18 GMT</pubDate><dc:creator>fansanitis</dc:creator></item><item><title>RE: IsDirty Question?</title><link>http://forum.strataframe.net/FindPost14089.aspx</link><description>Greg's references are good...if this doesn't get you going let us know.&amp;nbsp; Thanks. :)</description><pubDate>Wed, 06 Feb 2008 11:07:53 GMT</pubDate><dc:creator>Trent L. Taylor</dc:creator></item><item><title>RE: IsDirty Question?</title><link>http://forum.strataframe.net/FindPost14087.aspx</link><description>This is the normal behavior.  It took me a while to wrap my head around it, but what happens is that when you add a new record, the underlying DataTable has a row added to it. That row is marked as dirty (via normal ADO.NET mechanisms).  Because DataTables are disconnected, it is hard to tell when, exactly, a row changed from "just added, but no [i]user[/i] changes" to "dirty because the user changed something".  This is really an ADO.NET thing.&lt;br&gt;
&lt;br&gt;
Some other posts on this subject:&lt;br&gt;
some background...&lt;br&gt;
[url]http://forum.strataframe.net/FindPost9401.aspx[/url]&lt;br&gt;
&lt;br&gt;
about this very issue...&lt;br&gt;
[url]http://forum.strataframe.net/FindPost7177.aspx[/url]&lt;br&gt;
&lt;br&gt;
I know this doesn't exactly answer your question, but hopefully understanding what's going on will help you start to figure something out.  &lt;br&gt;
&lt;br&gt;
As to how to know if the user has entered any data, you might look into using property changed events to flag that the user has entered something, then check that flag when the form closes. If they haven't made any changes, you could simply Undo the changes on the BO before closing.&lt;br&gt;
&lt;br&gt;
Good luck!</description><pubDate>Wed, 06 Feb 2008 11:06:01 GMT</pubDate><dc:creator>Greg McGuffey</dc:creator></item></channel></rss>