<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.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>Ismail Hamzah</title><link>http://geeks.netindonesia.net/blogs/go2ismail/default.aspx</link><description>.NET</description><dc:language>en</dc:language><generator>CommunityServer 2007.1 (Build: 20917.1142)</generator><item><title>Calling Sybase Stored Procedure From DAL</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/30/calling-sybase-stored-procedure-from-dal.aspx</link><pubDate>Wed, 30 Apr 2008 02:23:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:45880</guid><dc:creator>go2ismail</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=45880</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/30/calling-sybase-stored-procedure-from-dal.aspx#comments</comments><description>&lt;p&gt;Memanggil stored procedure MS SQL dari DAL merupakan hal yang biasa dan banyak sekali dijumpai contoh-contohnya. Namun memanggil stored procedure Sybase cukup agak tricky, setidaknya untuk saya pribadi. Pada awalnya saya berfikir memanggil Stored Procedure pasti polanya sama aja untuk database manapun tapi ternyata tidak. Untuk lebih meresapi apa yang telah saya tulis diatas mari disimak potongan source code di bawah ini:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;void&lt;/font&gt;&lt;font size="2"&gt; ADD(&lt;/font&gt;&lt;font color="#008080" size="2"&gt;GAC_OFFICES_BO&lt;/font&gt;&lt;font size="2"&gt; obj)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbCommand&lt;/font&gt;&lt;font size="2"&gt; cmd = DB.GetStoredProcCommand(&lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;{call SP_GAC_OFFICES_ADD(?, ?, ?, ?, ?, ?, ?, ?)}&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;);&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;OFFICE_CODE&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.String, obj.OFFICE_CODE);&lt;/p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;OFFICE_NAME&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.String, obj.OFFICE_NAME);&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;MODE&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.String, obj.MODE);&lt;/p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;ACTIVE_FLAG&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.String, obj.ACTIVE_FLAG);&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;CREATED_BY&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.String, obj.CREATED_BY);&lt;/p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;CREATED_DATE&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.DateTime, obj.CREATED_DATE);&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;UPDATED_BY&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.String, obj.UPDATED_BY);&lt;/p&gt;DB.AddInParameter(cmd, &lt;/font&gt;&lt;font color="#800000" size="2"&gt;&amp;quot;UPDATED_DATE&amp;quot;&lt;/font&gt;&lt;font size="2"&gt;, &lt;/font&gt;&lt;font color="#008080" size="2"&gt;DbType&lt;/font&gt;&lt;font size="2"&gt;.DateTime, obj.UPDATED_DATE);&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;DB.ExecuteNonQuery(cmd);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Diatas adalah sebuah method yang berguna untuk menambahkan data ke database. Method tersebut memanggil sebuah stored procedure yang bernama SP_GAC_OFFICES_ADD dengan inputan parameter sebanyak delapan buah. Dapat dilihat, Stored Procedure dipanggil dengan cara menggunakan kurung kurawal, kata &amp;quot;call&amp;quot;, nama Stored Procedure dan kemudian simbol tanda tanya. Banyak simbol tanda tanya yang digunakan adalah sejumlah parameter dari stored procedure yang bersangkutan. &lt;/p&gt;
&lt;p&gt;Cara menambahkan parameter hanya memiliki sedikit perbedaan yaitu tidak digunakannya simbol &amp;quot;a keong (@)&amp;quot; didepan nama parameter.&lt;/p&gt;
&lt;p&gt;buat saya, perbedaan ini telah membuat saya sedikit &amp;quot;headache&amp;quot; ketika membuat POC dan sebagai kenang-kenangan maka saya tuliskan di blog ini :-)&lt;/p&gt;
&lt;p&gt;note:&lt;/p&gt;Objek DB adalah objek dari kelas &lt;font size="2"&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;Microsoft.Practices.EnterpriseLibrary.Data.Database&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/30/calling-sybase-stored-procedure-from-dal.aspx&amp;amp;subject=Calling Sybase Stored Procedure From DAL" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/30/calling-sybase-stored-procedure-from-dal.aspx&amp;amp;t=Calling+Sybase+Stored+Procedure+From+DAL" target="_blank" title="Submit Calling Sybase Stored Procedure From DAL to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/30/calling-sybase-stored-procedure-from-dal.aspx&amp;amp;title=Calling+Sybase+Stored+Procedure+From+DAL" target="_blank" title="Submit Calling Sybase Stored Procedure From DAL to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/30/calling-sybase-stored-procedure-from-dal.aspx&amp;amp;phase=2" target="_blank" title="Submit Calling Sybase Stored Procedure From DAL to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/30/calling-sybase-stored-procedure-from-dal.aspx&amp;amp;title=Calling+Sybase+Stored+Procedure+From+DAL" target="_blank" title="Add Calling Sybase Stored Procedure From DAL to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=45880" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>IGW816: Exceptional Experience</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/23/igw816-exceptional-experience.aspx</link><pubDate>Wed, 23 Apr 2008 10:39:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:45157</guid><dc:creator>go2ismail</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=45157</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/23/igw816-exceptional-experience.aspx#comments</comments><description>&lt;p&gt;like the title said, &amp;quot;IGW816: Exceptional Experience&amp;quot;&lt;/p&gt;
&lt;p&gt;different people from different country working together for one goal :-)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stewart Herbert&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Eva Navratil Freitag&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ilias Avramidis&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Kanagarajan&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ashan B. Silva&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;thank you for everything&lt;/p&gt;
&lt;p&gt;good bye &amp;quot;Spicy Spirit of 6&amp;quot; smile.... :-)&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/23/igw816-exceptional-experience.aspx&amp;amp;subject=IGW816: Exceptional Experience" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/23/igw816-exceptional-experience.aspx&amp;amp;t=IGW816%3a+Exceptional+Experience" target="_blank" title="Submit IGW816: Exceptional Experience to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/23/igw816-exceptional-experience.aspx&amp;amp;title=IGW816%3a+Exceptional+Experience" target="_blank" title="Submit IGW816: Exceptional Experience to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/23/igw816-exceptional-experience.aspx&amp;amp;phase=2" target="_blank" title="Submit IGW816: Exceptional Experience to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/23/igw816-exceptional-experience.aspx&amp;amp;title=IGW816%3a+Exceptional+Experience" target="_blank" title="Add IGW816: Exceptional Experience to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=45157" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/OOT/default.aspx">OOT</category></item><item><title>Custom RoleProvider</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/10/custom-roleprovider.aspx</link><pubDate>Thu, 10 Apr 2008 05:25:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:44040</guid><dc:creator>go2ismail</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=44040</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/10/custom-roleprovider.aspx#comments</comments><description>&lt;p&gt;Meneruskan artikel sebelumnya tentang custom membership provider, maka kali ini saya akan coba tuliskan sekilas tentang custom role provider. Implementasi dari custom role provider kurang lebih sama dengan implementasi custom membership provider yaitu melalui tiga langkah mudah yaitu: membuat kelas turunan, meng-override method dan terakhir adalah konfigurasi web.config. &lt;/p&gt;
&lt;p&gt;1. Membuat kelas turunan&lt;/p&gt;
&lt;p&gt;untuk custom role provider ini, kelas yang akan dibuat diturunkan dari kelas RoleProvider.&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;namespace&lt;/font&gt;&lt;font size="2"&gt; Provider&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;SybaseRoleProvider&lt;/font&gt;&lt;font size="2"&gt; : &lt;/font&gt;&lt;font color="#008080" size="2"&gt;RoleProvider&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;note: penamaan kelas turunan adalah bebas, saya menggunakan &amp;quot;Sybase&amp;quot; karena client menginginkan saya meng-custom role and membership dengan menggunakan Sybase sebagai beck-end. Awalan &amp;quot;Sybase&amp;quot; akan mengingatkan bahwa beck-end yang hendak digunakan adalah Sybase.&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;2. Meng-override method GetRolesForUser&lt;/p&gt;
&lt;p&gt;Method GetRolesForUser akan mengambil roles dari seorang user dengan menggunakan informasi username yang diinputkan. Isi dari method ini adalah akses ke database yang akan mengembalikan nama-nama roles yang dimiliki oleh seorang user berdasarkan username nya. &lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;override&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt;[] GetRolesForUser(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; username)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;keluaran dari method GetRolesForUser adalah array string yaitu nama-nama roles yang dimilki oleh user tertentu.&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;3. Konfigurasi web.config&lt;/p&gt;
&lt;p&gt;langkah terakhir adalah konfigurasi web.config&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;roleManager&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;enabled&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;true&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;defaultProvider&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Provider.SybaseRoleProvider&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;providers&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;clear&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;add&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;applicationName&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;connectionStringName&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ConnectionString&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Provider.SybaseRoleProvider&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;type&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Provider.SybaseRoleProvider&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;/p&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;providers&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;roleManager&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;and finish :-)&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000"&gt;HTH&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/10/custom-roleprovider.aspx&amp;amp;subject=Custom RoleProvider" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/10/custom-roleprovider.aspx&amp;amp;t=Custom+RoleProvider" target="_blank" title="Submit Custom RoleProvider to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/10/custom-roleprovider.aspx&amp;amp;title=Custom+RoleProvider" target="_blank" title="Submit Custom RoleProvider to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/10/custom-roleprovider.aspx&amp;amp;phase=2" target="_blank" title="Submit Custom RoleProvider to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/04/10/custom-roleprovider.aspx&amp;amp;title=Custom+RoleProvider" target="_blank" title="Add Custom RoleProvider to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=44040" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Custom MembershipProvider</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/26/custom-membershipprovider.aspx</link><pubDate>Wed, 26 Mar 2008 08:04:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:43256</guid><dc:creator>go2ismail</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=43256</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/26/custom-membershipprovider.aspx#comments</comments><description>&lt;p&gt;Custom MembershipProvider diperlukan ketika aplikasi yang dikembangkan akan tidak menggunakan default provider untuk membership. Default provider yang digunakan adalah SqlMembershipProvider. Adapun pembuatan custom MembershipProvider sangat sederhana yaitu cukup meng-override method ValidateUser dari kelas MembershipProvider. Berikut adalah tiga langkah mudah pembuatan custom MembershipProvider:&lt;/p&gt;
&lt;p&gt;1. Membuat sebuah kelas yang diturunkan dari kelas MembershipProvider&lt;/p&gt;
&lt;p&gt;Membuat custom MembershipProvider berarti membuat sebuah kelas baru yang diturunkan dari kelas MembershipProvider.&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;namespace&lt;/font&gt;&lt;font size="2"&gt; Provider&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&amp;nbsp;&lt;font color="#0000ff" size="2"&gt;&lt;/p&gt;
&lt;p&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;class&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;MyCustomMembershipProvider&lt;/font&gt;&lt;font size="2"&gt; : &lt;/font&gt;&lt;font color="#008080" size="2"&gt;MembershipProvider&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;{&amp;nbsp;&lt;font color="#0000ff" size="2"&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;override&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; ValidateUser(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; username, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; password)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;&lt;font color="#008000" size="2"&gt;
&lt;p&gt;// code untuk validasi user goes here&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;}&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;2. Meng-override method ValidateUser&lt;/p&gt;
&lt;p&gt;Setelah kerangka kelas dibuat, langkah berikutnya adalah mengisikan code untuk mengoverride method ValidateUser. note: method lainnya dapat dioverride sesuai kebutuhan sehingga tidak harus semua method dari kelas MembershipProvider di override.&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;public&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;override&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; ValidateUser(&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; username, &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; password)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/font&gt;&lt;font color="#008080" size="2"&gt;USERS_BO&lt;/font&gt;&lt;font size="2"&gt; user = &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;new&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#008080" size="2"&gt;USERS_BO&lt;/font&gt;&lt;font size="2"&gt;();&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;user = &lt;/font&gt;&lt;font color="#008080" size="2"&gt;USERS_MGR&lt;/font&gt;&lt;font size="2"&gt;.GETUSERSBYNAME(username);&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (user != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;if&lt;/font&gt;&lt;font size="2"&gt; (user.PASSWORD != &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;null&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;string&lt;/font&gt;&lt;font size="2"&gt; dbPassword = user.PASSWORD;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;bool&lt;/font&gt;&lt;font size="2"&gt; status = dbPassword.Equals(password);&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; status;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;else&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;else&lt;/p&gt;&lt;/font&gt;&lt;font size="2"&gt;
&lt;p&gt;{&lt;/p&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;return&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;false&lt;/font&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;isi code diatas sangat sederhana, yaitu membandingkan password yang dimasukan oleh user di login screen dengan password yang sudah disimpan didalam database untuk user tertentu (yang diindikasikan melalui username).&lt;/p&gt;&lt;/font&gt;
&lt;p&gt;3. Konfigurasi di web.config&lt;/p&gt;
&lt;p&gt;and the last step nya adalah melakukan sedikit konfigurasi di web.config. Konfigurasi dilakukan agar aplikasi kita mengenali dan kemudian menggunakan custom MembershipProvider yang telah dibuat. adapun konfigurasi yang dilakukan adalah cukup menambahkan code seperti berikut:&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;membership&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;defaultProvider&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Provider.&lt;font color="#008080"&gt;MyCustomMembershipProvider&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;providers&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;clear&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;lt;&lt;/font&gt;&lt;font color="#800000" size="2"&gt;add&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;name&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Provider.&lt;font color="#008080"&gt;MyCustomMembershipProvider&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;type&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Provider.&lt;font color="#008080"&gt;MyCustomMembershipProvider&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;applicationName&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;/font&gt;&lt;font color="#ff0000" size="2"&gt;connectionStringName&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;=&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ConnectionString&lt;/font&gt;&lt;font size="2"&gt;&amp;quot;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;/&amp;gt;&lt;/p&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;providers&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; 
&lt;p&gt;&amp;lt;/&lt;/font&gt;&lt;font color="#800000" size="2"&gt;membership&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000" size="3"&gt;Dapat dilihat, konfigurasi yang dilakukan adalah &amp;quot;memperkenalkan&amp;quot; custom MembershipProvider pada aplikasi dengan cara menuliskan nama kelas si custom MembershipProvider yang diawali dengan nama namespacenya.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#000000" size="3"&gt;done :-)&lt;/font&gt;&lt;/p&gt;&lt;/font&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/26/custom-membershipprovider.aspx&amp;amp;subject=Custom MembershipProvider" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/26/custom-membershipprovider.aspx&amp;amp;t=Custom+MembershipProvider" target="_blank" title="Submit Custom MembershipProvider to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/26/custom-membershipprovider.aspx&amp;amp;title=Custom+MembershipProvider" target="_blank" title="Submit Custom MembershipProvider to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/26/custom-membershipprovider.aspx&amp;amp;phase=2" target="_blank" title="Submit Custom MembershipProvider to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/26/custom-membershipprovider.aspx&amp;amp;title=Custom+MembershipProvider" target="_blank" title="Add Custom MembershipProvider to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=43256" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>ClientScript.RegisterStartupScript doesn't work with ASP.NET AJAX</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/24/clientscript-registerstartupscript-doesn-t-work-with-asp-net-ajax.aspx</link><pubDate>Mon, 24 Mar 2008 08:05:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:43046</guid><dc:creator>go2ismail</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=43046</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/24/clientscript-registerstartupscript-doesn-t-work-with-asp-net-ajax.aspx#comments</comments><description>&lt;p&gt;Dalam day to day programming saya banyak menggunakan function javascript alert. Misalnya untuk memberitahu user bahwa proses yang dia kerjakan berhasil atau tidak.&lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;try&lt;/p&gt;
&lt;p&gt;&lt;/font&gt;{&lt;/p&gt;
&lt;p&gt;//code untuk menyimpan data ke database&lt;/p&gt;
&lt;p&gt;&lt;span class="searchword"&gt;ClientScript.RegisterStartupScript&lt;/span&gt;(&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;(&lt;font color="#0000ff"&gt;string&lt;/font&gt;), &lt;font color="#a52a2a"&gt;&amp;quot;Success&amp;quot;&lt;/font&gt;, &lt;font color="#a52a2a"&gt;&amp;quot;alert(&amp;#39;Data saved succesfully.&amp;#39;);&amp;quot;&lt;/font&gt;, &lt;font color="#0000ff"&gt;true&lt;/font&gt;);&lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;&lt;font color="#0000ff" size="2"&gt;catch&lt;/font&gt;&lt;font size="2"&gt; (&lt;/font&gt;&lt;font color="#008080" size="2"&gt;Exception&lt;/font&gt;&lt;font size="2"&gt;)&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; 
&lt;p&gt;&lt;/font&gt;{&lt;/p&gt;
&lt;p&gt;&lt;span class="searchword"&gt;ClientScript.RegisterStartupScript&lt;/span&gt;(&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;(&lt;font color="#0000ff"&gt;string&lt;/font&gt;), &lt;font color="#a52a2a"&gt;&amp;quot;Fail&amp;quot;&lt;/font&gt;, &lt;font color="#a52a2a"&gt;&amp;quot;alert(&amp;#39;Data not&amp;nbsp;saved.&amp;#39;);&amp;quot;&lt;/font&gt;, &lt;font color="#0000ff"&gt;true&lt;/font&gt;);&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;Namun masalah muncul ketika saya menggunakan Updatepanel, yaitu function alert tidak bekerja sebagaimana mestinya. Beruntung saya menemukan blognya &lt;a class="" href="http://gotjeep.net/Blogs/CommentView,guid,4be2f278-12e4-40d5-b154-0e8ecaf18fac.aspx"&gt;Scott Klueppel &lt;/a&gt;dan mendapatkan solusi dari blog tersebut.&lt;/p&gt;
&lt;p&gt;Solusinya adalah menggantikan ClientScript.RegisterStartupScript dengan ScriptManager&lt;font color="#000000"&gt;.RegisterStartupScript jadi:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="searchword"&gt;ClientScript.RegisterStartupScript&lt;/span&gt;(&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;(&lt;font color="#0000ff"&gt;string&lt;/font&gt;), &lt;font color="#a52a2a"&gt;&amp;quot;Success&amp;quot;&lt;/font&gt;, &lt;font color="#a52a2a"&gt;&amp;quot;alert(&amp;#39;Data saved succesfully.&amp;#39;);&amp;quot;&lt;/font&gt;, &lt;font color="#0000ff"&gt;true&lt;/font&gt;);&lt;/p&gt;
&lt;p&gt;diganti dengan&lt;/p&gt;
&lt;p&gt;&lt;font color="#008080"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;ScriptManager&lt;font color="#000000"&gt;.RegisterStartupScript(&lt;font color="#0000ff"&gt;this&lt;/font&gt;.&lt;span class="searchword"&gt;updatePanel&lt;/span&gt;, &lt;/font&gt;&lt;font color="#0000ff"&gt;typeof&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#0000ff"&gt;string&lt;/font&gt;&lt;font color="#000000"&gt;), &lt;font color="#a52a2a"&gt;&amp;quot;Success&amp;quot;&lt;font color="#000000"&gt;, &lt;/font&gt;&lt;font color="#a52a2a"&gt;&amp;quot;alert(&amp;#39;Data saved succesfully.&amp;#39;);&amp;quot;&lt;/font&gt;&lt;/font&gt;, &lt;/font&gt;&lt;font color="#0000ff"&gt;true&lt;/font&gt;&lt;font color="#000000"&gt;);&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;note: updatePanel adalah nama UpdatePanel yang digunakan.&lt;/p&gt;
&lt;p&gt;thanks scott!!!&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/24/clientscript-registerstartupscript-doesn-t-work-with-asp-net-ajax.aspx&amp;amp;subject=ClientScript.RegisterStartupScript doesn't work with ASP.NET AJAX" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/24/clientscript-registerstartupscript-doesn-t-work-with-asp-net-ajax.aspx&amp;amp;t=ClientScript.RegisterStartupScript+doesn%27t+work+with+ASP.NET+AJAX" target="_blank" title="Submit ClientScript.RegisterStartupScript doesn't work with ASP.NET AJAX to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/24/clientscript-registerstartupscript-doesn-t-work-with-asp-net-ajax.aspx&amp;amp;title=ClientScript.RegisterStartupScript+doesn%27t+work+with+ASP.NET+AJAX" target="_blank" title="Submit ClientScript.RegisterStartupScript doesn't work with ASP.NET AJAX to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/24/clientscript-registerstartupscript-doesn-t-work-with-asp-net-ajax.aspx&amp;amp;phase=2" target="_blank" title="Submit ClientScript.RegisterStartupScript doesn't work with ASP.NET AJAX to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/24/clientscript-registerstartupscript-doesn-t-work-with-asp-net-ajax.aspx&amp;amp;title=ClientScript.RegisterStartupScript+doesn%27t+work+with+ASP.NET+AJAX" target="_blank" title="Add ClientScript.RegisterStartupScript doesn't work with ASP.NET AJAX to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=43046" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>ASP.NET 2.0 Layered Application : Skin Dive ;-)</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-skin-dive.aspx</link><pubDate>Tue, 11 Mar 2008 07:00:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:41963</guid><dc:creator>go2ismail</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=41963</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-skin-dive.aspx#comments</comments><description>&lt;p&gt;Pengalaman skin dive pertama saya adalah di pantai anyer bersama temen-temen dari SIAWARE8. Skin dive nya tidak terlalu menarik namun anak-anak SIAWARE8 nya sangat asik. Ok, mudah-mudahan skin dive di pantai &amp;quot;Layered Application&amp;quot; bisa lebih menarik ;-)&lt;/p&gt;
&lt;p&gt;BO (Bussines Object)&lt;/p&gt;
&lt;p&gt;Pada layer BO berkumpul banyak kelas yang menggambarkan sebuah record dari sebuah tabel. Kelasnya hanya berisi code get dan set yang akan mengisi dan mengambil nilai sebuah properties. Propertiesnya merupakan kolom-kolom dari tabel yang hendak di petakan menjadi BO. Misalkan ada tabel seperti dibawah:&lt;/p&gt;
&lt;p&gt;&lt;img height="64" alt="" src="http://farm4.static.flickr.com/3172/2325580095_7cc759cec5_o.jpg" width="161" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;maka kelas BO yang bersesuaian dengan tabel diatas adalah seperti berikut:&lt;/p&gt;
&lt;p&gt;&lt;img height="510" alt="" src="http://farm4.static.flickr.com/3134/2325582773_b6ae92444c_o.jpg" width="259" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;dapat dilihat bahwa kelas BO hanya berisi get dan set.&lt;/p&gt;
&lt;p&gt;DAL (Data Access Layer)&lt;/p&gt;
&lt;p&gt;Lapisan DAL berisi kelas-kelas yang mengandung code-code yang mengakses database secara langsung. Disinilah tempat yang paling baik untuk memanggil stored procedure yang ada di database. Pada&amp;nbsp;DAL, saya membuat sebuah kelas&amp;nbsp;yang akan dijadikan induk bagi semua kelas yang berada di DAL. si induk ini hanya bertugas membuat&amp;nbsp;object database dengan menggunakan informasi connection string dari web.config. Why? agar proses pembuatan&amp;nbsp;object database hanya dilakukan di satu tempat, jadi ketika ada perubahan informasi connection string kita hanya akan melakukan perubahan di satu tempat saja, tidak di semua kelas DAL.&amp;nbsp;Berikut adalah contoh kelas induk di&amp;nbsp;DAL yang saya beri nama kelas DAL:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;img height="510" alt="" src="http://farm3.static.flickr.com/2389/2326412906_545c7d760c_o.jpg" width="564" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;dan berikut adalah kelas di DAL yang diturunkan dari kelas induk diatas:&lt;/p&gt;
&lt;p&gt;&lt;img height="460" alt="" src="http://farm3.static.flickr.com/2323/2325597397_5f9833bf95.jpg" width="500" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Dapat dilihat bahwa kelas yang terdapat di lapisan BO digunakan disini. Method GETALLEMPLOYEE memanggil stored procedure DEMO_EMP_GET_ALL(). Dan karena yang akan dikembalikan oleh SP tersebut adalah banyak record, maka digunakanlah List dari BO untuk menangkap kembalian dari SP. &lt;/p&gt;
&lt;p&gt;BLL (Bussiness Logic Layer)&lt;/p&gt;
&lt;p&gt;Kelas-kelas di BLL akan memanggil method-method yang terdapat di DAL. berikut adalah contohnya:&lt;/p&gt;
&lt;p&gt;&lt;img height="320" alt="" src="http://farm4.static.flickr.com/3022/2326423612_4c1d8e2edb_o.jpg" width="460" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;BLL hanya memanggil method dari DAL. Kemudian, si BLL akan dipanggil oleh UI, berikut adalah contoh pemanggilan BLL oleh UI:&lt;/p&gt;
&lt;p&gt;&lt;img height="40" alt="" src="http://farm3.static.flickr.com/2168/2326427212_2e745ed203.jpg" width="500" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;note: saya membuat BO, DAL dan BLL menggunakan C#, namun UI menggunakan VB.NET. .NET canggih kan :-)&lt;/p&gt;
&lt;p&gt;untuk memperdalam, silahkan download DotNetNuke dan install pada mesin kesayangan Anda. setelah itu selamat &amp;quot;menelanjangi&amp;quot; DNN dan selamat terkagum-kagum dengan arsitekturnya :D&lt;/p&gt;
&lt;p&gt;that just my two cents.&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-skin-dive.aspx&amp;amp;subject=ASP.NET 2.0 Layered Application : Skin Dive ;-)" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-skin-dive.aspx&amp;amp;t=ASP.NET+2.0+Layered+Application+%3a+Skin+Dive+%3b-)" target="_blank" title="Submit ASP.NET 2.0 Layered Application : Skin Dive ;-) to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-skin-dive.aspx&amp;amp;title=ASP.NET+2.0+Layered+Application+%3a+Skin+Dive+%3b-)" target="_blank" title="Submit ASP.NET 2.0 Layered Application : Skin Dive ;-) to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-skin-dive.aspx&amp;amp;phase=2" target="_blank" title="Submit ASP.NET 2.0 Layered Application : Skin Dive ;-) to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-skin-dive.aspx&amp;amp;title=ASP.NET+2.0+Layered+Application+%3a+Skin+Dive+%3b-)" target="_blank" title="Add ASP.NET 2.0 Layered Application : Skin Dive ;-) to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=41963" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>ASP.NET 2.0 Layered Application : Introduction</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-introduction.aspx</link><pubDate>Tue, 11 Mar 2008 05:43:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:41957</guid><dc:creator>go2ismail</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=41957</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-introduction.aspx#comments</comments><description>&lt;p&gt;Melihat code yang campur aduk adalah hal yang memusingkan apalagi code tersebut dibuat oleh programmer lain. Salah satu teknik yang saya lihat cukup berguna adalah sebuah teknik yang disebut layered application. Dari namanya saja sudah dapat diterka yaitu aplikasi yang berlapis, apa siy maxutnya? oke please bear on me.&lt;/p&gt;
&lt;p&gt;Secara kasar&amp;nbsp;dapat kita katakan bahwa aplikasi yang&amp;nbsp;dibuat oleh para developer pada intinya adalah menyimpan data ke database dan kemudian menampilkan data yang telah di simpan tersebut. Pada jaman &amp;quot;jahiliyah&amp;quot; dulu biasanya saya menaruh semua code pada sebuah file kelas dan&amp;nbsp;biasanya merupakan code behind dari file aspx. Code yang berhubungan dengan UI saya taro di sana, code yang berhubungan dengan akses data ke database saya taro juga disana, code yang berhubungan dengan bisnis proses saya taro juga&amp;nbsp;disana, pokoknya saya&amp;nbsp;campurkan semuanya. Aplikasi&amp;nbsp;siy bisa berjalan lancar, namun&amp;nbsp;ketika satu minggu kemudian saya lihat kembali itu source code, mendadak kepala ini jadi puyeng. &lt;/p&gt;
&lt;p&gt;Beruntung pada masa awal karir profesional, saya bergabung dengan sekelompok developer hebat, arsitek hebat dan&amp;nbsp;projek yang hebat pula. Disitu saya melihat code di pisah-pisahkan berdasarkan fungsi yang diemban oleh si code. Code yang berhubungan dengan&amp;nbsp;data akses dibuat menjadi sebuah projek tersendiri. Code yang berhubungan dengan Bisnis&amp;nbsp;Proses dibuat menjadi sebuah projek sendiri dan tentu saja UI nya&amp;nbsp;juga dibuat menjadi sebuah projek tersendiri.&amp;nbsp;Memang, it a little bit slow at first, tapi kemudian progressnya saya lihat bagus sekali.&amp;nbsp;Let stop talking and let see picture ( i love picture):&lt;/p&gt;
&lt;p&gt;&lt;img height="376" alt="" src="http://farm4.static.flickr.com/3114/2325473419_d52a0fa970.jpg" width="500" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Gambar diatas adalah gambar yang&amp;nbsp;tergambar di kepala saya setelah melihat sorce code&amp;nbsp;sebuah solution. Database&amp;nbsp;digunakan untuk menyimpan data aktual. UI digunakan untuk&amp;nbsp;&amp;quot;melihat&amp;quot; dan&amp;nbsp;&amp;quot;memanipulasi&amp;quot; data yang telah tersimpan.&amp;nbsp;DAL adalah sebuah project&amp;nbsp;(yang terdiri dari banyak kelas) yang khusus memiliki fungsi akses data yaitu akses langsung ke database. Disinilah berkumpul code-code yang&amp;nbsp;memanggil stored procedure di database. BLL adalah sebuah project (yang terdiri dari banyak kelas juga) yang khusus mengakses semua code yang berada di DAL. Code-code yang berada di BLL akan digunakan secara langsung oleh UI. BO adalah sebuah project yang terdiri dari kelas-kelas yang menggambarkan sebuah record dari suatu tabel. Ketika DAL memanggil SP yang mengembalikan banyak record maka kelas yang terdapat di BO akan dibungkus menjadi sebuah List.&amp;nbsp;Cukup rapih bukan?&lt;/p&gt;
&lt;p&gt;Kelas-kelas yang terdapat dalam project BO dapat digunakan pada setiap lapis (layer). Jadi, DAL dapat menggunakan BO, BLL dapat menggunakan BO dan UI dapat menggunakan BO. Berikut adalah gambar&amp;nbsp;dari sebuah solution explorer yang telah menerapkan konsep layered application:&lt;/p&gt;
&lt;p&gt;&lt;img height="357" alt="" src="http://farm4.static.flickr.com/3283/2326293360_5917f84a31.jpg" width="233" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;dan dibawah adalah gambar yang memperlihatkan code dari BLL:&lt;/p&gt;
&lt;p&gt;&lt;img height="240" alt="" src="http://farm4.static.flickr.com/3006/2326346382_de3a6bbc4c_o.jpg" width="571" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;dari code diatas dapat dilihat bahwa kelas BO dibungkus menjadi sebuah List, &amp;nbsp;yang tentu saja&amp;nbsp;dapat dipahami karena&amp;nbsp;method GETALLEMPLOYEE akan mengembalikan banyak record.&amp;nbsp;Dari code diatas juga dapat dilihat bagaimana BLL menggunakan method yang terdapat dalam DAL yang diakses dengan sangat mudah, cukup dengan di-&amp;quot;dot&amp;quot; :-)&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-introduction.aspx&amp;amp;subject=ASP.NET 2.0 Layered Application : Introduction" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-introduction.aspx&amp;amp;t=ASP.NET+2.0+Layered+Application+%3a+Introduction" target="_blank" title="Submit ASP.NET 2.0 Layered Application : Introduction to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-introduction.aspx&amp;amp;title=ASP.NET+2.0+Layered+Application+%3a+Introduction" target="_blank" title="Submit ASP.NET 2.0 Layered Application : Introduction to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-introduction.aspx&amp;amp;phase=2" target="_blank" title="Submit ASP.NET 2.0 Layered Application : Introduction to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/11/asp-net-2-0-layered-application-introduction.aspx&amp;amp;title=ASP.NET+2.0+Layered+Application+%3a+Introduction" target="_blank" title="Add ASP.NET 2.0 Layered Application : Introduction to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=41957" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>The breakpoint will not currently be hit. No symbols have been loaded for this document </title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/10/the-breakpoint-will-not-currently-be-hit-no-symbols-have-been-loaded-for-this-document.aspx</link><pubDate>Mon, 10 Mar 2008 09:15:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:41880</guid><dc:creator>go2ismail</dc:creator><slash:comments>0</slash:comments><description>&lt;p&gt;Saya mendevelop aplikasi web dengan menggunakan VS2005. Setelah sebelumnya semuanya berjalan lancar, tiba-tiba pas mau nge-debug terjadi sesuatu yang cukup memusingkan. Breakpoint yang saya set di source code tidak &amp;quot;nyangkut-nyangkut&amp;quot;. Cukup sangat memusingkan karena de-bugging adalah hal yang sangat principal. setelah googling di internet saya menemukan tips yang kemudian menjadi solusi atas permasalahan saya (banyak banget developer arround the world yang mengalami masalah ini dan banyak banget tips yang disuguhkan).&lt;/p&gt;
&lt;p&gt;berikut adalah tips yang menjadi solusi untuk saya:&lt;/p&gt;
&lt;p&gt;&amp;quot;reset Internet Explorer&amp;quot;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;caranya:&lt;/p&gt;
&lt;p&gt;1. Pilih Tools kemudian Internet Options&lt;/p&gt;
&lt;p&gt;2. Kemudian pilih tab Advanced dan klik tombol Reset&lt;/p&gt;
&lt;p&gt;3. That&amp;#39;s it!!!&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/10/the-breakpoint-will-not-currently-be-hit-no-symbols-have-been-loaded-for-this-document.aspx&amp;amp;subject=The breakpoint will not currently be hit. No symbols have been loaded for this document " target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/10/the-breakpoint-will-not-currently-be-hit-no-symbols-have-been-loaded-for-this-document.aspx&amp;amp;t=The+breakpoint+will+not+currently+be+hit.+No+symbols+have+been+loaded+for+this+document+" target="_blank" title="Submit The breakpoint will not currently be hit. No symbols have been loaded for this document  to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/10/the-breakpoint-will-not-currently-be-hit-no-symbols-have-been-loaded-for-this-document.aspx&amp;amp;title=The+breakpoint+will+not+currently+be+hit.+No+symbols+have+been+loaded+for+this+document+" target="_blank" title="Submit The breakpoint will not currently be hit. No symbols have been loaded for this document  to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/10/the-breakpoint-will-not-currently-be-hit-no-symbols-have-been-loaded-for-this-document.aspx&amp;amp;phase=2" target="_blank" title="Submit The breakpoint will not currently be hit. No symbols have been loaded for this document  to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2008/03/10/the-breakpoint-will-not-currently-be-hit-no-symbols-have-been-loaded-for-this-document.aspx&amp;amp;title=The+breakpoint+will+not+currently+be+hit.+No+symbols+have+been+loaded+for+this+document+" target="_blank" title="Add The breakpoint will not currently be hit. No symbols have been loaded for this document  to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=41880" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>ANFIS, EWS dan Trauma Pribadi</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/29/anfis-ews-dan-trauma-pribadi.aspx</link><pubDate>Sat, 29 Dec 2007 01:57:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:31704</guid><dc:creator>go2ismail</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=31704</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/29/anfis-ews-dan-trauma-pribadi.aspx#comments</comments><description>&lt;p&gt;Beberapa hari ini, saya merasakan jakarta memiliki suhu yang sudah sangat familiar sekali dengan tubuh saya. Yep, beberapa hari ini saya merasakan suhu di jakarta seperti suhu di bandung, sejuk. Mungkin karena seringnya suasana berawan yang diikuti angin kencang dan bahkan diselingi dengan hujan pada siang harinya. Sambil &amp;quot;nyengir&amp;quot; keheranan saya mengatakan pada diri saya sendiri, koq jakarta jadi dingin gini ya, jadi pengen beli &amp;quot;surabi imut&amp;quot; di gerlong, hehehe.&lt;/p&gt;
&lt;p&gt;Namun tidak lama setelah itu, sensor trauma dalam diri saya menyala. Saya tiba-tiba teringat pengalaman seru yang cenderung menyebalkan yang pernah saya alami. Beberapa bulan setelah saya menginjakan kaki dijakarta, i&amp;#39;ve got my first banjir. Hehehe yep, saat itu adalah suatu pagi ketika saya berangkat dari kostan menuju lokasi projek pertama saya di Astra Internasional didaerah sunter jakarta utara. Sepanjang jalan Yos Sudarso saya mendorong motor berplat D kesayangan saya. Si sayang cuman keliatan Stang nya doang, sedangkan dari jok sampai kebawah bener2 nggak keliatan ditelen air banjir, buset!!!. Dengan fikiran yang butek sebutek air banjir, saya mendorong motor saya dari carefour cempaka mas sampai AI sunter. Gila.. saya dorong motor dari jam 7 pagi dan sampai ke AI sekitar jam 11, saya ingat hari itu adalah hari jum&amp;#39;at. &lt;/p&gt;
&lt;p&gt;Selepas menikmati sensor traumatic, kemudian insting Geo Science saya bangkit mirip sebuah Event yang pasrah di perdaya oleh sang Handler perkasa. Sang Handler cuman berisi statement Response.Redirect yang mengalihkan perhatian saya pada Prof. The Houw Liong dan metode ANFIS nya. Pak The (dibaca te bukan deu), begitu biasa kami memanggilnya, adalah salah seorang Professor nyentrik kebanggaan orang fisika. Sedangkan ANFIS adalah kependekan dari &amp;quot;Adaptive Neuro-Fuzzy Inference Systems&amp;quot; yang merupakan sebuah metode yang mengkombinasikan artificial neural network dan Fuzzy. Metode ini dikembangkan oleh J.S Roger Jang yang digunakan untuk mengolah informasi &amp;quot;rancu&amp;quot;.&amp;nbsp;Saya nggak ada masalah dengan hal2 yang&amp;nbsp;&amp;quot;rancu&amp;quot;&amp;nbsp;yang nggak &amp;quot;precise&amp;quot; ini, karena setahun bermain dengan teori fractal dan non-euclidean geometry menjadikan saya sadar bahwa alam ini &amp;quot;tidak teratur secara teratur&amp;quot;. I&amp;nbsp;think its enough with SoftComputing thing and kembali ke laptop, hehehe. &lt;/p&gt;
&lt;p&gt;Pak The menggunakan ANFIS untuk memprediksi periode banjir besar dengan menggunakan deret waktu bilangan bintik matahari. Oke, penjelasan ilmiah cukup bisa menenangkan&amp;nbsp;lahir batin plus informasi tambahan tentang tahun-tahun berapa saja yang termasuk periode banjir, namun... hehehe this is where the fun begin, untuk kasus&amp;nbsp;banjir di wilayah indonesia, hujan&amp;nbsp;is not&amp;nbsp;the&amp;nbsp;defining factor, dan saya yakin temen2&amp;nbsp;dari teknik sipil dan&amp;nbsp;temen2 dari planologi memiliki argumen yang lebih cantik mengenai hal ini. Jangankan&amp;nbsp;diguyur oleh hujan&amp;nbsp;akibat aktifitas matahari maksimum, diguyur oleh hujan normal saja sudah&amp;nbsp;cukup banyak menimbulkan genangan di mana-mana. Saya sempat&amp;nbsp;&amp;quot;nyengir&amp;quot; ketika&amp;nbsp;berjalan di sekitar Sudirman&amp;nbsp;akibat pengamatan sotoy saya tentang sistem drainage disekitar jalan dan berakhir pada bayangan sekelompok kura-kura ninja yang sedang asik berlatih&amp;nbsp;sambil makan pizza di sebuah kota di luar sana. that&amp;#39;s just my imagination. &lt;/p&gt;
&lt;p&gt;Pengembaraan berakhir ketika ada MSN dari belanda, &amp;quot;Hi Ismail&amp;quot; hehehehe begitulah message yang muncul and i&amp;#39;m going back to work. silent voice in my heart: &amp;quot;Indonesia is a great and a cool country, letak geografis Indonesia mengharuskan Indonesia memiliki sistem tata kota yang super canggih dan sistem&amp;nbsp;Early Warning Systems (EWS) yang outstanding, what can you do for that ismail huh, what can you do ismail&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:-)&lt;/p&gt;
&lt;p&gt;selamat datang 2008&lt;/p&gt;
&lt;p&gt;selamat tinggal 2007&lt;/p&gt;
&lt;p&gt;life is cool huh :-)&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/29/anfis-ews-dan-trauma-pribadi.aspx&amp;amp;subject=ANFIS, EWS dan Trauma Pribadi" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/29/anfis-ews-dan-trauma-pribadi.aspx&amp;amp;t=ANFIS%2c+EWS+dan+Trauma+Pribadi" target="_blank" title="Submit ANFIS, EWS dan Trauma Pribadi to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/29/anfis-ews-dan-trauma-pribadi.aspx&amp;amp;title=ANFIS%2c+EWS+dan+Trauma+Pribadi" target="_blank" title="Submit ANFIS, EWS dan Trauma Pribadi to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/29/anfis-ews-dan-trauma-pribadi.aspx&amp;amp;phase=2" target="_blank" title="Submit ANFIS, EWS dan Trauma Pribadi to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/29/anfis-ews-dan-trauma-pribadi.aspx&amp;amp;title=ANFIS%2c+EWS+dan+Trauma+Pribadi" target="_blank" title="Add ANFIS, EWS dan Trauma Pribadi to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=31704" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/OOT/default.aspx">OOT</category></item><item><title>AJAX  Sys.WebForms.PageRequestManagerParserErrorException </title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/18/ajax-sys-webforms-pagerequestmanagerparsererrorexception.aspx</link><pubDate>Tue, 18 Dec 2007 08:15:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:28358</guid><dc:creator>go2ismail</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=28358</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/18/ajax-sys-webforms-pagerequestmanagerparsererrorexception.aspx#comments</comments><description>&lt;p&gt;Kira-kira begitulah teriakan AJAX ketika dia lagi kebingungan.&lt;/p&gt;
&lt;p&gt;&lt;img height="1" alt="" src="http://geeks.netindonesia.net/controlpanel/blogs/Sys.WebForms.PageRequestManagerParserErrorException" width="1" border="0" /&gt;&lt;img height="164" alt="" src="http://farm3.static.flickr.com/2256/2119402935_a0858c8271_o.jpg" width="617" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Asynchronous (independent)&amp;nbsp;postbacks melalui jalur&amp;nbsp;&amp;quot;life cycle&amp;quot; yang sama dengan regular pages. Perbedaan&amp;nbsp;terjadi pada saat rendering. Dengan AJAX, rendering terjadi&amp;nbsp;secara partial yaitu rendering terjadi pada bagian yang berada di UpdatePanel saja. Proses render menggunakan &amp;quot;special format&amp;quot; yang hanya dimengerti oleh JavaScript di client. &lt;/p&gt;
&lt;p&gt;Ketika ada interfensi terhadap data yang dikirimkan ke si client (yang dalam bentuk special format itu), maka format yang special tersebut&amp;nbsp;akan rusak dan pada akhirnya si client jadi tidak memahami lagi format data yang diterimanya itu. Proses parsing gagal terjadi dan kemudian munculah error diatas. &lt;/p&gt;
&lt;p&gt;Saya menemukan error diatas ketika mengerjakan sebuah module DNN yang terpaksa harus sedikit mengganggu &amp;quot;response stream&amp;quot; sehingga melakukan rendering di luar phase rendering. Luckily, saya menemukan blognya &lt;a class="" href="http://weblogs.asp.net/leftslipper/archive/2007/02/26/sys-webforms-pagerequestmanagerparsererrorexception-what-it-is-and-how-to-avoid-it.aspx?CommentPosted=true#commentmessage"&gt;Eilon Lipton&lt;/a&gt; yang membahas hal ini dengan sangat bagus sekali. Saya mengikuti sarannya untuk tidak melakukan asynchronous postbacks, tapi melakukan regular postback dengan cara menambahkan PostBackTrigger.&lt;/p&gt;
&lt;p&gt;note: DNN&amp;nbsp;akan mendukung AJAX automatically jika ascx yang didaftarkan via module definitions di cek bagian supports partial rendering nya. Dengan men-cek checkbox tersebut maka DNN akan menambahkan scriptmanager dan updatepanel&amp;nbsp;pada module secara &amp;quot;ajaib&amp;quot;. saran Eilon yang nomor dua lah yang saya pilih karena alasan yang diungkapkan pada nomor satunya. &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/18/ajax-sys-webforms-pagerequestmanagerparsererrorexception.aspx&amp;amp;subject=AJAX  Sys.WebForms.PageRequestManagerParserErrorException " target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/18/ajax-sys-webforms-pagerequestmanagerparsererrorexception.aspx&amp;amp;t=AJAX++Sys.WebForms.PageRequestManagerParserErrorException+" target="_blank" title="Submit AJAX  Sys.WebForms.PageRequestManagerParserErrorException  to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/18/ajax-sys-webforms-pagerequestmanagerparsererrorexception.aspx&amp;amp;title=AJAX++Sys.WebForms.PageRequestManagerParserErrorException+" target="_blank" title="Submit AJAX  Sys.WebForms.PageRequestManagerParserErrorException  to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/18/ajax-sys-webforms-pagerequestmanagerparsererrorexception.aspx&amp;amp;phase=2" target="_blank" title="Submit AJAX  Sys.WebForms.PageRequestManagerParserErrorException  to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/18/ajax-sys-webforms-pagerequestmanagerparsererrorexception.aspx&amp;amp;title=AJAX++Sys.WebForms.PageRequestManagerParserErrorException+" target="_blank" title="Add AJAX  Sys.WebForms.PageRequestManagerParserErrorException  to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=28358" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/AJAX/default.aspx">AJAX</category></item><item><title>DotNetNuke Page Rendering Process</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/16/dotnetnuke-page-rendering-process.aspx</link><pubDate>Sun, 16 Dec 2007 07:41:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:28124</guid><dc:creator>go2ismail</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=28124</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/16/dotnetnuke-page-rendering-process.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Sebuah aplikasi web akan terdiri dari banyak halaman (file .aspx) dalam usaha menampilkan content dari aplikasi web tersebut. Berbeda dengan aplikasi web pada umumnya, sebuah aplikasi web DotNetNuke hanya menggunakan sebuah file aspx saja yaitu file Default.aspx. Ilusi yang terjadi ketika user mengklik menu item untuk berpindah dari satu halaman ke halaman yang lainnya di peroleh dengan suatu teknik yang disebut “Dynamic Page Rendering”. Jadi, meskipun hanya menggunakan sebuah file aspx saja (yaitu Default.aspx), user “seolah-olah” menjelajahi banyak halaman. &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Sebuah halaman aplikasi web DotNetNuke terdiri dari satu atau lebih module. Module adalah sebuah entitas fungsional terkecil. Contoh-contoh module adalah: Module Hit counter, Module users online, Module User Account, Module Google Adsense, Module Blog, Module FAQ, Module Feedback, Module e-Commerce dan banyak lagi. Module bisa sangat sederhana dan bisa sangat rumit, bisa sesederhana module hit counter dan bisa serumit module e-Commerce. Truth to be told, module terdiri dari kumpulan file-file ascx yang memanfaatkan API dari DotNetNuke dan ASP.NET. (note: inilah alasan mengapa DotNetNuke disebut sebagai sebuah Framework bukan sekedar CMS biasa). &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Informasi tentang sebuah halaman beserta module-module apa saja yang terkandung di halaman tersebut disimpan dalam database. Halaman yang satu dengan halaman yang lain bersifat unik. Sebuah halaman dapat diidentifikasi dan dibedakan dari halaman yang lainnya dengan menggunakan apa yang disebut “tabid” (dibaca: tab-id). Sebuah nilai tabid yang unik hanya untuk sebuah halaman saja. Sama seperti halaman, module-module dalam aplikasi web DotNetNuke diidentifikasi dan dibedakan dengan sebuah nilai unik yang disebut ModuleID. Module-module mana saja yang mengisi sebuah halaman dapat ditentukan dengan mudah karena didalam database, ModuleId dengan tabid memiliki relationship.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="535" alt="" src="http://farm3.static.flickr.com/2199/2114708246_e9617e907a_o.jpg" width="452" border="0" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Ketika seorang user mengklik sebuah menu item untuk menuju pada sebuah halaman tertentu, proses behind the scene nya adalah:&lt;/font&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;"&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;File Default.aspx di panggil&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;Sebuah querystring dengan parameter tabid dilewatkan ke web server&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;Nilai querystring tabid kemudian digunakan oleh DNN database server untuk memperoleh informasi moduleid yang ber-relasi dengan tabid tersebut. &lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;Informasi yang diperoleh DNN database server kemudian diberikan kepada web server&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;Web server kemudian menggunakan informasi yang diperoleh dari database server untuk merender file Default.aspx (dynamic page rendering)&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;User memperoleh halaman yang diinginkan. &lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;img height="188" alt="" src="http://farm3.static.flickr.com/2045/2114719838_c529a3e5b0_o.jpg" width="556" border="0" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;img height="188" alt="" src="http://farm3.static.flickr.com/2041/2114719906_fc9daed910_o.jpg" width="556" border="0" /&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;strong&gt;Note&lt;/strong&gt;: Fitur HumanFriendlyURL yang dibawa oleh DNN 4.7 akan lebih merampingkan tampilan URL aplikasi DotNetNuke. Tabid tidak akan lagi terlihat di address bar dari web browser. Informasi lebih lanjut mengenai HumanFriendlyURL dapat di lihat di blognya sang master DotNetNuke, &lt;a class="" href="http://geeks.netindonesia.net/blogs/agung/archive/2007/11/12/humanfriendlyurl-dnn-4-7.aspx"&gt;Agung Riyadi&lt;/a&gt;. &lt;/font&gt;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/16/dotnetnuke-page-rendering-process.aspx&amp;amp;subject=DotNetNuke Page Rendering Process" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/16/dotnetnuke-page-rendering-process.aspx&amp;amp;t=DotNetNuke+Page+Rendering+Process" target="_blank" title="Submit DotNetNuke Page Rendering Process to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/16/dotnetnuke-page-rendering-process.aspx&amp;amp;title=DotNetNuke+Page+Rendering+Process" target="_blank" title="Submit DotNetNuke Page Rendering Process to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/16/dotnetnuke-page-rendering-process.aspx&amp;amp;phase=2" target="_blank" title="Submit DotNetNuke Page Rendering Process to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/16/dotnetnuke-page-rendering-process.aspx&amp;amp;title=DotNetNuke+Page+Rendering+Process" target="_blank" title="Add DotNetNuke Page Rendering Process to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=28124" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/DNN/default.aspx">DNN</category></item><item><title>ASP.NET 2.0 Page Life Cycle</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/10/asp-net-2-0-page-life-cycle.aspx</link><pubDate>Mon, 10 Dec 2007 07:24:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:27287</guid><dc:creator>go2ismail</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=27287</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/10/asp-net-2-0-page-life-cycle.aspx#comments</comments><description>&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Menghafal page life cycle bukan merupakan hal yang mudah (setidaknya untuk saya), tapi beruntung ada &lt;a class="" href="http://www.codeproject.com/KB/aspnet/ASPNET_Page_Lifecycle.aspx"&gt;artikel ini&lt;/a&gt; di codeproject yang mencoba memberikan ide bagaimana cara menghapal page life cycle melalui singkatan. Di artikel tersebut, page life cycle disingkat menjadi SILVER-U.&amp;nbsp;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;img height="326" alt="" src="http://farm3.static.flickr.com/2079/2099339049_c399ca4de2_o.jpg" width="176" border="0" /&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;S&lt;/b&gt;: Start&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;I&lt;/b&gt;: Initialize&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;L&lt;/b&gt;: Load&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;V&lt;/b&gt;: Validate&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;E&lt;/b&gt;: Event handling&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;R&lt;/b&gt;: Render&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;U&lt;/b&gt;: Unload&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Start&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Pada fase ini properties page di set. Aksi meng-set Master page untuk user tertentu untuk meng-achieve “user preference settings” dapat dilakukan pada fase ini dengan cara menambahkan code pada handler dari event PreInit. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Initialize&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Pada fase ini, ID untuk control sudah di generate, namun properties yang lainnya belum ada. Initialization dapat di override dengan menggunakan method OnInit. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Load&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Fase ini sangat tepat digunakan untuk memanggil functions dan perform some logic. Pada fase ini control diisi data-data yang diperoleh dari view state dan control state (thanks to LoadViewState event dan LoadPostData event). Penambahan code dapat juga dilakukan pada handler dari event OnLoad karena pada fase inilah event tersebut dibangkitkan. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Validate&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Control di validasi dan terdapat event Validate yang dapat digunakan. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Event Handling&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Event handling server control terjadi pada fase ini. Modifikasi final dapat dilakukan dengan memanfaatkan event OnPreRender. Event SaveViewState digunakan untuk menyimpan value pada view state object. (note: event SaveViewState hanya akan menyimpan value pada view state object bukan pada control, karena modifikasi final pada control terjadi pada event OnPreRender).&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Render&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Method Render menggunakan objek HtmlTextWriter sebagai parameter. Objek tersebut digunakan untuk meng-output HTML untuk ditampilkan di browser. Pada fase ini, page akan “memerintahkan” semua object yang dimilikinya untuk me-render dirinya sendiri menjadi HTML. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Unload&lt;/font&gt;&lt;/font&gt;&lt;/b&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Setelah HTML di render, semua object di-disposed yang diawali dengan pemanggilan event OnUnload pada setiap control di page yang kemudian pemanggilan event OnUnload pada page itu sendiri. Pada fase ini aman untuk men-dispose semua object yang masih tersisa (eg: open database connections dan open file streams). &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/10/asp-net-2-0-page-life-cycle.aspx&amp;amp;subject=ASP.NET 2.0 Page Life Cycle" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/10/asp-net-2-0-page-life-cycle.aspx&amp;amp;t=ASP.NET+2.0+Page+Life+Cycle" target="_blank" title="Submit ASP.NET 2.0 Page Life Cycle to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/10/asp-net-2-0-page-life-cycle.aspx&amp;amp;title=ASP.NET+2.0+Page+Life+Cycle" target="_blank" title="Submit ASP.NET 2.0 Page Life Cycle to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/10/asp-net-2-0-page-life-cycle.aspx&amp;amp;phase=2" target="_blank" title="Submit ASP.NET 2.0 Page Life Cycle to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/10/asp-net-2-0-page-life-cycle.aspx&amp;amp;title=ASP.NET+2.0+Page+Life+Cycle" target="_blank" title="Add ASP.NET 2.0 Page Life Cycle to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=27287" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Custom Paging di ASP.NET 2.0 GridView</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/09/custom-paging-di-asp-net-2-0-gridview.aspx</link><pubDate>Sun, 09 Dec 2007 07:08:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:27163</guid><dc:creator>go2ismail</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=27163</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/09/custom-paging-di-asp-net-2-0-gridview.aspx#comments</comments><description>&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Paging di ASP.NET 2.0 GridView adalah sangat mudah karena ASP.NET 2.0 menyediakan default paging untuk GridView. Dengan men-check checkbox Enable Paging via Smart Tag atau menge-set properties AllowPaging dari si GridView menjadi True maka GridView sudah bisa support paging tanpa code sedikitpun. Namun demikian, kemudahan tersebut harus dibayar oleh berkurangnya performance aplikasi. Hal tersebut dikarenakan, default paging akan selalu mengambil semua records meskipun yang ditampilkan hanya sebagiannya saja (note: GridView akan menyeleksi data yang ditampilkan namun data source tatap akan selalu meretrieve seluruh records). Untuk scenario data yang sangat sedikit, default paging ini akan sangat membantu sekali tapi untuk scenario data yang berjumlah banyak akan berdampak pada turunnya performance. (note: scenario data banyak ini bisa “diakali” dengan teknik “caching data” dengan menggunakan SqlDataSource).&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Untuk scenario data yang berjumlah sangat besar diperlukan teknik lain untuk paging ini. Artikel ini akan mencoba untuk sedikit mengulas custom paging dengan menggunakan ObjectDataSource. Ide dari custom paging ini adalah teknik “selective data retrieving” yang dilakukan oleh stored procedure. Dengan menggunakan fitur ROW_NUMBER() dari MS SQL Server 2005, pembuatan stored procedure yang dikhususkan untuk custom paging akan menjadi sangat mudah. Berikut adalah dua hal yang harus dilakukan untuk meng-achieve custom paging:&lt;/font&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;"&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;Mengkonfigurasi ObjectDataSource agar support custom paging&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;Membuat stored procedure yang mendukung custom paging&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Konfigurasi ObjectDataSource&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;ObjectDataSource adalah sebuah data source control yang didesain untuk mengakses data via sebuah object. Si object menyediakan data bisa dari web service, database dan juga bisa dari file XML. ObjectDataSource adalah penghubung antara web control (eg: GridView) dengan data yang disediakan oleh si object. Object yang hendak di bind ke ObjectDataSource harus memiliki method yang dapat mengakses stored procedure yang diperlukan untuk custom paging. Cara paling mudah untuk membuat object semacam ini adalah melalui pembuatan DataSet. TableAdapter dari DataSet memberikan kemudahan untuk mengkases stored procedure yang mana konfigurasinya dapat dilakukan secara visual. Karena konsep layering sudah umum digunakan dalam pembuatan aplikasi web, maka dalam artikel ini akan digunakan sebuah object dari Business Logic Layer (BLL) untuk di-bind ke ObjectDataSource. &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;img height="291" alt="" src="http://farm3.static.flickr.com/2289/2096524465_1e00059357_o.jpg" width="255" border="0" /&gt;&amp;nbsp;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Berikut adalah konfigurasi ObjectDataSource yang harus dilakukan untuk mendukung custom paging:&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;tab-stops:list .5in;mso-list:l1 level1 lfo2;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;Set properties TypeName pada object yang hendak di-bind dengan ObjectDataSource.&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;tab-stops:list .5in;mso-list:l1 level1 lfo2;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;Set properties EnablePaging menjadi True.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;tab-stops:list .5in;mso-list:l1 level1 lfo2;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;Set properties SelectMethod pada method yang mengakses stored procedure untuk custom paging. Note: method tersebut harus berada pada object yang hendak di-bind dengan ObjectDataSource. &lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;tab-stops:list .5in;mso-list:l1 level1 lfo2;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;Isikan nama parameter dari method yang digunakan pada properties SelectMethod ke properties StartRowIndexParameterName. Nama parameter yang diisikan adalah parameter yang menginput starting index. Note: stored procedure yang akan dibuat memiliki dua buah parameter, pertama: parameter untuk menginput starting index dan kedua: parameter untuk menginput jumlah records maksimal yang hendak di tampilkan. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;tab-stops:list .5in;mso-list:l1 level1 lfo2;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;Isikan nama parameter yang menginput jumlah maksimal records yang hendak di paging ke properties MaximumRowsParameterName. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt 0.5in;TEXT-INDENT:-0.25in;tab-stops:list .5in;mso-list:l1 level1 lfo2;"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-list:Ignore;"&gt;&lt;font size="3"&gt;-&lt;/font&gt;&lt;span style="FONT:7pt &amp;#39;Times New Roman&amp;#39;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;font size="3"&gt;Set properties SelectCountMethod pada method yang mengakses stored procedure untuk menghitung jumlah total records. &lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Berikut adalah conteh kode aspx dari ObjectDataSource:&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;pre&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:maroon;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;asp&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;:&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;COLOR:maroon;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;ObjectDataSource&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;ID&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;ObjectDataSource1&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;runat&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;EnablePaging&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;True&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;StartRowIndexParameterName&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;startRowIndex&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;MaximumRowsParameterName&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;maximumRows&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;SelectCountMethod&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;GetJumlahRecordTerritories&amp;quot;&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;SelectMethod&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;GetTerritoriesForPaging&amp;quot;&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:red;"&gt;TypeName&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&amp;quot;TerritoriesManager&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;asp&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;:&lt;/span&gt;&lt;span style="COLOR:maroon;"&gt;ObjectDataSource&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;TerritoriesManager adalah nama object BLL yang hendak di-bind ke ObjectDataSource. SelectMethod yang digunakan adalah GetTerritoriesForPaging yang menggunakan dua buah parameter input. SelectCountMethod yang dipilih adalah GetJumlahRecordTerritories. Parameter input yang digunakan pada SelectMethod adalah startRowIndex dan maximumRows. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Membuat stored procedure&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Stored procedure yang dibuat sebanyak dua buah. Yaitu GetTerritoriesForPaging dan GetJumlahRecordTerritories. Kedua buah stored procedure tersebut harus dapat diakses via object yang hendak di-bind dengan ObjectDataSource. Berikut adalah script stored procedure GetTerritoriesForPaging:&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;pre&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;ANSI_NULLS&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;ON&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;QUOTED_IDENTIFIER&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;ON&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;go&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;PROCEDURE&lt;/span&gt; [dbo]&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;[GetTerritoriesForPaging]&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;(&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@startRowIndex&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;@maximumRows&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;int&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:gray;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;)&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;AS&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;SET&lt;/span&gt; @startRowIndex &lt;span style="COLOR:gray;"&gt;=&lt;/span&gt; @startRowIndex &lt;span style="COLOR:gray;"&gt;+&lt;/span&gt; 1&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;SELECT&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;TerritoryID&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;TerritoryDescription&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RegionID&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;FROM&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;SELECT&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&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;/span&gt;TerritoryID&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&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;/span&gt;TerritoryDescription&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&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;/span&gt;RegionID&lt;span style="COLOR:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&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;/span&gt;ROW_NUMBER&lt;span style="COLOR:gray;"&gt;()&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;OVER&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;ORDER&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;BY&lt;/span&gt; TerritoryID&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;as&lt;/span&gt; RowNum&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;FROM&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&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;/span&gt;Territories&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:3;"&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;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;as&lt;/span&gt; TerrInfo&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;WHERE&lt;/span&gt; &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;RowNum &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;BETWEEN&lt;/span&gt; @startRowIndex &lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:2;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:gray;"&gt;AND&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;(&lt;/span&gt;@startRowIndex &lt;span style="COLOR:gray;"&gt;+&lt;/span&gt; @maximumRows&lt;span style="COLOR:gray;"&gt;)&lt;/span&gt; &lt;span style="COLOR:gray;"&gt;-&lt;/span&gt; 1&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Dapat dilihat bahwa ROW_NUMBER() akan menomori semua record yang telah diurutkan berdasarkan TerritoryID. Meskipun TerritoryID tidak berurutan, ROW_NUMBER() akan memberikan nomor yang berurutan pada setiap record. Nomor record yang berurutan disimpan pada kolom RowNum yang kemudian akan disaring menggunakan klausa WHERE. &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Stored procedure yang kedua yang harus dibuat adalah stored procedure untuk menghitung jumlah total record. &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;pre&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;ANSI_NULLS&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;ON&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;set&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;QUOTED_IDENTIFIER&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;ON&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;go&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;PROCEDURE&lt;/span&gt; [dbo]&lt;span style="COLOR:gray;"&gt;.&lt;/span&gt;[GetJumlahRecordTerritories]&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;AS&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;SELECT&lt;/span&gt; &lt;span style="COLOR:fuchsia;"&gt;COUNT&lt;/span&gt;&lt;span style="COLOR:gray;"&gt;(*)&lt;/span&gt;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;FROM&lt;/span&gt; Territories&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Jumlah total records diperlukan untuk pembuatan index paging. &lt;/font&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;img height="329" alt="" src="http://farm3.static.flickr.com/2066/2097351166_42a0295bc2_o.jpg" width="309" border="0" /&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class = "shareblock"&gt;&lt;strong&gt;Share this post: &lt;/strong&gt;&lt;a href="mailto:?body=Thought you might like this: http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/09/custom-paging-di-asp-net-2-0-gridview.aspx&amp;amp;subject=Custom Paging di ASP.NET 2.0 GridView" target="_blank" title="Send via email"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Mail.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.facebook.com/sharer.php?u=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/09/custom-paging-di-asp-net-2-0-gridview.aspx&amp;amp;t=Custom+Paging+di+ASP.NET+2.0+GridView" target="_blank" title="Submit Custom Paging di ASP.NET 2.0 GridView to DotNetKicks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Facebook.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/09/custom-paging-di-asp-net-2-0-gridview.aspx&amp;amp;title=Custom+Paging+di+ASP.NET+2.0+GridView" target="_blank" title="Submit Custom Paging di ASP.NET 2.0 GridView to del.icio.us"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Delicious.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="http://www.digg.com/submit?url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/09/custom-paging-di-asp-net-2-0-gridview.aspx&amp;amp;phase=2" target="_blank" title="Submit Custom Paging di ASP.NET 2.0 GridView to digg.com"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Digg.16.gif" border="0"&gt;&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/09/custom-paging-di-asp-net-2-0-gridview.aspx&amp;amp;title=Custom+Paging+di+ASP.NET+2.0+GridView" target="_blank" title="Add Custom Paging di ASP.NET 2.0 GridView to Live Bookmarks"&gt;&lt;img src="http://geeks.netindonesia.net/Images/Share.Live.16.gif" border="0"&gt;&lt;/a&gt;&lt;/div&gt;&lt;img src="http://geeks.netindonesia.net/aggbug.aspx?PostID=27163" width="1" height="1"&gt;</description><category domain="http://geeks.netindonesia.net/blogs/go2ismail/archive/tags/ASP.NET/default.aspx">ASP.NET</category></item><item><title>Event Handling ASP.NET 2.0 Part 2</title><link>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/08/event-handling-asp-net-2-0-part-2.aspx</link><pubDate>Sat, 08 Dec 2007 04:30:00 GMT</pubDate><guid isPermaLink="false">5cc3a90d-ac9a-472a-8983-30514957434c:26976</guid><dc:creator>go2ismail</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://geeks.netindonesia.net/blogs/go2ismail/rsscomments.aspx?PostID=26976</wfw:commentRss><comments>http://geeks.netindonesia.net/blogs/go2ismail/archive/2007/12/08/event-handling-asp-net-2-0-part-2.aspx#comments</comments><description>&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&amp;nbsp;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Pada bagian satu telah dibahas pola fikir dari konsep Event Handling ini. Pembahasan dimulai dari penjelasan apa itu event dan diakhiri dengan bagaimana cara mengkonsumsi event tersebut. Karena delegate memiliki peranan yang sangat penting bagi event handling maka pada bagian satu dibahas juga sedikit mengenai delegate. Proses pelemparan event oleh event sender dan proses penggunaan event oleh event receiver telah digambarkan juga pada bagian satu secara sederhana dan menggunakan contoh.&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Sekarang, pada bagian dua ini, akan dicoba untuk memaparkan sedikit konsep yang masih tertinggal di bagian satu. Konsep yang tertinggal itu adalah mengenai transfer data melalui event. Yes, event dapat membawa data. &lt;/font&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Sedikit Teori&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;br /&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;.NET telah menyediakan sebuah event delegate standar untuk digunakan yaitu delegate System.EventHandler. Delegate System.EventHandler ini menggunakan kelas System.EventArgs sebagai parameter yang akan membawa data.&lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;div style="BORDER-RIGHT:medium none;PADDING-RIGHT:0in;BORDER-TOP:#c8cdde 1pt solid;PADDING-LEFT:0in;BACKGROUND:#dddddd;PADDING-BOTTOM:0in;BORDER-LEFT:medium none;PADDING-TOP:4pt;BORDER-BOTTOM:medium none;mso-element:para-border-div;mso-border-top-alt:solid #C8CDDE .75pt;"&gt;&lt;span style="FONT-SIZE:9pt;COLOR:#000066;LINE-HEIGHT:140%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;delegate &lt;/span&gt;&lt;span style="FONT-SIZE:9pt;COLOR:blue;LINE-HEIGHT:140%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;void&lt;/span&gt;&lt;span style="FONT-SIZE:9pt;COLOR:#000066;LINE-HEIGHT:140%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt; EventHandler(object sender, EventArgs e);&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt; &lt;span style="FONT-SIZE:9pt;COLOR:#000066;LINE-HEIGHT:140%;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Karena data yang dilewatkan melalui event ini akan sangat bervariasi maka pada kasus khusus kelas System.EventArgs tidak digunakan secara langsung. Tetapi, digunakan sebagai base class untuk sebuah kelas sesungguhnya yang sangat merepresentasikan data yang dibutuhkan. Sehingga dapat dikatakan, untuk kebutuhan data tertentu maka diperlukan sebuah kelas custom yang diturunkan langsung dari kelas System.EventArgs. &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Jadi pada bab ini ada dua hal yang akan dilakukan:&lt;/font&gt;&lt;/p&gt;
&lt;ol style="MARGIN-TOP:0in;"&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font face="Times New Roman" size="3"&gt;Membuat kelas custom yang merupakan kelas turunan dari kelas System.EventArgs. Kelas custom inilah yang akan membawa data via si event. Konvensi penamaan dari kelas custom ini adalah NamaEventEventArgs. Kelas custom ini kemudian akan digunakan menjadi parameter untuk event delegate.&lt;/font&gt;&lt;/li&gt;
&lt;li class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Membuat event delegate baru dengan menggunakan kelas dari point satu. Event delegate yang baru ini akan mengikuti konvensi penamaan sebagai berikut: “NamaEventEventHandler”. Event delegate yang baru ini akan digunakan untuk membuat sebuah event sehingga event yang terbuat dapat membawa data dari objek kelas custom dari point satu diatas.&amp;nbsp;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;tab-stops:list .5in;mso-list:l0 level1 lfo1;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;span style="mso-spacerun:yes;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;Let’s See How “Rubber Meets the Road”&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight:normal;"&gt;&lt;font size="3"&gt;&lt;font face="Times New Roman"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Contoh yang digunakan masih sama seperti contoh pada bagian satu. Method Rename akan memanggil method yang akan membangkitkan event. Hal yang baru dari bagian dua ini adalah definisi kelas custom yang akan diturunkan langsung dari kelas System.EventArgs. Kelas baru tersebut akan menampung data Boolean yang akan mengindikasikan persetujuan untuk merubah nama atau tidak. Sebuah event akan dideklarasikan dengan menggunakan event delegate yang baru. &lt;/font&gt;&lt;/p&gt;&lt;font face="Times New Roman" size="3"&gt;&amp;nbsp;&lt;/font&gt; 
&lt;p class="MsoNormal" style="MARGIN:0in 0in 0pt;"&gt;&lt;font face="Times New Roman" size="3"&gt;Berikut adalah kerangka source code yang akan dikembangkan:&lt;/font&gt;&lt;/p&gt;&lt;pre&gt;&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Data;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Configuration;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Collections;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Web;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Web.Security;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Web.UI;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Web.UI.WebControls;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Web.UI.WebControls.WebParts;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;using&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; System.Web.UI.HtmlControls;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;nbsp;&lt;/span&gt;
&lt;span style="FONT-SIZE:10pt;COLOR:blue;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;public&lt;/span&gt;&lt;span style="FONT-SIZE:10pt;FONT-FAMILY:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; &lt;span style="COLOR:blue;"&gt;partial&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;class&l