﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Akal Tech RSS Feed</title><link>http://www.quickobjects.com/Views/Forum/Default.aspx</link><description>Akal Tech Forum Topics</description><copyright>Akal Tech (c) 2010. All rights reserved.</copyright><language>en-us</language><lastBuildDate>9/4/2010 7:28:10 PM GMT</lastBuildDate><item><title>Topic: How do I know what has changed?</title><description>&lt;br&gt;Topic Description: Hello,&lt;br&gt;&lt;br&gt;I have a business object that is bound to a form using BindingSource but before I save the changes I need to show the changes made by the user.&amp;nbsp; I think this should be a simple question but I didn't see any sample or tutorial showing how I could do this.&amp;nbsp; I am thinking that may be I should clone the object after I load it so I can compare the two before updating. Or is there a better way?&lt;br&gt;&lt;br&gt;Ryan&lt;br&gt;&lt;br&gt;&lt;br&gt; &lt;hr style="height:1px;"&gt;Replies: 3&lt;br&gt;Last Reply: Sat, 20 Sep 2008 18:44:53 GMT&lt;br&gt;Reply By: Ryan Aljets&lt;hr style="height:1px;"&gt;</description><link>http://www.quickobjects.com/Views/Forum/Topic.aspx?BPT=5&amp;PT=7&amp;APT=48</link><pubDate>Sat, 20 Sep 2008 18:44:53 GMT</pubDate></item><item><title>Reply: Re: How do I know what has changed?</title><description>Ish,&lt;br&gt;&lt;br&gt;This is exactly what I needed to do and this is even simpler than what I expected.&amp;nbsp; The solution you have provided works great and I am able to compare any of the objects rather than hard coding the same thing for each seperate class.&amp;nbsp; While looking for this I also saw the IsDirty property and that is very useful as well.&lt;br&gt;&lt;br&gt;I have couple of suggestions that I'll be posting soon but overall I am super impressed with what your framework can do.&lt;br&gt;&lt;br&gt;Ryan&lt;br&gt;</description><link>http://www.quickobjects.com/Views/Forum/Topic.aspx?BPT=5&amp;PT=7&amp;APT=48</link><pubDate>Sat, 20 Sep 2008 18:44:53 GMT</pubDate></item><item><title>Reply: Re: How do I know what has changed?</title><description>Hi Ryan,&lt;br&gt;&lt;br&gt;This is indeed a very simple thing. What you are looking for is available in a property called OriginalValue on each field. Take a look at the following example code and that should help. If still something is unclear please do let us know.&lt;br&gt;&lt;br&gt;&lt;div style="border: 1px solid rgb(127, 157, 185); overflow: auto; background-color: white; width: 100%; line-height: 100% ! important; font-family: Courier New; font-size: 11px;"&gt;&lt;table style="border-width: 0px; border-bottom: 0px solid rgb(238, 238, 238); margin: 2px 0px; width: 99%; border-collapse: collapse; background-color: rgb(255, 255, 255);" cellpadding="0" cellspacing="0"&gt;&lt;col style="border-bottom: 1px solid rgb(247, 247, 247); font-family: Courier New; font-size: 11px; padding-left: 10px; white-space: nowrap;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;font style="font-size: 11px;"&gt;&lt;/font&gt;&lt;font style="color: blue;"&gt;using&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;(Customers&amp;nbsp;customer&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font style="color: blue;"&gt;new&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;Customers())&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;{&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer.CustomerID.Value&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer.Load();&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer.FirstName.Value&amp;nbsp;=&amp;nbsp;customer.FirstName.Value&amp;nbsp;+&amp;nbsp;&lt;font style="color: blue;"&gt;"&amp;nbsp;:)"&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font style="color: blue;"&gt;foreach&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;(IField&amp;nbsp;fld&amp;nbsp;&lt;/font&gt;&lt;font style="color: blue;"&gt;in&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;customer.Fields)&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font style="color: green;"&gt;//&amp;nbsp;each&amp;nbsp;field&amp;nbsp;has&amp;nbsp;a&amp;nbsp;property&amp;nbsp;called&amp;nbsp;OriginalValue&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font style="color: blue;"&gt;if&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;(fld.OriginalValue&amp;nbsp;!=&amp;nbsp;&lt;/font&gt;&lt;font style="color: blue;"&gt;null&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;)&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&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;&lt;font style="color: green;"&gt;//&amp;nbsp;compare&amp;nbsp;if&amp;nbsp;both&amp;nbsp;value&amp;nbsp;and&amp;nbsp;original&amp;nbsp;value&amp;nbsp;are&amp;nbsp;not&amp;nbsp;null&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;&lt;font style="color: blue;"&gt;if&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;(!fld.IsNull&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;!fld.OriginalValue.IsNull&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;fld.Value.Equals(fld.OriginalValue.Value))&amp;nbsp;&lt;/font&gt;&lt;font style="color: green;"&gt;//&amp;nbsp;You&amp;nbsp;can&amp;nbsp;compare&amp;nbsp;the&amp;nbsp;fld.Value&amp;nbsp;with&amp;nbsp;fld.OriginalValue.Value&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&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;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;MessageBox.Show(fld.GetResultSetName()&amp;nbsp;+&amp;nbsp;&lt;font style="color: blue;"&gt;"&amp;nbsp;has&amp;nbsp;not&amp;nbsp;changed!"&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;);&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&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;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;&lt;font style="color: green;"&gt;//&amp;nbsp;if&amp;nbsp;both&amp;nbsp;are&amp;nbsp;null&amp;nbsp;then&amp;nbsp;there&amp;nbsp;is&amp;nbsp;no&amp;nbsp;change&amp;nbsp;either.&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&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;&lt;font style="color: blue;"&gt;else&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;&lt;/font&gt;&lt;font style="color: blue;"&gt;if&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;(fld.IsNull&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;fld.OriginalValue.IsNull)&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&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;MessageBox.Show(fld.GetResultSetName()&amp;nbsp;+&amp;nbsp;&lt;font style="color: blue;"&gt;"&amp;nbsp;has&amp;nbsp;not&amp;nbsp;changed!"&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;);&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&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;&lt;font style="color: blue;"&gt;else&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&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;MessageBox.Show(fld.GetResultSetName()&amp;nbsp;+&amp;nbsp;&lt;font style="color: blue;"&gt;"&amp;nbsp;has&amp;nbsp;changed"&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;);&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font style="color: blue;"&gt;else&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&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;MessageBox.Show(fld.GetResultSetName()&amp;nbsp;+&amp;nbsp;&lt;font style="color: blue;"&gt;"&amp;nbsp;can&amp;nbsp;not&amp;nbsp;be&amp;nbsp;compared&amp;nbsp;since&amp;nbsp;the&amp;nbsp;original&amp;nbsp;value&amp;nbsp;is&amp;nbsp;not&amp;nbsp;available."&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;);&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;}&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;The above method is actually reusable, and you can simply create a method and pass it any business object instance to perform such comparison.&lt;br&gt;&lt;br&gt;You can also get the original value like this:&lt;br&gt;&lt;br&gt;&lt;div style="border: 1px solid rgb(127, 157, 185); overflow: auto; background-color: white; width: 100%; line-height: 100% ! important; font-family: Courier New; font-size: 11px;"&gt;&lt;table style="border-width: 0px; border-bottom: 0px solid rgb(238, 238, 238); margin: 2px 0px; width: 99%; border-collapse: collapse; background-color: rgb(255, 255, 255);" cellpadding="0" cellspacing="0"&gt;&lt;col style="border-bottom: 1px solid rgb(247, 247, 247); font-family: Courier New; font-size: 11px; padding-left: 10px; white-space: nowrap;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;font style="font-size: 11px;"&gt;&lt;/font&gt;&lt;font style="color: blue;"&gt;using&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;(Customers&amp;nbsp;customer&amp;nbsp;=&amp;nbsp;&lt;/font&gt;&lt;font style="color: blue;"&gt;new&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;Customers())&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;{&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer.CustomerID.Value&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer.Load();&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;customer.FirstName.Value&amp;nbsp;=&amp;nbsp;customer.FirstName.Value&amp;nbsp;+&amp;nbsp;&lt;font style="color: blue;"&gt;"&amp;nbsp;:)"&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;;&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font style="color: blue;"&gt;bool&lt;/font&gt;&lt;font style="font-size: 11px;"&gt;&amp;nbsp;equals&amp;nbsp;=&amp;nbsp;customer.FirstName.Value.Equals(customer.FirstName.OriginalValue.Value);&amp;nbsp;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MessageBox.Show(equals.ToString());&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: rgb(247, 247, 247);"&gt;}&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;Thanks,&lt;br&gt;Ish&lt;br&gt;</description><link>http://www.quickobjects.com/Views/Forum/Topic.aspx?BPT=5&amp;PT=7&amp;APT=48</link><pubDate>Fri, 19 Sep 2008 18:09:27 GMT</pubDate></item><item><title>Reply: Re: How do I know what has changed?</title><description>Business object already performs a concurrency check even without timestamp column so this means object already has this information.&amp;nbsp; Just not sure how to get it...&lt;br&gt;&lt;br&gt;</description><link>http://www.quickobjects.com/Views/Forum/Topic.aspx?BPT=5&amp;PT=7&amp;APT=48</link><pubDate>Thu, 18 Sep 2008 23:19:07 GMT</pubDate></item></channel></rss>