<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-19581107</id><updated>2011-04-22T02:52:07.888+08:00</updated><title type='text'>gds Works</title><subtitle type='html'>Research, Technical information and system design of the on going sideline projects.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19581107.post-1355462666202546859</id><published>2009-12-23T05:00:00.001+08:00</published><updated>2009-12-23T05:00:01.650+08:00</updated><title type='text'>hi</title><content type='html'>Dear friends:&lt;p&gt;              &lt;a href="http://eleshopexm.com"&gt;eleshopexm.com&lt;/a&gt; This is a very good network platform,&lt;br&gt;which operations are: motorcycles, brand-name mobile phones, MP3, MP4,&lt;br&gt;notebook computers, television, etc.; quality assurance warranty, and&lt;br&gt;absolute credit guarantee; because it is purchasing from the&lt;br&gt;manufacturer , the price is cheap, are now being sold at wholesale&lt;br&gt;prices, if not satisfied, you can also unconditional return,&lt;br&gt;opportunity, can we say Go nuts! ! !&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-1355462666202546859?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/1355462666202546859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=1355462666202546859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/1355462666202546859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/1355462666202546859'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2009/12/hi.html' title='hi'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-114553345932586691</id><published>2006-04-20T19:44:00.000+08:00</published><updated>2006-04-20T19:47:18.026+08:00</updated><title type='text'>Disecting CSLA 2.0 - Looking at SimpleDataProvider in depth</title><content type='html'>&lt;div align="justify"&gt;&lt;span class="967112111-20042006"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;One of the most common pitfalls in CSLA 1.0 during updating/inserting a editable business object is we tend to forget to place MarkNew() during deletion, MarkDirty() when saved and MarkOld() during fetching. These are common pitfalls for developers who creates CSLA business objects w/o using templates. &lt;/span&gt;&lt;/span&gt;&lt;span class="967112111-20042006"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;With CSLA 2.0, these methods are automatically called after executing your implementation of DataPortal_XXXX() in your business objects.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="967112111-20042006"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="967112111-20042006"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-114553345932586691?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/114553345932586691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=114553345932586691' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/114553345932586691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/114553345932586691'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/04/disecting-csla-20-looking-at.html' title='Disecting CSLA 2.0 - Looking at SimpleDataProvider in depth'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-114552497177881358</id><published>2006-04-20T17:22:00.000+08:00</published><updated>2006-04-20T17:24:04.883+08:00</updated><title type='text'>Disecting CSLA 2.0 - PropertyHasChanged Combo</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="823211409-20042006"&gt;In CSLA 1.1 you need to call CheckRules() in your set property (if there are rules) and followed by MarkDirty(). With version 2.0, I only need to call PropertyHasChanged() and the CSLA 2.0 framework is responsible for calling the following: &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="823211409-20042006"&gt;ValidationRules.CheckRules(PropertyName)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="823211409-20042006"&gt;MarkDirty()&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="823211409-20042006"&gt;OnPropertyChanged(PropertyName)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="823211409-20042006"&gt;However in cases you dont want to raise that a property has changed or you want to manually perform the validation rules check, you can still do the 1.1 way. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-114552497177881358?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/114552497177881358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=114552497177881358' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/114552497177881358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/114552497177881358'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/04/disecting-csla-20-propertyhaschanged.html' title='Disecting CSLA 2.0 - PropertyHasChanged Combo'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113827333866210186</id><published>2006-01-26T18:57:00.000+08:00</published><updated>2006-01-26T19:06:11.090+08:00</updated><title type='text'>VB.NET 2005 - Continue &amp; Using keywords</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Continue&lt;/strong&gt;&lt;br /&gt;This is one of the features I've been looking for in VB .NET and I'm glad they added this functionality. Using this keyword insie the loop allows you to skip and perform the next iteraion. Continue For is used cojunction with For loop and Continue While is use in while loop.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Using&lt;/strong&gt;&lt;br /&gt;This is for garbage collection where in developer wishes to explicitly clean up the unmanged resources before abandoning an object. The object must implment IDisposable. Please see below for an example:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div style="border-style:solid;border-width:thin;"&gt;Public Class Countries&lt;br /&gt;    Inherits Generic.List(Of Country)&lt;br /&gt;    Implements IDisposable&lt;br /&gt;&lt;br /&gt;    Public Overloads Sub Add(ByVal CountryName As String)&lt;br /&gt;        Dim itm As New Country&lt;br /&gt;        itm.CountryName = CountryName&lt;br /&gt;        Me.Add(itm)&lt;br /&gt;        Dim i As Integer = Me.Count - 1&lt;br /&gt;        Me.Item(i).IDCountry = Me.Count&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Public Overloads Sub Dispose() Implements IDisposable.Dispose&lt;br /&gt;        ' Do some clean up here&lt;br /&gt;    End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;To explicity clean up the unmanged resources&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div style="border-style:solid;border-width:thin;"&gt;Dim mCountries As New Countries&lt;br /&gt;' Retrive some data from mCountries&lt;br /&gt;Using (mCountries)&lt;br /&gt;' Manipulate data&lt;br /&gt;End Using&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113827333866210186?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113827333866210186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113827333866210186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113827333866210186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113827333866210186'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/vbnet-2005-continue-using-keywords.html' title='VB.NET 2005 - Continue &amp; Using keywords'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113803340621824086</id><published>2006-01-24T00:23:00.000+08:00</published><updated>2006-01-24T00:23:26.326+08:00</updated><title type='text'>IMS Update</title><content type='html'>&lt;DIV&gt;&lt;SPAN class=111151417-22012006&gt;&lt;FONT face=Arial size=2&gt;I just finished  doing the bug fixes on my IMS application for my cousin. I have troubles on  finding the bugs but I'm glad I've found it. The cause of the bugs were controls  that were being binded to a business object properties and failed to unbind it  when the form closes. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=111151417-22012006&gt;&lt;FONT face=Arial  size=2&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt; &lt;DIV&gt;&lt;SPAN class=111151417-22012006&gt;&lt;FONT face=Arial size=2&gt;I told Joseph that I  will be posting some technical blogs on the new features in VB .NET 2005, please  hang on I'll give you a blast this week. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113803340621824086?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113803340621824086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113803340621824086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113803340621824086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113803340621824086'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/ims-update.html' title='IMS Update'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113802768649065158</id><published>2006-01-23T22:32:00.000+08:00</published><updated>2006-01-23T23:03:51.136+08:00</updated><title type='text'>VB .NET 2005 - Global Keyword</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Global&lt;/strong&gt;&lt;br /&gt;Points to .NET framework base class library when used. This is useful wherein some of the custom namespace in an assembly has the same namespace in .NET framework base class libraries.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div style="border-style:solid;border-width:thin;"&gt;&lt;br /&gt;Namespace System.IO&lt;br /&gt; &lt;br /&gt;    Public Class FileWriter&lt;br /&gt;        Public Shared Sub Write()&lt;br /&gt;            ' Some code here for actual implementation&lt;br /&gt;        End Sub&lt;br /&gt;    End Class&lt;br /&gt; &lt;br /&gt;End Namespace&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Supposing you want to use the .NET framework base class library for System.IO.&lt;br /&gt;Simple use the Global keyword, please see below.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div style="border-style:solid;border-width:thin;"&gt;&lt;br /&gt;Dim fstm as Global.System.IO.FileStream&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113802768649065158?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113802768649065158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113802768649065158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113802768649065158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113802768649065158'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/vb-net-2005-global-keyword.html' title='VB .NET 2005 - Global Keyword'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113795129015410501</id><published>2006-01-23T01:27:00.000+08:00</published><updated>2006-01-23T01:34:50.170+08:00</updated><title type='text'>IMS Update for Mediaspot</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I just finished doing the bug fixes on the IMS application for Mediaspot. I have troubles on finding the bugs but I'm glad I've found it in the end. The cause of the bugs were controls that were being binded to a business objects properties and failed to unbind it when the form closes.&lt;Br&gt;&lt;br&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;On the other hand, I did my start my new job last monday 01/16. Since the company I joined is still new here in Cebu, we are still setting up the office space and I'm starting to do research on .NET 2.0 and its new features.&lt;br&gt;&lt;br&gt; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I told Joseph that I will be posting some of the new features in VB .NET 2005, please hang on I'll give you a blast this week.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113795129015410501?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113795129015410501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113795129015410501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113795129015410501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113795129015410501'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/ims-update-for-mediaspot.html' title='IMS Update for Mediaspot'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113701349609846100</id><published>2006-01-12T04:22:00.000+08:00</published><updated>2006-01-12T05:19:11.300+08:00</updated><title type='text'>Replacing IdleSync() w/ OnListChanged()</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;Environment: CLSA .NET and Windows Form&lt;HR&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The original sample code illustrated the use of Application.IdleSync() to toggle the save button in a BusinessBaseCollection when editing a specific editable object. I've noticed when the mouse is moved the application.IdleSync() handler is triggered and I find it ineffecient.&lt;br /&gt;&lt;br /&gt;Trying to find an efficient way, I noticed that BusinessBaseCollection overrides the OnListChanged Event. So I changed my IdleSync handler to OnListChanged.&lt;br /&gt;&lt;br /&gt;See below for illustration:&lt;br /&gt;&lt;br /&gt;In windows form level, I've created a method name OnListChanged()&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div style="border-style:solid;border-width:thin;"&gt;Private Sub OnListChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ListChangedEventArgs)&lt;br /&gt; btnSave.Enabled = mCustomer.IsSavable&lt;br /&gt; 'Add the code for the Broken Rules Error Provider&lt;br /&gt;End Sub&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;After retrieving records from the database, pattern this code just replace it with your own variables.&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div style="border-style:solid;border-width:thin;"&gt;mCustomer = Customers.GetCustomers()&lt;br /&gt;'Needs to be remove first&lt;br /&gt;RemoveHandler mCustomer.OnListChanged, AddressOf OnListChanged&lt;br /&gt;AddHandler mCustomer.OnListChanged, AddressOf OnListChanged&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Before closing the form alway remove the added handler, it can be placed on Form_Close() event.&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div style="border-style:solid;border-width:thin;"&gt;&lt;br /&gt;RemoveHandler mCustomer.OnListChanged, AddressOf OnListChanged&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113701349609846100?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113701349609846100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113701349609846100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113701349609846100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113701349609846100'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/replacing-idlesync-w-onlistchanged.html' title='Replacing IdleSync() w/ OnListChanged()'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113692792592724275</id><published>2006-01-11T05:18:00.000+08:00</published><updated>2006-01-12T03:41:43.786+08:00</updated><title type='text'>CSLA.NET Switching root to child object and vice versa</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I’ve managed to create my own switchable mechanism in CSLA .NET for editable object. I did tried to implement the original switchable editable object as presented by the author, but it confuses me a lot. As far as I understand to make the editable object switchable from root to child is by putting MarkAsChild() in the constructor of the object. When an editable child object is implemented calling Save() method it would throw an exception because it can’t be save directly. However, if we can manage to change the IsChild property from true to false then there will be no problem. But IsChild is a read only property.&lt;br /&gt;&lt;br /&gt;So out of curiosity, I tried to use reflection to change the mIsChild of type boolean private variable to false to behave as a root object and setting it to true to behave as a child object and it works. So I decided to combine the implementation of child and root object rather than implementing switchable object.&lt;br /&gt;&lt;br /&gt;When calling Save() method in:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Root – it invokes DataPortal_Update()&lt;/li&gt;&lt;li&gt;Child – it invokes the Friend Sub Update()&lt;/li&gt;&lt;/ul&gt;So instead of duplicating the code from Update() to DataPortal_Update(), I simply call Update() in DataPortal_Update().&lt;br /&gt;&lt;br /&gt;Below are codes for switching editable object from root to child and vice versa:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;Public Sub ToRoot(ByVal o As Object)&lt;br /&gt;&lt;br /&gt;    Dim t As System.Type&lt;br /&gt;&lt;br /&gt;    t = o.GetType().BaseType()&lt;br /&gt;&lt;br /&gt;    If String.Compare(t.Name, "BusinessBase", True) &amp;gt; 0 Then&lt;br /&gt;        Throw New Exception("Not a CSLA object")&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;    Dim fi As FieldInfo = t.GetField("mIsChild", _&lt;br /&gt;            Reflection.BindingFlags.NonPublic Or BindingFlags.GetField Or BindingFlags.Instance _&lt;br /&gt;            Or BindingFlags.FlattenHierarchy Or BindingFlags.CreateInstance _&lt;br /&gt;            Or BindingFlags.SetField)&lt;br /&gt;&lt;br /&gt;    If fi Is Nothing Then&lt;br /&gt;        Throw New Exception("Unable to resolve CSLA object info")&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;    Dim IsChild As Boolean = fi.GetValue(o)&lt;br /&gt;&lt;br /&gt;    If Not IsChild Then&lt;br /&gt;        Throw New Exception("The object is already in Root")&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;    fi.SetValue(o, False)&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Public Sub ToChild(ByVal o As Object)&lt;br /&gt;&lt;br /&gt;    Dim t As System.Type&lt;br /&gt;&lt;br /&gt;    t = o.GetType().BaseType()&lt;br /&gt;&lt;br /&gt;    If String.Compare(t.Name, "BusinessBase", True) &amp;gt; 0 Then&lt;br /&gt;        Throw New Exception("Not a CSLA object")&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;    Dim fi As FieldInfo = t.GetField("mIsChild", _&lt;br /&gt;            Reflection.BindingFlags.NonPublic Or BindingFlags.GetField Or BindingFlags.Instance _&lt;br /&gt;            Or BindingFlags.FlattenHierarchy Or BindingFlags.CreateInstance _&lt;br /&gt;            Or BindingFlags.SetField)&lt;br /&gt;&lt;br /&gt;    If fi Is Nothing Then&lt;br /&gt;        Throw New Exception("Unable to resolve CSLA object info")&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;    Dim IsChild As Boolean = fi.GetValue(o)&lt;br /&gt;&lt;br /&gt;    If IsChild Then&lt;br /&gt;        Throw New Exception("The object is already in Child")&lt;br /&gt;    End If&lt;br /&gt;&lt;br /&gt;    fi.SetValue(o, True)&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;strong&gt;Scenario: Switchng editable object (from child to root) inside a root collection&lt;/strong&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Get a clone copy of the editable object from the root collection&lt;br /&gt;&lt;br /&gt;eobjName = DirectCast(Me.BindingContext(mNameCol.Current, eobjName).Clone()&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Call ToRoot()&lt;br /&gt;&lt;br /&gt;ToRoot(eobjName)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Do necessary things to the root object you can also invoke Save() method&lt;br /&gt;&lt;br /&gt;'Do something with root object and save changes&lt;br /&gt;eobjName.Save()&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Call ToChild(), to reset the original setting&lt;br /&gt;&lt;br /&gt;ToChild(eobjName)&lt;br /&gt;&lt;/li&gt;&lt;li align="justify"&gt;Update root collection to update the content of it using the clone Object. Since there is no available method in BusinessBaseCollection to update the content of the collection you need to create a method UpdateCollection in the root collection&lt;pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Friend Sub UpdateCollection(ByVal o as eobjNameType)&lt;br /&gt;Dim i as Integer&lt;br /&gt;For i = 0 To List.Count - 1&lt;br /&gt;  If DirectCast(List.Item(i), eobjNameType).Equals(o) Then&lt;br /&gt;    List.Item(i) = o&lt;br /&gt;    Exit For&lt;br /&gt;  End If&lt;br /&gt;Next i&lt;br /&gt;End Sub&lt;/span&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I know this is a hack version against the original implementation and I guess a lot of you guys will object on what I did. =)&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113692792592724275?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113692792592724275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113692792592724275' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113692792592724275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113692792592724275'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/cslanet-switching-root-to-child-object.html' title='CSLA.NET Switching root to child object and vice versa'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113692114113227367</id><published>2006-01-11T03:25:00.000+08:00</published><updated>2006-01-12T03:44:13.416+08:00</updated><title type='text'>Mediaspot's IMS Go Live</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;span class="EmailStyle16"&gt;&lt;span style="color:black;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;MediaSpot’s Inventory Management and Sales System go live. It did run with a couple of errors. LOL… It’s really different when you are the one who develop and at the same time doing the testing. I’m glad that it was my cousin’s store there was not too much pressure when the errors pop up. LOL.. Right now, I managed to finish all the bugs that were found.&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="EmailStyle16"&gt;&lt;span style="color:black;"&gt;There was a little delay on the time frame of the deployment of the project due to the fact that I was using CSLA .NET rather than doing in using datasets. I know that doing it datasets will give me the speed in development, but I wanted it to be in object oriented approach in dealing with the business process and another reason is that I’m a fan of &lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;Rockford Lhotka&lt;/span&gt;&lt;span class="EmailStyle16"&gt;&lt;span style="color:black;"&gt;. LOL…&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;span class="EmailStyle16"&gt;&lt;span style="color:black;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;For the backend I was using MySQL latest version to take advantage with stored procedures, views and triggers. Why not MS-SQL? I guess the reason is clear MySQL is for free. =) But when I’ve found out the SQL 2005 Express is for free, it was too late because I was halfway doing it in MySQL. So my plan later is to create a database in SQL 2005 Express and modify the application to choose what type of backend database server to use. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;span class="EmailStyle16"&gt;&lt;span style="color:black;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;I have no regrets using MySQL, at least I did have a chance to know SQL syntax in MySQL. The shift from MS-SQL to MySQL during developing the stored procedures wasn’t that hard. I’ve found some bugs in MySQL and I’ll be sending it MySQL to clarify if is really a bug or the feature is not supported.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;span class="EmailStyle16"&gt;&lt;span style="color:black;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;MediaSpot is a store the sales a variety gadgets for cell phones, computers, digital cameras, DVD and MP3 players. It is located on JQS, which is beside UC Banilad Campus.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113692114113227367?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113692114113227367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113692114113227367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113692114113227367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113692114113227367'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/mediaspots-ims-go-live.html' title='Mediaspot&apos;s IMS Go Live'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113684164755788321</id><published>2006-01-10T05:07:00.000+08:00</published><updated>2006-01-10T05:36:52.303+08:00</updated><title type='text'>ASP.NET 2.0: Web.Config encryption</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;While researching for new evolving technologies, I came across to a blog entry that it is possible to encrypt some of the sections of Web.Config in ASP.NET 2.0. It immediately pop it in my mind that this will be useful hiding sensitive configuration settings like database connection string.&lt;br /&gt;&lt;br /&gt;Here is the original blog &lt;/span&gt;&lt;a href="http://odetocode.com/Blogs/scott/archive/2006/01.aspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;link&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; for more detail information. Enjoy!!!&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113684164755788321?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113684164755788321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113684164755788321' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113684164755788321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113684164755788321'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2006/01/aspnet-20-webconfig-encryption.html' title='ASP.NET 2.0: Web.Config encryption'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113383491780894184</id><published>2005-12-06T10:02:00.000+08:00</published><updated>2005-12-06T10:08:58.133+08:00</updated><title type='text'>Mini Inventory System - Delivery Module</title><content type='html'>&lt;span style="font-size:85%;"&gt;I've created the delivery detail table for the system and a stored procedure for insert. Wasn't able to completely finished the back-end side because I was writing my resignation letter and talking to my sister back from states.&lt;br /&gt;&lt;br /&gt;By tonight, I'll be finishing the delivery module tables and stored procedures. Hope that I can finish early so that I can start working with the business object side and the UI for transaction entry.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113383491780894184?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113383491780894184/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113383491780894184' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113383491780894184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113383491780894184'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2005/12/mini-inventory-system-delivery-module.html' title='Mini Inventory System - Delivery Module'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19581107.post-113374966476962936</id><published>2005-12-05T10:18:00.000+08:00</published><updated>2005-12-05T10:29:53.670+08:00</updated><title type='text'>Mini Inventory System</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Currently I'm designing a mini inventory system for my cousins business. The system records simple In and Out of the products that they are selling. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Uses &lt;strong&gt;MySQL 5.01&lt;/strong&gt; as the backend using stored procedures for data manipulation. Also I was using &lt;strong&gt;CSLA .NET &lt;/strong&gt;to handle the business objects. I know this is too much work, but I'm not used to create applications using wizards. ;-)&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;I just finished 3 maintenance modules:&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Customer&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Supplier&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;User&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Product Item&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p align="justify"&gt;&lt;span style="font-size:85%;"&gt;Tonight (Philippine time), I'll be designing the delivery tables and its stored procedures. Hope I can finish this weekend.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;Feed Me&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19581107-113374966476962936?l=gdsworks.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gdsworks.blogspot.com/feeds/113374966476962936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19581107&amp;postID=113374966476962936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113374966476962936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19581107/posts/default/113374966476962936'/><link rel='alternate' type='text/html' href='http://gdsworks.blogspot.com/2005/12/mini-inventory-system.html' title='Mini Inventory System'/><author><name>glen2y</name><uri>http://www.blogger.com/profile/00364720214187955610</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/hello/108/9204/400/photo3.jpg'/></author><thr:total>0</thr:total></entry></feed>
