<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.lhotka.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>CSLA .NET discussion</title><link>http://forums.lhotka.net/forums/5.aspx</link><description>General discussion about CSLA .NET</description><dc:language /><generator>CommunityServer 2008.5 SP3 (Build: 36.8414)</generator><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52745.aspx</link><pubDate>Mon, 14 May 2012 21:54:06 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52745</guid><dc:creator>Tiago Freitas Leal</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52745.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52745</wfw:commentRss><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;The attached code solves the issue&lt;/p&gt;
&lt;li&gt;on initialize, only buttons with &lt;strong&gt;DisableWhenUseless &lt;/strong&gt;or &lt;strong&gt;DisableWhenClean &lt;/strong&gt;options should be forced to enabled state&lt;/li&gt;
&lt;p&gt;This is important if you use CslaActionExtenderTsb (for ToolStripButton) since you can have navigation buttons that are enabled by other UI events. Of course you can also have navigation buttons that are plain buttons, so the fix applies to both classes.&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52718.aspx</link><pubDate>Wed, 09 May 2012 23:12:03 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52718</guid><dc:creator>Tiago Freitas Leal</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52718.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52718</wfw:commentRss><description>&lt;p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;img src="http://forums.lhotka.net/Themes/hawaii/images/icon-quote.gif"&gt; &lt;strong&gt;JonnyBee:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
&lt;p&gt;Hi, &lt;/p&gt;
&lt;p&gt;You may also want to look into &lt;i&gt;BusinessRules.GetAllBrokenRules&lt;/i&gt;(). &lt;/p&gt;
&lt;p&gt;This static method will return a list of all broken rules in &amp;lt;bo&amp;gt; and all child/grandchild objects and may be presented as a list or a tree view.&lt;/p&gt;
&lt;div style="CLEAR:both;"&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;I did have a look and found it not very straightforward to use. So I left this issue to later on.&lt;/p&gt;
&lt;p&gt;On the mean time I found that this controls force all buttons to enabled. This isn&amp;#39;t a good idea because I might need to &amp;quot;bind&amp;quot; the enabled state to a BO or Ui state. Another feature to add...&lt;/p&gt;
&lt;p&gt;&amp;lt;edit&amp;gt;&lt;/p&gt;
&lt;p&gt;It&amp;#39;s fixed.&lt;/p&gt;
&lt;p&gt;&amp;lt;/edit&amp;gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52707.aspx</link><pubDate>Tue, 08 May 2012 19:34:47 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52707</guid><dc:creator>JonnyBee</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52707.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52707</wfw:commentRss><description>&lt;p&gt;Hi, &lt;/p&gt;
&lt;p&gt;You may also want to look into &lt;i&gt;BusinessRules.GetAllBrokenRules&lt;/i&gt;(). &lt;/p&gt;
&lt;p&gt;This static method will return a list of all broken rules in &amp;lt;bo&amp;gt; and all child/grandchild objects and may be presented as a list or a tree view.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52700.aspx</link><pubDate>Mon, 07 May 2012 22:27:53 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52700</guid><dc:creator>Tiago Freitas Leal</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52700.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52700</wfw:commentRss><description>&lt;p&gt;Hi Jonny,&lt;/p&gt;
&lt;p&gt;This works perfectly. I enclose V4 with the corrected code for IButtonControl (button and LinkLabel) and for ToolStripButton. Thanks.&lt;/p&gt;
&lt;p&gt;This isn&amp;#39;t closed as the broken rules (and validation) message box is far from ready:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;only lists the broken rules for the root object and its properties (child objects broken rules are missing)&lt;/li&gt;
&lt;li&gt;should list the friendly name of the property (as it&amp;#39;s localizable) instead of the property name&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The later depends on GetPropertyFriendlyName proposal on &lt;a href="http://forums.lhotka.net/forums/p/3424/52654.aspx#52654"&gt;http://forums.lhotka.net/forums/p/3424/52654.aspx#52654&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52699.aspx</link><pubDate>Mon, 07 May 2012 20:07:07 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52699</guid><dc:creator>cwinkelmann</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52699.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52699</wfw:commentRss><description>&lt;p&gt;@&lt;strong&gt;JonnyBee: &lt;/strong&gt;That worked perfectly. &lt;/p&gt;
&lt;p&gt;I added both ways to the demo project and I&amp;#39;ll continue developing it. I hope to add functionality to it as a demo of lots of CSLA functionality, so I&amp;#39;ll eventually propose adding it to the CSLAContrib project.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52698.aspx</link><pubDate>Sun, 06 May 2012 05:36:25 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52698</guid><dc:creator>JonnyBee</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52698.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52698</wfw:commentRss><description>&lt;p&gt;@Tiago:&lt;/p&gt;
&lt;p&gt;First I&amp;#39;d refactor so that the ActionExtender has AddEventHoks and RemoveEventHooks methods:&lt;/p&gt;
&lt;pre style="font-family:Consolas;font-size:13;color:black;background:#fafafa;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;ResetActionBehaviors(&lt;span style="color:#2baaaf;"&gt;ISavable&lt;/span&gt;&amp;nbsp;objectToBind)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeControls(&lt;span style="color:blue;"&gt;true&lt;/span&gt;);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;BindingSource&lt;/span&gt;&amp;nbsp;rootSource&amp;nbsp;=&amp;nbsp;_dataSource&amp;nbsp;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;BindingSource&lt;/span&gt;;
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(rootSource&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&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;AddEventHooks(objectToBind);
&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;&amp;nbsp;&amp;nbsp;_bindingSourceTree&amp;nbsp;=&amp;nbsp;&lt;span style="color:#2b91af;"&gt;BindingSourceHelper&lt;/span&gt;.InitializeBindingSourceTree(_container,&amp;nbsp;rootSource);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_bindingSourceTree.Bind(objectToBind);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;AddEventHooks(&lt;span style="color:#2baaaf;"&gt;ISavable&lt;/span&gt;&amp;nbsp;objectToBind)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:green;"&gt;//&amp;nbsp;make&amp;nbsp;sure&amp;nbsp;to&amp;nbsp;not&amp;nbsp;attach&amp;nbsp;many&amp;nbsp;times&lt;/span&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RemoveEventHooks(objectToBind);
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2baaaf;"&gt;INotifyPropertyChanged&lt;/span&gt;&amp;nbsp;propChangedObjParent&amp;nbsp;=&amp;nbsp;objectToBind&amp;nbsp;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2baaaf;"&gt;INotifyPropertyChanged&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(propChangedObjParent&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&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;propChangedObjParent.PropertyChanged&amp;nbsp;+=&amp;nbsp;propChangedObj_PropertyChanged;
&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;span style="color:#2baaaf;"&gt;INotifyChildChanged&lt;/span&gt;&amp;nbsp;propChangedObjChild&amp;nbsp;=&amp;nbsp;objectToBind&amp;nbsp;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2baaaf;"&gt;INotifyChildChanged&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(propChangedObjChild&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&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;propChangedObjChild.ChildChanged&amp;nbsp;+=&amp;nbsp;propChangedObj_ChildChanged;
&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;&lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;RemoveEventHooks(&lt;span style="color:#2baaaf;"&gt;ISavable&lt;/span&gt;&amp;nbsp;objectToBind)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2baaaf;"&gt;INotifyPropertyChanged&lt;/span&gt;&amp;nbsp;propChangedObjParent&amp;nbsp;=&amp;nbsp;objectToBind&amp;nbsp;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2baaaf;"&gt;INotifyPropertyChanged&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(propChangedObjParent&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&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;propChangedObjParent.PropertyChanged&amp;nbsp;-=&amp;nbsp;propChangedObj_PropertyChanged;
&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;span style="color:#2baaaf;"&gt;INotifyChildChanged&lt;/span&gt;&amp;nbsp;propChangedObjChild&amp;nbsp;=&amp;nbsp;objectToBind&amp;nbsp;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2baaaf;"&gt;INotifyChildChanged&lt;/span&gt;;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(propChangedObjChild&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&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;propChangedObjChild.ChildChanged&amp;nbsp;-=&amp;nbsp;propChangedObj_ChildChanged;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;
&lt;p&gt;And then change the save code to make sure to attach events:&lt;/p&gt;
&lt;pre style="font-family:Consolas;font-size:13;color:black;background:#fafafa;"&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;try&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
 &lt;i&gt;&lt;b&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RemoveEventHooks(savableObject)&lt;/b&gt;&lt;/i&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;savableObject&amp;nbsp;=&amp;nbsp;savableObject.Save()&amp;nbsp;&lt;span style="color:blue;"&gt;as&lt;/span&gt;&amp;nbsp;Csla.Core.&lt;span style="color:#2baaaf;"&gt;ISavable&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OnObjectSaved(&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;CslaActionEventArgs&lt;/span&gt;(props.CommandName));
 
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;switch&lt;/span&gt;&amp;nbsp;(props.PostSaveAction)
&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2baf9a;"&gt;PostSaveActionType&lt;/span&gt;.None:
 
&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;&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;&lt;span style="color:blue;"&gt;if&lt;/span&gt;&amp;nbsp;(source&amp;nbsp;!=&amp;nbsp;&lt;span style="color:blue;"&gt;null&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;props.RebindAfterSave)&lt;br /&gt;&lt;i&gt;&lt;b&gt;                              { &lt;/b&gt;&lt;/i&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;&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; _bindingSourceTree.Bind(savableObject);
&lt;i&gt;&lt;b&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;&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;&amp;nbsp;AddEventHooks(savableObject);&lt;br /&gt;                              }&lt;/b&gt;&lt;/i&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;&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;span style="color:blue;"&gt;break&lt;/span&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;&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;span style="color:blue;"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2baf9a;"&gt;PostSaveActionType&lt;/span&gt;.AndClose:
 
&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;&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;CloseForm();
&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;&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;&lt;span style="color:blue;"&gt;break&lt;/span&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;&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;span style="color:blue;"&gt;case&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2baf9a;"&gt;PostSaveActionType&lt;/span&gt;.AndNew:
 
&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;&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;OnSetForNew(&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;CslaActionEventArgs&lt;/span&gt;(props.CommandName));&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;&lt;b&gt;AddEventHooks(savableObject);&lt;/b&gt;&lt;/i&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;&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;span style="color:blue;"&gt;break&lt;/span&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;&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;&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;catch&lt;/span&gt;&amp;nbsp;(&lt;span style="color:#2b91af;"&gt;Exception&lt;/span&gt;&amp;nbsp;ex)
&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;&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;&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;&amp;nbsp;&amp;nbsp;_bindingSourceTree.Bind(savableObject);&amp;nbsp;&lt;span style="color:green;"&gt;//Issue&amp;nbsp;ID:&amp;nbsp;&amp;nbsp;426&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;i&gt;&lt;b&gt;AddEventHooks(savableObject);&lt;/b&gt;&lt;/i&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OnErrorEncountered(&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;ErrorEncounteredEventArgs&lt;/span&gt;(props.CommandName,&amp;nbsp;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="color:#2b91af;"&gt;ObjectSaveException&lt;/span&gt;(ex)));
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;raiseClicked&amp;nbsp;=&amp;nbsp;&lt;span style="color:blue;"&gt;false&lt;/span&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52697.aspx</link><pubDate>Sun, 06 May 2012 05:07:03 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52697</guid><dc:creator>JonnyBee</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52697.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52697</wfw:commentRss><description>&lt;p&gt;@cwinkelmann&lt;/p&gt;
&lt;p&gt;I looked at your code and the problem is most likely your code and how you attach to the events. You should not do this in the constructor. &lt;/p&gt;
&lt;p&gt;Alt 1: Do not attach to the events - simply override OnChildChanged event like this in &lt;i&gt;&lt;b&gt;EditableRoot.cs&lt;/b&gt;&lt;/i&gt;. This relies on CSLA to use the AddXYEventHook methods to hook into events properly and your code just override the method OnChildChanged (that in turn triggers the ChildChanged event).&lt;/p&gt;
&lt;pre style="font-family:Consolas;font-size:13;color:black;background:#fafafa;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;OnChildChanged(Csla.Core.&lt;span style="color:#2b91af;"&gt;ChildChangedEventArgs&lt;/span&gt;&amp;nbsp;e)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.OnChildChanged(e);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Calculate();
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;
&lt;p&gt;Alt 2:Override the proper methods to Add/Remove event hooks like this:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre style="font-family:Consolas;font-size:13px;color:black;background:none repeat scroll 0% 0% #fafafa;"&gt;    &lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;EditableRoot()
    {&amp;nbsp;
        &lt;span style="color:green;"&gt;/*&amp;nbsp;Force&amp;nbsp;use&amp;nbsp;of&amp;nbsp;Object&amp;nbsp;Factory&amp;nbsp;methods&amp;nbsp;*/&lt;/span&gt;&lt;br /&gt;    }&lt;/pre&gt;
&lt;pre style="font-family:Consolas;font-size:13;color:black;background:#fafafa;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;OnRemoveEventHooks(Csla.Core.&lt;span style="color:#2baaaf;"&gt;IBusinessObject&lt;/span&gt;&amp;nbsp;child)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.OnRemoveEventHooks(child);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.ChildChanged&amp;nbsp;-=&amp;nbsp;EditableRoot_ChildChanged;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;OnAddEventHooks(Csla.Core.&lt;span style="color:#2baaaf;"&gt;IBusinessObject&lt;/span&gt;&amp;nbsp;child)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;base&lt;/span&gt;.OnAddEventHooks(child);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:blue;"&gt;this&lt;/span&gt;.ChildChanged&amp;nbsp;+=&amp;nbsp;EditableRoot_ChildChanged;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;    &lt;span style="color:blue;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color:blue;"&gt;void&lt;/span&gt;&amp;nbsp;EditableRoot_ChildChanged(&lt;span style="color:blue;"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;Csla.Core.&lt;span style="color:#2b91af;"&gt;ChildChangedEventArgs&lt;/span&gt;&amp;nbsp;e)
    {
      Calculate();
    }&lt;/pre&gt;
&lt;p&gt;The OnXYEventHooks method is also used by CSLA to attach itself to the events on the child objects.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52696.aspx</link><pubDate>Sun, 06 May 2012 02:24:55 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52696</guid><dc:creator>Tiago Freitas Leal</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52696.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52696</wfw:commentRss><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;No progress on this front. After several hours of debug, I just couldn&amp;#39;t find the soltuion for the &amp;quot;button is always disabled after a save&amp;quot; issue.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52675.aspx</link><pubDate>Tue, 01 May 2012 18:59:03 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52675</guid><dc:creator>cwinkelmann</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52675.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52675</wfw:commentRss><description>&lt;p&gt;That is exactly the same result I have on a Demo project. I was wondering if I was not performing the save operations correctly and that would cause some odd behavior with the child/parent change notification, but I thought everything I did was run of the mill type stuff.&lt;/p&gt;
&lt;p&gt;So I am toying with the root, child, grandchild pattern and after having saved the root, which triggers the Child_Update on child and grandchild, then the child changed events don&amp;#39;t seem to fire when I modify the child or grandchild BO. I&amp;#39;m not sure if there is a problem with the clone process that it is not creating the same even handler subscriptions or if there is a problem somewhere else. I&amp;#39;m not entirely sure it is a problem with ActionExtender as my root object is not listening to child changed events after having saved once... &lt;/p&gt;
&lt;p&gt;I&amp;#39;ve attached a proof of concept hoping that will help anyone who wants to try Tiago&amp;#39;s latest version of the ActionExtender. &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52658.aspx</link><pubDate>Mon, 30 Apr 2012 01:21:53 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52658</guid><dc:creator>Tiago Freitas Leal</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52658.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52658</wfw:commentRss><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;Found another issue that was present on Miguel&amp;#39;s code and that I kept in the changed code.&lt;/p&gt;
&lt;p&gt;1)&amp;nbsp;Set &lt;span style="font-family:Courier New;"&gt;DisableWhenClean&lt;/span&gt; (or the new &lt;span style="font-family:Courier New;"&gt;DisableWhenUseless&lt;/span&gt;) property to &lt;span style="font-family:Courier New;"&gt;True&lt;/span&gt; on buttons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="font-family:Arial;"&gt;Save&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Arial;"&gt;Save/New&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Arial;"&gt;Save/Close&lt;/span&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="font-family:Arial;"&gt;Cancel&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-family:Arial;"&gt;2) Load a form =&amp;gt; buttons are disabled (OK)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial;"&gt;3) Change something =&amp;gt; buttons are enabled (OK)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Arial;"&gt;4) Save the form&amp;nbsp; =&amp;gt; buttons are disabled (OK)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;5) Again, change something =&amp;gt; buttons are disabled (&lt;strong&gt;NOK&lt;/strong&gt;)&lt;/p&gt;
&lt;p&gt;Note - &lt;span style="font-family:Courier New;"&gt;DisableWhenUseless&lt;/span&gt; means the button is disabled when no action is available for it (Save for the save action family and Undo for the cancel action family).&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52554.aspx</link><pubDate>Mon, 16 Apr 2012 21:53:54 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52554</guid><dc:creator>Tiago Freitas Leal</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52554.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52554</wfw:commentRss><description>&lt;p&gt;Hi Rocky,&lt;/p&gt;
&lt;p&gt;The code I post is always public domain. If I need to sign a contributor agreement in order for Csla to use the code above, just tell me where the dotted line is.&lt;/p&gt;
&lt;p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;img src="http://forums.lhotka.net/Themes/hawaii/images/icon-quote.gif"&gt; &lt;strong&gt;RockfordLhotka:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;/p&gt;
&lt;p&gt;I have at least one volunteer who&amp;#39;s in the process of signing a contributor agreement, and who has indicated interest in working on some of the Windows Forms items in bugtracker, so there may be some changes that&amp;#39;ll come in 4.5.&lt;/p&gt;
&lt;p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52550.aspx</link><pubDate>Mon, 16 Apr 2012 19:34:39 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52550</guid><dc:creator>RockfordLhotka</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52550.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52550</wfw:commentRss><description>&lt;p&gt;Nothing has changed in Csla.Windows (Windows Forms support) for a very long time. This hasn&amp;#39;t been a priority - our limited dev resources have been busy just keeping up with all the new technologies...&lt;/p&gt;
&lt;p&gt;I have at least one volunteer who&amp;#39;s in the process of signing a contributor agreement, and who has indicated interest in working on some of the Windows Forms items in bugtracker, so there may be some changes that&amp;#39;ll come in 4.5.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52549.aspx</link><pubDate>Mon, 16 Apr 2012 19:16:37 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52549</guid><dc:creator>cwinkelmann</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52549.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52549</wfw:commentRss><description>&lt;p&gt;What is the status of CslaActionExtender in Csla 4.3.10? So at this point all known bugs should be solved with this v3 set of files for 4.3.10?&lt;/p&gt;
&lt;p&gt;I didn&amp;#39;t find any open bugs listed here: http://www.lhotka.net/cslabugs/search.aspx&lt;/p&gt;
&lt;p&gt;but I may not be using the search function correctly.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52541.aspx</link><pubDate>Sun, 15 Apr 2012 22:37:49 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52541</guid><dc:creator>Tiago Freitas Leal</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52541.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52541</wfw:commentRss><description>&lt;p&gt;&lt;blockquote&gt;&lt;div&gt;&lt;img src="http://forums.lhotka.net/Themes/hawaii/images/icon-quote.gif"&gt; &lt;strong&gt;JonnyBee:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;
&lt;p&gt;Hi Tiago, &lt;/p&gt;
&lt;p&gt;This code is not &amp;quot;bulletproof&amp;quot;: &lt;/p&gt;
&lt;p&gt;(...)&lt;/p&gt;
&lt;p&gt;And there&amp;#39;s a few other know bugs to - check in bugtracker.&lt;/p&gt;
&lt;div style="CLEAR:both;"&gt;&lt;/div&gt;
&lt;/div&gt;&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;Found 4 open issues. There are 3 bugs&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.lhotka.net/cslabugs/edit_bug.aspx?id=426"&gt;http://www.lhotka.net/cslabugs/edit_bug.aspx?id=426&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.lhotka.net/cslabugs/edit_bug.aspx?id=700"&gt;http://www.lhotka.net/cslabugs/edit_bug.aspx?id=700&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.lhotka.net/cslabugs/edit_bug.aspx?id=843"&gt;http://www.lhotka.net/cslabugs/edit_bug.aspx?id=843&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;and 1 enhancement (an earlier version of this one)&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.lhotka.net/cslabugs/edit_bug.aspx?id=650"&gt;http://www.lhotka.net/cslabugs/edit_bug.aspx?id=650&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Attached is the updated files with solution for&amp;nbsp;issues 426 and 843. Issue 700 duplicates 426. Anyway I tested the sample and it passed.&lt;/p&gt;
&lt;p&gt;Notice that 3 new Csla resources are needed but those lines are commented and hard coded strings are used instead.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Re: CslaActionExtender - useful enough vs. even more useful</title><link>http://forums.lhotka.net/forums/thread/52540.aspx</link><pubDate>Sun, 15 Apr 2012 20:25:45 GMT</pubDate><guid isPermaLink="false">49a2225a-bd1e-4c5d-a665-720b81e87ca9:52540</guid><dc:creator>JonnyBee</dc:creator><slash:comments>0</slash:comments><comments>http://forums.lhotka.net/forums/thread/52540.aspx</comments><wfw:commentRss>http://forums.lhotka.net/forums/commentrss.aspx?SectionID=5&amp;PostID=52540</wfw:commentRss><description>&lt;p&gt;Hi Tiago, &lt;/p&gt;
&lt;p&gt;This code is not &amp;quot;bulletproof&amp;quot;: &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;&amp;nbsp; case CslaFormAction.Validate:&lt;br /&gt;&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; if (savableObject is Csla.Core.BusinessBase)&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; {&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;&amp;nbsp;&amp;nbsp; Csla.Core.BusinessBase businessObject = savableObject as Csla.Core.BusinessBase;&lt;br /&gt;&lt;b&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;&amp;nbsp; if (businessObject.BrokenRulesCollection.Count &amp;gt; 0)&lt;/b&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(businessObject.BrokenRulesCollection.ToString(), Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);&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;&amp;nbsp;&amp;nbsp; else&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show(ObjectIsValidMessage, Resources.Information, MessageBoxButtons.OK, MessageBoxIcon.Information);&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; }&lt;br /&gt;&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; break;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;There&amp;#39;s nothing that prevents anyone from using a BusinessBase object that has children so the code should check for &amp;lt;bo&amp;gt;.IsValid &lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Another known bug is the OnClick&lt;/p&gt;
&lt;p&gt;&amp;uml;&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; if (objectValid)&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;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CslaActionCancelEventArgs savingArgs = new CslaActionCancelEventArgs(&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; false, props.CommandName);&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OnObjectSaving(savingArgs);&lt;br /&gt;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;if (!savingArgs.Cancel)&lt;/b&gt; // this line was &lt;b&gt;!args.Cancel&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;And there&amp;#39;s a few other know bugs to - check in bugtracker.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>