<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://geeks.netindonesia.net/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Across boundaries - ( Cipto )</title><subtitle type="html">@P</subtitle><id>http://geeks.netindonesia.net/blogs/cipto/atom.aspx</id><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/default.aspx" /><link rel="self" type="application/atom+xml" href="http://geeks.netindonesia.net/blogs/cipto/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2008-10-13T14:20:00Z</updated><entry><title>Java Script ,OOP</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/18/java-script-oop.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/18/java-script-oop.aspx</id><published>2008-11-18T07:44:00Z</published><updated>2008-11-18T07:44:00Z</updated><content type="html">&lt;p&gt;Now , this is something that is worthwhile to take a look and have a good understanding.&lt;/p&gt; &lt;p&gt;Most of most that use the higher level of API build on top of Asp.net 2.0, Will rarely use client side scripting, so many people that even start jump to asp.net but does not even know what html is. but really at the end what you eventually will produce is merely HTML,DHTML and JavaScript.&lt;/p&gt; &lt;p&gt;I bet those that talk a lot about this and that technology still lacking of the fundamental concept.&lt;/p&gt; &lt;p&gt;this is the trickiest interpreter language, lousiest.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Even Function return as Object,&lt;/li&gt; &lt;li&gt;every thing works with name value pair { xxx:value } &lt;/li&gt; &lt;li&gt;If you haven&amp;#39;t declare a method or member of a class,the interpreter will create it for you and it becomes global , on window.youmember&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt; function test() {&lt;/pre&gt;&lt;pre&gt;        foo = &lt;span class="str"&gt;&amp;quot;test&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;    }&lt;/pre&gt;&lt;pre&gt;    test();&lt;/pre&gt;&lt;pre class="alt"&gt;    alert(window.foo == &lt;span class="str"&gt;&amp;quot;test&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;/div&gt;

&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;You can change the Execution Context by functionname.call(context,param1,n)&amp;nbsp; or functionname.apply(context,param1,n)&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;When EcmaScript interpret your code, it has the internal [[scope]] property that make a chain scope, the last scope only contains the global object. Scope can be Global, belongs to the window object. or Private , belongs inside a function&lt;/p&gt;
&lt;p&gt;The prototype also make a chain , if an object refer to another one object, it keeps searching for it.Lastly the script will try to get the value into string if you access the value. while it build the variable/activation object the interpreter add arguments property that you can access inside any function . &lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Closures&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;an inner function that use and manipulate the outer function variable member or parameter.because of this comes the private and public member&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Public Member&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;You can set directly on the &lt;/p&gt;
&lt;p&gt;constructor&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;Function user(name,age)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.name=name;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;this&lt;/span&gt;.age=age;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;}&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;or by attaching on prototype&lt;/p&gt;&lt;pre class="csharpcode"&gt;user.prototype.getname()=function{&lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;this&lt;/span&gt;.name;};&lt;/pre&gt;


&lt;p&gt;&lt;b&gt;&lt;u&gt;Private Member&lt;/u&gt; &lt;a href="http://javascript.crockford.com/private.html"&gt;Go here&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Static method&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Object.Staticmethodname=function{//your code here};&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&lt;u&gt;Can Javascript do Inheritance and Polymorphism?&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Yes , with a little help from some wrapper, You can choose:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://javascript.crockford.com/inheritance.html"&gt;Crockford Helper&lt;/a&gt; to refer to the base class function use the this.uber(&amp;#39;functionname&amp;#39;)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://dean.edwards.name/weblog/2006/03/base/"&gt;DeanEdwards Base Lib&lt;/a&gt; this is more readable, since like if we want to refer to the base class function , just use this.base() , it will figure out itself which method&lt;/li&gt;
&lt;li&gt;&lt;a href="http://prototype.conio.net/"&gt;Prototype Library&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&amp;nbsp;&lt;b&gt;&lt;u&gt;Name Space and Packaging&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://dojotoolkit.org/"&gt;Dojo Framework&lt;/a&gt;: dojo.js 77kb, include Ajax, widget, namespace ,etc.check it out&lt;/li&gt;
&lt;li&gt;&lt;a href="http://developer.yahoo.com/yui/"&gt;YUI&lt;/a&gt;. yahoo user interface&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;&lt;u&gt;&lt;font color="#669966"&gt;&lt;/font&gt;&lt;/u&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/cipto/archive/2008/11/18/java-script-oop.aspx&amp;amp;subject=Java Script ,OOP" 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/cipto/archive/2008/11/18/java-script-oop.aspx&amp;amp;t=Java+Script+%2cOOP" target="_blank" title="Submit Java Script ,OOP 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/cipto/archive/2008/11/18/java-script-oop.aspx&amp;amp;title=Java+Script+%2cOOP" target="_blank" title="Submit Java Script ,OOP 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/cipto/archive/2008/11/18/java-script-oop.aspx&amp;amp;phase=2" target="_blank" title="Submit Java Script ,OOP 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/cipto/archive/2008/11/18/java-script-oop.aspx&amp;amp;title=Java+Script+%2cOOP" target="_blank" title="Add Java Script ,OOP 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=78824" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author><category term="javascript" scheme="http://geeks.netindonesia.net/blogs/cipto/archive/tags/javascript/default.aspx" /></entry><entry><title>Simple Visual Studio Add in</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/13/simple-visual-studio-add-in.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/13/simple-visual-studio-add-in.aspx</id><published>2008-11-13T06:25:00Z</published><updated>2008-11-13T06:25:00Z</updated><content type="html">&lt;p&gt;Along the way to the office, I am&amp;nbsp; curious about visual studio add in , so i try to make and find the useful Link resources about this, one of them is mztools.com which make the mztool that i mention on previous post.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;so just a straight and simple one, I would like to open the active window on Windows Explorer.Actually I have add a form and combo box and it will list all the file in current solution, but apparently the IDE hang every time the form load during adding the combobox item. some body suggest using threading. now I haven&amp;#39;t got quite far. but it&amp;#39;s the power of extensibility that make us does not do the repetitive task.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;To create one just new project-&amp;gt;other-&amp;gt;addin . and then follow the wizard and choose the option as you needed.&lt;/p&gt;
&lt;p&gt;I add another form&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/SimpleVisualStudioAddin_BC27/image_2.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="101" alt="image" src="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/SimpleVisualStudioAddin_BC27/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;open the connect.cs that supplied for you.this is the main process goes to&lt;/p&gt;
&lt;p&gt;every time your add in is clicked it will trigger the exec event.&lt;/p&gt;
&lt;p&gt;the onconnection is the event usually where you want to change the icon.see the integer 100? that&amp;#39;s the default icon , to get the complete listing i&amp;#39;ve to download the working with visual studio ebooks, which i haven&amp;#39;t done so.&lt;/p&gt;
&lt;p&gt;Command command = commands.AddNamedCommand2(_addInInstance, &amp;quot;CiptoAddin&amp;quot;, &amp;quot;CiptoAddin&amp;quot;, &amp;quot;Executes the command for CiptoAddin&amp;quot;, true, &lt;strong&gt;100&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;put this code before the handled, this variable name already implies it&amp;#39;s usage...&lt;/p&gt;
&lt;p&gt;Connect.cs&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Exec(&lt;span class="kwrd"&gt;string&lt;/span&gt; commandName, vsCommandExecOption executeOption, &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; varIn, &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; varOut, &lt;span class="kwrd"&gt;ref&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; handled)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            handled = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt;(commandName == &lt;span class="str"&gt;&amp;quot;CiptoAddin.Connect.CiptoAddin&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;                    FrmOpen frmopen = &lt;span class="kwrd"&gt;new&lt;/span&gt; FrmOpen();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                    frmopen.m_applicationobject = (DTE)&lt;span class="kwrd"&gt;this&lt;/span&gt;._applicationObject;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                    frmopen.Show();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                    handled = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;return&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Form1.cs&lt;/p&gt;
&lt;div class="csharpcode"&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; FrmOpen : Form&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; DTE m_applicationobject { get; set; }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; FrmOpen()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            InitializeComponent();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; button1_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;          Window active = m_applicationobject.ActiveWindow;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;          System.Diagnostics.Process.Start(active.Document.Path);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; FrmOpen_Activated(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            &lt;span class="rem"&gt;//get the current solution opened&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="rem"&gt;//Solution2 temp = (Solution2)m_applicationobject.Solution;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="rem"&gt;//foreach (Project objproject in temp.Projects)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="rem"&gt;//{&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="rem"&gt;//    foreach (ProjectItem item in objproject.ProjectItems)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="rem"&gt;//    {&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;span class="rem"&gt;//        //if(cmbfile.InvokeRequired)&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;            &lt;span class="rem"&gt;//        if (item != null)&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="rem"&gt;//            cmbfile.Items.Add(item.Name.ToString() + &amp;quot; &amp;quot; + item.Document.Path.ToString());&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            &lt;span class="rem"&gt;//    }&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Now the form activated run just once, after that the IDE will hang every time on the loop so I just uncommented it, but it&amp;#39;s the way to iterate 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/cipto/archive/2008/11/13/simple-visual-studio-add-in.aspx&amp;amp;subject=Simple Visual Studio Add in" 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/cipto/archive/2008/11/13/simple-visual-studio-add-in.aspx&amp;amp;t=Simple+Visual+Studio+Add+in" target="_blank" title="Submit Simple Visual Studio Add in 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/cipto/archive/2008/11/13/simple-visual-studio-add-in.aspx&amp;amp;title=Simple+Visual+Studio+Add+in" target="_blank" title="Submit Simple Visual Studio Add in 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/cipto/archive/2008/11/13/simple-visual-studio-add-in.aspx&amp;amp;phase=2" target="_blank" title="Submit Simple Visual Studio Add in 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/cipto/archive/2008/11/13/simple-visual-studio-add-in.aspx&amp;amp;title=Simple+Visual+Studio+Add+in" target="_blank" title="Add Simple Visual Studio Add in 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=76035" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author><category term="add in" scheme="http://geeks.netindonesia.net/blogs/cipto/archive/tags/add+in/default.aspx" /></entry><entry><title>Generic Delegates,Lambda Expression</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/11/generic-delegates-lambda-expression.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/11/generic-delegates-lambda-expression.aspx</id><published>2008-11-11T07:20:00Z</published><updated>2008-11-11T07:20:00Z</updated><content type="html">&lt;p&gt;MSDN:&lt;/p&gt;
&lt;p&gt;A lambda expression is an anonymous function that can contain expressions and statements, and can be used to create delegates or expression tree types&lt;/p&gt;
&lt;p&gt;(type param1, type param2,..n)=&amp;gt;{expression1;expression2;expression3;..n}&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;#39;=&amp;gt;&amp;#39; means goes to&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;the system have 3 generic delegates type&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Action delegate , Action &amp;lt;T&amp;gt;,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for non returning value, or void use &lt;/li&gt;
&lt;li&gt;Func&amp;lt;param1,param2...n,Result&amp;gt; , for returning function ,remember there&amp;#39;s always a result in the end&lt;/li&gt;
&lt;li&gt;Predicate&amp;lt;T&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , for searching a criteria use &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Action sample&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;     Action&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt; printnumber = amount =&amp;gt; Console.Write(&lt;span class="str"&gt;&amp;quot;{0:c} &amp;quot;&lt;/span&gt; + Environment.NewLine, amount);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            Action&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt; potongpph = amount =&amp;gt; printnumber(amount * 0.1);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            var gaji = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;double&lt;/span&gt;[] { 2700000.00, 5000000.00,6000000.00, 8500000.00, 10000000.00,15000000.00 };&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            Array.ForEach&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt;(gaji, potongpph);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            &lt;span class="rem"&gt;//kiri parameter,kanan functional body&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            Array.ForEach&amp;lt;&lt;span class="kwrd"&gt;double&lt;/span&gt;&amp;gt;(gaji.Where(sal =&amp;gt; sal &amp;lt; 6000000.00).ToArray(), printnumber);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            Console.ReadLine();&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;func sample&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; Func&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; add = (&lt;span class="kwrd"&gt;int&lt;/span&gt; x, &lt;span class="kwrd"&gt;int&lt;/span&gt; y) =&amp;gt; x + y;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;            Console.WriteLine(add(5, 4));&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;predicate sample&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Predicate()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; fibolist = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;() {1,1,2,3,5,8,13,21,34,55};&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            Predicate&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; matchfibo = n =&amp;gt; n % 2 == 1;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; SearchResult= fibolist.FindAll(matchfibo);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            ObjectDumper.Write(SearchResult);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        }&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Bind to event sample&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;button1.Click += (s, e) =&amp;gt; MessageBox.Show(“Click!”);&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now , When lambda is hooked up to a variable ,field ,delegate it creates the function and the contents that required, create the instance.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/GenericDelegatesLambdaExpression_A977/lambda.jpg"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="219" alt="lambda" src="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/GenericDelegatesLambdaExpression_A977/lambda_thumb.jpg" width="243" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;When it bind to an expression ,System.Linq.Expressions.Expression&amp;lt;TDelegate&amp;gt;&lt;/p&gt;
&lt;p&gt;it will generate the expression tree required. Expression Tree &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/GenericDelegatesLambdaExpression_A977/lambda2.jpg"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="154" alt="lambda2" src="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/GenericDelegatesLambdaExpression_A977/lambda2_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;There&amp;#39;s a precaution when using outer variable with lambda. because delegate will invoke only when it&amp;#39;s used,&amp;nbsp; it will saves a copy of it.&lt;/p&gt;
&lt;p&gt;Variables that are captured in this manner are stored for use in the lambda expression even if variables would otherwise go out of scope and be garbage collected . &lt;a href="http://msdn.microsoft.com/en-us/library/bb397687.aspx"&gt;MSDN Example&lt;/a&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/cipto/archive/2008/11/11/generic-delegates-lambda-expression.aspx&amp;amp;subject=Generic Delegates,Lambda Expression" 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/cipto/archive/2008/11/11/generic-delegates-lambda-expression.aspx&amp;amp;t=Generic+Delegates%2cLambda+Expression" target="_blank" title="Submit Generic Delegates,Lambda Expression 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/cipto/archive/2008/11/11/generic-delegates-lambda-expression.aspx&amp;amp;title=Generic+Delegates%2cLambda+Expression" target="_blank" title="Submit Generic Delegates,Lambda Expression 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/cipto/archive/2008/11/11/generic-delegates-lambda-expression.aspx&amp;amp;phase=2" target="_blank" title="Submit Generic Delegates,Lambda Expression 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/cipto/archive/2008/11/11/generic-delegates-lambda-expression.aspx&amp;amp;title=Generic+Delegates%2cLambda+Expression" target="_blank" title="Add Generic Delegates,Lambda Expression 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=74840" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author></entry><entry><title>another tool and components, and books arrived @ 10-11-2008</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/10/another-tool-and-components-and-books-arrived-10-11-2008.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/10/another-tool-and-components-and-books-arrived-10-11-2008.aspx</id><published>2008-11-10T09:39:30Z</published><updated>2008-11-10T09:39:30Z</updated><content type="html">&lt;p&gt;&lt;strong&gt;&lt;u&gt;Component&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Component one for WPF&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://download.componentone.com/pub/demo/wpf/ControlExplorer/ControlExplorer.xbap"&gt;Demo&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Component one for asp.net 2.0&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;what&amp;#39;s unique is there&amp;#39;s paypal component,and webflash component&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Component one spell checker &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;, add your menu IDE, check your projects spelling against you regional setting, important tools or not?&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Component one DocToHelp2009&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;this is the tool for creating help file for our projects. in chm files format,java help,microsoft help2.0,nethelp,printed manual,winhelp 4.0&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Component one activexstudio, &lt;/strong&gt;the name implies&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Component one Studio Mobile,&lt;/strong&gt;the name implies&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Tools&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Linqer&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Ever try the LinqPad? for trying linq syntax and get the result? , here is the opposite , enter your sQl Query it will translate to linq syntax&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Books&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Sams.Linq.unleashed&lt;/p&gt; &lt;p&gt;Professional WCF&lt;/p&gt; &lt;p&gt;Professional Web APIs Google Ebay Paypal Amazon Mappoint Fedex&lt;/p&gt; &lt;p&gt;OReilly - Programming WPF 2nd Edition&lt;/p&gt; &lt;p&gt;OReilly - JavaScript The Definitive Guide&lt;/p&gt; &lt;p&gt;OReilly - Programming WCF Services&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Why does human create books? Why not create the brain like USB , so you can copy paste the books to human brains :P &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/cipto/archive/2008/11/10/another-tool-and-components-and-books-arrived-10-11-2008.aspx&amp;amp;subject=another tool and components, and books arrived @ 10-11-2008" 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/cipto/archive/2008/11/10/another-tool-and-components-and-books-arrived-10-11-2008.aspx&amp;amp;t=another+tool+and+components%2c+and+books+arrived+%40+10-11-2008" target="_blank" title="Submit another tool and components, and books arrived @ 10-11-2008 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/cipto/archive/2008/11/10/another-tool-and-components-and-books-arrived-10-11-2008.aspx&amp;amp;title=another+tool+and+components%2c+and+books+arrived+%40+10-11-2008" target="_blank" title="Submit another tool and components, and books arrived @ 10-11-2008 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/cipto/archive/2008/11/10/another-tool-and-components-and-books-arrived-10-11-2008.aspx&amp;amp;phase=2" target="_blank" title="Submit another tool and components, and books arrived @ 10-11-2008 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/cipto/archive/2008/11/10/another-tool-and-components-and-books-arrived-10-11-2008.aspx&amp;amp;title=another+tool+and+components%2c+and+books+arrived+%40+10-11-2008" target="_blank" title="Add another tool and components, and books arrived @ 10-11-2008 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=74549" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author></entry><entry><title>Another Rich DHTML libraries Script.Aculo.US</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/10/another-rich-dhtml-libraries-script-aculo-us.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/10/another-rich-dhtml-libraries-script-aculo-us.aspx</id><published>2008-11-10T04:01:48Z</published><updated>2008-11-10T04:01:48Z</updated><content type="html">&lt;p&gt;&lt;a href="http://script.aculo.us/"&gt;http://script.aculo.us/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.script.aculo.us/scriptaculous/"&gt;http://wiki.script.aculo.us/scriptaculous/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://wiki.script.aculo.us/scriptaculous/show/Demos/"&gt;http://wiki.script.aculo.us/scriptaculous/show/Demos/&lt;/a&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Check it out. &lt;p&gt;well, after finishing chapter 7 of pro JavaScript techniques .. &lt;p&gt;Now i check to this script aculo. when you see the demo then you will agree with the books, it&amp;#39;s the king of DHTML. &lt;p&gt;Now apperantly when you want to work with cross browser issue. you&amp;#39;ll find it&amp;#39;s a hard way to event get the properties, on ie it&amp;#39;s like this &lt;p&gt;on others w3c compliance like that. and so on. &lt;p&gt;so think of using like this one, jquery or moo.fx. 
&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/cipto/archive/2008/11/10/another-rich-dhtml-libraries-script-aculo-us.aspx&amp;amp;subject=Another Rich DHTML libraries Script.Aculo.US" 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/cipto/archive/2008/11/10/another-rich-dhtml-libraries-script-aculo-us.aspx&amp;amp;t=Another+Rich+DHTML+libraries+Script.Aculo.US" target="_blank" title="Submit Another Rich DHTML libraries Script.Aculo.US 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/cipto/archive/2008/11/10/another-rich-dhtml-libraries-script-aculo-us.aspx&amp;amp;title=Another+Rich+DHTML+libraries+Script.Aculo.US" target="_blank" title="Submit Another Rich DHTML libraries Script.Aculo.US 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/cipto/archive/2008/11/10/another-rich-dhtml-libraries-script-aculo-us.aspx&amp;amp;phase=2" target="_blank" title="Submit Another Rich DHTML libraries Script.Aculo.US 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/cipto/archive/2008/11/10/another-rich-dhtml-libraries-script-aculo-us.aspx&amp;amp;title=Another+Rich+DHTML+libraries+Script.Aculo.US" target="_blank" title="Add Another Rich DHTML libraries Script.Aculo.US 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=74471" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author><category term="DHTML" scheme="http://geeks.netindonesia.net/blogs/cipto/archive/tags/DHTML/default.aspx" /></entry><entry><title>LINQ and DISTINCT using IEqualityComparer</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/06/linq-and-distinct-using-iequalitycomparer.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/06/linq-and-distinct-using-iequalitycomparer.aspx</id><published>2008-11-06T08:25:00Z</published><updated>2008-11-06T08:25:00Z</updated><content type="html">&lt;p&gt;Lagi kurang kerjaan nich ....&amp;nbsp; :P tapi bukan berarti minta boss(Buat bos gue kalo baca artikel ini)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;this case is from &lt;a href="http://geeks.netindonesia.net/blogs/jimmy/archive/2008/11/05/linq-and-distinct-a-quick-note.aspx"&gt;Jimmy&amp;#39;s&lt;/a&gt; blog &lt;/p&gt;
&lt;p&gt;it raise a question&amp;nbsp; in my mind because i&amp;#39;ve used distinct in one column ,it works but when used on multiple column it doesn&amp;#39;t&lt;/p&gt;
&lt;p&gt;First of all disctinct is a &lt;a href="http://blogs.msdn.com/charlie/archive/2006/11/19/linq-farm-group-and-distinct.aspx"&gt;set&lt;/a&gt;, so you can&amp;#39;t use Lambda here, and only have to overload, whether nothing or iequalitycomparer.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Because of behind the hood disctinct use GetHashCode. &lt;a title="http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx" href="http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx"&gt;http://blog.jordanterrell.com/post/LINQ-Distinct()-does-not-work-as-expected.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So you Have to Define your own GetHashCode , this is all main key here. else it won&amp;#39;t work&lt;/p&gt;
&lt;p&gt;Now from the link of &lt;a&gt;msdnlocal&lt;/a&gt; use the XOR.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;because if you use iequalitycomparer will not work if the hashcode doesnot return unique combination of those fields.&lt;/p&gt;
&lt;p&gt;Now what i want to add is using iequality, same result as jimmy.&lt;/p&gt;
&lt;p&gt;the comparer&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; DistinctNameBirtDay : IEqualityComparer&amp;lt;Person&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Equals(Person x, Person y)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; x.Name.Equals(y.Name) &amp;amp;&amp;amp; x.BirthDate.Equals(y.BirthDate);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;            &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; GetHashCode(Person obj)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;                &lt;span class="kwrd"&gt;return&lt;/span&gt; obj.Name.GetHashCode() ^ obj.BirthDate.GetHashCode(); ;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;the main and distinct&lt;/pre&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;            var people = &lt;span class="kwrd"&gt;new&lt;/span&gt;[] {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&lt;span class="str"&gt;&amp;quot;Unyil&amp;quot;&lt;/span&gt;, DateTime.Today),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&lt;span class="str"&gt;&amp;quot;Cuplis&amp;quot;&lt;/span&gt;, DateTime.Today.AddDays(1)),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&lt;span class="str"&gt;&amp;quot;Ucok&amp;quot;&lt;/span&gt;, DateTime.Today.AddDays(2)),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&lt;span class="str"&gt;&amp;quot;Unyil&amp;quot;&lt;/span&gt;, DateTime.Today),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&lt;span class="str"&gt;&amp;quot;Cuplis&amp;quot;&lt;/span&gt;, DateTime.Today.AddDays(1)),&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;                &lt;span class="kwrd"&gt;new&lt;/span&gt; Person(&lt;span class="str"&gt;&amp;quot;Pak Raden&amp;quot;&lt;/span&gt;, DateTime.Today.AddDays(-5))&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;            };&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;           &lt;strong&gt; &lt;/strong&gt;&lt;/pre&gt;
&lt;h3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;var query = people.Distinct(&lt;span class="kwrd"&gt;new&lt;/span&gt; DistinctNameBirtDay());&lt;/strong&gt;&lt;/h3&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;           &lt;span class="rem"&gt;// var query = people.Distinct();&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt;(var o &lt;span class="kwrd"&gt;in&lt;/span&gt; query)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                Console.WriteLine(o.ToString());&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;            Console.ReadLine();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;&lt;/div&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/cipto/archive/2008/11/06/linq-and-distinct-using-iequalitycomparer.aspx&amp;amp;subject=LINQ and DISTINCT using IEqualityComparer" 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/cipto/archive/2008/11/06/linq-and-distinct-using-iequalitycomparer.aspx&amp;amp;t=LINQ+and+DISTINCT+using+IEqualityComparer" target="_blank" title="Submit LINQ and DISTINCT using IEqualityComparer 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/cipto/archive/2008/11/06/linq-and-distinct-using-iequalitycomparer.aspx&amp;amp;title=LINQ+and+DISTINCT+using+IEqualityComparer" target="_blank" title="Submit LINQ and DISTINCT using IEqualityComparer 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/cipto/archive/2008/11/06/linq-and-distinct-using-iequalitycomparer.aspx&amp;amp;phase=2" target="_blank" title="Submit LINQ and DISTINCT using IEqualityComparer 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/cipto/archive/2008/11/06/linq-and-distinct-using-iequalitycomparer.aspx&amp;amp;title=LINQ+and+DISTINCT+using+IEqualityComparer" target="_blank" title="Add LINQ and DISTINCT using IEqualityComparer 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=73273" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author><category term="linq" scheme="http://geeks.netindonesia.net/blogs/cipto/archive/tags/linq/default.aspx" /></entry><entry><title>Just a Simple sample Json and Json Web Service</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/05/just-a-simple-sample-json-and-json-web-service.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/05/just-a-simple-sample-json-and-json-web-service.aspx</id><published>2008-11-05T06:10:00Z</published><updated>2008-11-05T06:10:00Z</updated><content type="html">&lt;div class="csharpcode"&gt;The Web Service&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.Services;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.Script.Services;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    &lt;span class="rem"&gt;/// Summary description for WebService&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    [WebService(Namespace = &lt;span class="str"&gt;&amp;quot;http://tempuri.org/&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="rem"&gt;// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    [System.Web.Script.Services.ScriptService]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; WebService : System.Web.Services.WebService&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; WebService() { }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        [WebMethod]      &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; Chapter GetNextChapter(&lt;span class="kwrd"&gt;int&lt;/span&gt; bookid, &lt;span class="kwrd"&gt;int&lt;/span&gt; currentchapter,&lt;span class="kwrd"&gt;int&lt;/span&gt; currentpage)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Chapter(bookid,currentchapter,++currentpage,&lt;span class="str"&gt;&amp;quot;Texbox begin with Txt ,ComboBox begin with Cmb&amp;quot;&lt;/span&gt;,&lt;span class="str"&gt;&amp;quot;Naming Convention&amp;quot;&lt;/span&gt;) ;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        [WebMethod]&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; test()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;Tweweweweweu&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Chapter&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; BookID;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; currentChapter;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; page;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; content;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; chaptertitle;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; Chapter(&lt;span class="kwrd"&gt;int&lt;/span&gt; bookid, &lt;span class="kwrd"&gt;int&lt;/span&gt; currentchapter, &lt;span class="kwrd"&gt;int&lt;/span&gt; page, &lt;span class="kwrd"&gt;string&lt;/span&gt; content,&lt;span class="kwrd"&gt;string&lt;/span&gt; chaptertitle)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.BookID = bookid;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.currentChapter = currentchapter;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.page = page;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.content = content;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.chaptertitle = chaptertitle;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; Chapter() { }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    }&lt;/pre&gt;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="csharpcode"&gt;Let&amp;#39;s make a html page call mypage.htm or whatever&lt;/div&gt;
&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;!DOCTYPE html PUBLIC &lt;span class="str"&gt;&amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot;&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;lt;html xmlns=&lt;span class="str"&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt; application=&lt;span class="str"&gt;&amp;quot;manifest-file&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&amp;lt;head&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &amp;lt;title&amp;gt;c#&amp;lt;/title&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;lt;/head&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&amp;lt;body&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&amp;lt;input type=&lt;span class="str"&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;bookid&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;123&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&amp;lt;input type=&lt;span class="str"&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;currentchapter&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&amp;lt;input type=&lt;span class="str"&gt;&amp;quot;hidden&amp;quot;&lt;/span&gt; id=&lt;span class="str"&gt;&amp;quot;currentpage&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;1&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;lt;div id=&lt;span class="str"&gt;&amp;quot;ChapterTitle&amp;quot;&lt;/span&gt;&amp;gt;&amp;lt;h3 id=&lt;span class="str"&gt;&amp;quot;ChapterTitleBar&amp;quot;&lt;/span&gt;&amp;gt;Introduction&amp;lt;/h3&amp;gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&amp;lt;div id=&lt;span class="str"&gt;&amp;quot;ChapterContent&amp;quot;&lt;/span&gt; &amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;lt;textarea id=&lt;span class="str"&gt;&amp;quot;ChapterContentText&amp;quot;&lt;/span&gt; style=&lt;span class="str"&gt;&amp;quot;width:600px;height:600px&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;Whether you picked up &lt;span class="kwrd"&gt;this&lt;/span&gt; book from the bookstore, ordered it from an online site, or just got lucky and got a free copy, you had some notion of what you expected to be inside of it from the moment you first laid eyes on it. We discussed the concept with the publisher and others and it was interesting to hear the various perceptions that people had. The actual intent of &lt;span class="kwrd"&gt;this&lt;/span&gt; book &lt;span class="kwrd"&gt;is&lt;/span&gt; not to teach you how to &lt;span class="str"&gt;&amp;quot;hack&amp;quot;&lt;/span&gt; ASP.NET applications from a security perspective, nor &lt;span class="kwrd"&gt;is&lt;/span&gt; it a guide about how to hack together a poorly written application. Its intent &lt;span class="kwrd"&gt;is&lt;/span&gt; to give you insight into techniques that you can use to build and deliver real-life applications &lt;span class="kwrd"&gt;using&lt;/span&gt; ASP.NET.&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;Now that we have clarified the book&lt;span class="str"&gt;&amp;#39;s simple purpose, we should probably explain more about what it is and why it should be one of the few books you buy and recommend to everyone you know. Each of the authors of this book is a seasoned professional and is experienced with the .NET platform. All of us are Microsoft MVPs (Most Valuable Professionals) and have answered thousands of ASP.NET developer questions in various online and offline communities. In this book we share our insights into solutions for many questions we answer all the time. You can benefit from the cumulative experience we have gained in building real-life applications. Additionally, with the release of ASP.NET 2.0, we discuss a whole set of new issues in print for the first time.&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;This is not an introductory book on ASP.NET, as you can find several on the market already that provide an excellent overview and introduction to ASP.NET application development. Further, this is not intended to be a reference guide that explains every feature and option in ASP.NET. Again, between the numerous books that focus on providing a reference source and the ever-improving MSDN documentation, the sources of rich reference information are numerous.&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;What Is a Hack?&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;We are using the term hacks to refer to little-known solutions, undocumented features, and tips and tricks. Some people call them hacks; others call them creative solutions. You might have your own name for them, but they are all basically the same thing. Every application of any significance pushes the capabilities of ASP.NET and uses some form of a hack as part of the overall solution.&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;Some of the past hacks that you might recognize are page templates, multiple forms, URL rewriting, and SQL cache dependencies. These popular hacks have found their way into countless production applications. For each of these there are hundreds of other hacks that simply did not become as widely accepted, and therefore the community (meaning ASP.NET developers) suffered from the lack of opportunity. This book exposes several little-known, but useful hacks that you, as developers, can employ in production environments.&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;lt;/textarea&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;GetPreviousChapter&amp;quot; /&amp;gt;   &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;GetNextChapter&amp;quot; onclick=&amp;quot;getnext();&amp;quot;/&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;test&amp;quot; onclick=&amp;quot;gettest();&amp;quot;/&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    function makePOSTRequest(url, parameters) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        http_request = false;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        if (window.XMLHttpRequest) { // Mozilla, Safari,...&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            http_request = new XMLHttpRequest();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            if (http_request.overrideMimeType) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                // set type accordingly to anticipated content type&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;                // http_request.overrideMimeType(&amp;#39;text/xml&lt;span class="str"&gt;&amp;#39;);&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                http_request.overrideMimeType(&amp;#39;text/html&lt;span class="str"&gt;&amp;#39;);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        } else if (window.ActiveXObject) { // IE&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            try {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                http_request = new ActiveXObject(&amp;quot;Msxml2.XMLHTTP&amp;quot;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            } catch (e) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                try {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;                    http_request = new ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;                } catch (e) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;                    alert(&amp;quot;not good at all..&amp;quot;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        if (!http_request) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;            alert(&amp;#39;Cannot create XMLHTTP instance&lt;span class="str"&gt;&amp;#39;);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;            return false;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;        http_request.onreadystatechange = confirmResponse;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;        http_request.open(&amp;#39;POST&lt;span class="str"&gt;&amp;#39;, url, true);&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;        http_request.setRequestHeader(&amp;quot;Content-Type&amp;quot;, &amp;quot;application/json&amp;quot;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;        http_request.send(parameters);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;    function confirmResponse() {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;        if (http_request.readyState == 4) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;            if (http_request.status == 200) {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;                result = http_request.responseText;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;                DisplayResult(result);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                alert(&amp;#39;Response:\n\n&lt;span class="str"&gt;&amp;#39; + result);&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;            } else {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;                alert(&amp;#39;There was a problem with the request.&lt;span class="str"&gt;&amp;#39;);&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;    function DisplayResult(result) {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;       var thejson= eval(&amp;quot;(&amp;quot; + result+ &amp;quot;)&amp;quot;);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;       var dc = document.getElementById(&amp;#39;ChapterContentText&lt;span class="str"&gt;&amp;#39;);&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;       var ct = document.getElementById(&amp;#39;ChapterTitleBar&lt;span class="str"&gt;&amp;#39;);&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;       dc.innerHTML = thejson.d.content;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;       ct.innerHTML = thejson.d.chaptertitle;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;    function getnext() {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;        var url = &amp;#39;http:&lt;span class="rem"&gt;//localhost:9999/WebSite2/WebService.asmx/GetNextChapter&amp;#39;;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;        var bookid = document.getElementById(&lt;span class="str"&gt;&amp;#39;bookid&amp;#39;&lt;/span&gt;).defaultValue.toString();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;        var currentchapter = document.getElementById(&lt;span class="str"&gt;&amp;#39;currentchapter&amp;#39;&lt;/span&gt;).defaultValue.toString();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;        var currentpage = document.getElementById(&lt;span class="str"&gt;&amp;#39;currentpage&amp;#39;&lt;/span&gt;).defaultValue.toString();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;        var &lt;span class="kwrd"&gt;string&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;{ &amp;#39;bookid&amp;#39;: &amp;quot;&lt;/span&gt; + bookid + &lt;span class="str"&gt;&amp;quot;, &amp;#39;currentchapter&amp;#39;: &amp;quot;&lt;/span&gt; + currentchapter + &lt;span class="str"&gt;&amp;quot;, &amp;#39;currentpage&amp;#39;: &amp;quot;&lt;/span&gt; +currentpage + &lt;span class="str"&gt;&amp;quot;}&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;        var request = makePOSTRequest(url, &lt;span class="kwrd"&gt;string&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;    function gettest() {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;        var url = &lt;span class="str"&gt;&amp;#39;http://localhost:9999/WebSite2/WebService.asmx/test&amp;#39;&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;        var request = makePOSTRequest(url, &lt;span class="str"&gt;&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;&amp;lt;/body&amp;gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;&amp;lt;/html&amp;gt;&lt;/pre&gt;&lt;pre&gt;Now when you click next chapter it&amp;#39;s going to get from the web service.&lt;/pre&gt;&lt;pre&gt;To consume it json from a raw string notice the eval function.&lt;/pre&gt;&lt;pre&gt;notice how to pass the parameter to the web service it&amp;#39;s pattern {&amp;#39;paramname&amp;#39;:valueifinteger,&amp;#39;paramname2&amp;#39;,&amp;#39;valueifstring&amp;#39;}&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;u&gt;&lt;b&gt;27 November 2008&lt;/b&gt;&lt;/u&gt;&lt;/pre&gt;&lt;pre&gt;Or you can use jquery plugin, &amp;nbsp;&lt;/pre&gt;&lt;pre&gt;$(document).ready(function() {&lt;br /&gt;            $.ajaxDotNet(&amp;#39;WebService.asmx/GetNextChapter&amp;#39;,&lt;br /&gt;    {&lt;br /&gt;        verb: &amp;quot;POST&amp;quot;,&lt;/pre&gt;&lt;pre&gt;	data: {param1,param2,..n},&lt;br /&gt;        error: function(d){alert(d.responseText);},&lt;br /&gt;        success: function(obj) {&lt;br /&gt;            	//do what you want&lt;/pre&gt;&lt;pre&gt;		//$(&amp;quot;#Text1&amp;quot;).attr(&amp;#39;value&amp;#39;,obj.d);&lt;br /&gt;        }&lt;br /&gt;    });&lt;br /&gt;        }); &lt;br /&gt;&lt;/pre&gt;&lt;/div&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/cipto/archive/2008/11/05/just-a-simple-sample-json-and-json-web-service.aspx&amp;amp;subject=Just a Simple sample Json and Json Web Service" 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/cipto/archive/2008/11/05/just-a-simple-sample-json-and-json-web-service.aspx&amp;amp;t=Just+a+Simple+sample+Json+and+Json+Web+Service" target="_blank" title="Submit Just a Simple sample Json and Json Web Service 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/cipto/archive/2008/11/05/just-a-simple-sample-json-and-json-web-service.aspx&amp;amp;title=Just+a+Simple+sample+Json+and+Json+Web+Service" target="_blank" title="Submit Just a Simple sample Json and Json Web Service 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/cipto/archive/2008/11/05/just-a-simple-sample-json-and-json-web-service.aspx&amp;amp;phase=2" target="_blank" title="Submit Just a Simple sample Json and Json Web Service 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/cipto/archive/2008/11/05/just-a-simple-sample-json-and-json-web-service.aspx&amp;amp;title=Just+a+Simple+sample+Json+and+Json+Web+Service" target="_blank" title="Add Just a Simple sample Json and Json Web Service 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=73089" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author><category term="json" scheme="http://geeks.netindonesia.net/blogs/cipto/archive/tags/json/default.aspx" /></entry><entry><title>Exporting Template</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/03/exporting-template.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/03/exporting-template.aspx</id><published>2008-11-03T03:58:12Z</published><updated>2008-11-03T03:58:12Z</updated><content type="html">&lt;p&gt;&lt;a href="http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2761"&gt;Visual Studio Magazine Online | C# Corner: Define Your Own Item Templates&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Did you know what i like most of this guy WOrd is below.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Developers are lazy&lt;/strong&gt;. I don&amp;#39;t mean that in a bad way, &lt;strong&gt;but in the same way that a smart horse is a lazy horse&lt;/strong&gt;. Developers just don&amp;#39;t stand for repeating the same tasks without finding a way to automate them. &lt;strong&gt;I count myself among the lazy developers. I&amp;#39;m quite willing to spend time figuring out how to automate those repetitive tasks that I find myself doing often&lt;/strong&gt;. Visual Studio provides enough extensibility points that I&amp;#39;ve made a new rule for myself: If I do the same task twice, I figure out how to automate it.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I&amp;#39;m a very lazy developers , i don&amp;#39;t like to go to the same spot twice, Oooo n mmm I hate Repetitive TASK &lt;/p&gt; &lt;p&gt;i love finding new way . new solution, Faster, Performance :D&lt;/p&gt; &lt;p&gt;enough about me&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;You can export the template Item as, from previous post, i would like to export a page template aspx.&lt;/p&gt; &lt;p&gt;Now as i tried , it will not generate the Code behind code Class As the name generated by Input.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Now here &amp;#39;s the trick&lt;/p&gt; &lt;p&gt;from downtown, &lt;/p&gt; &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2005/09/09/424780.aspx"&gt;Defining Custom Item Templates in Web Projects with VS 2005 - ScottGu&amp;#39;s Blog&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;true&amp;quot; CodeFile=&amp;quot;Default.aspx.cs&amp;quot; Inherits=&amp;quot;MyProject.&lt;strong&gt;$safeitemname$&lt;/strong&gt;&amp;quot; %&amp;gt;  &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;public partial class &lt;strong&gt;$safeitemname$&lt;/strong&gt; : BasePage&lt;br /&gt;{ &lt;p&gt;&amp;nbsp; protected void Page_Load(object sender, EventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;p&gt;}&lt;br /&gt;} &lt;p&gt;Visual studio Will replace the &lt;strong&gt;$safeitemname$&lt;/strong&gt; with the name that you type in. and as you might suspected it replace with what you generated&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/cipto/archive/2008/11/03/exporting-template.aspx&amp;amp;subject=Exporting Template" 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/cipto/archive/2008/11/03/exporting-template.aspx&amp;amp;t=Exporting+Template" target="_blank" title="Submit Exporting Template 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/cipto/archive/2008/11/03/exporting-template.aspx&amp;amp;title=Exporting+Template" target="_blank" title="Submit Exporting Template 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/cipto/archive/2008/11/03/exporting-template.aspx&amp;amp;phase=2" target="_blank" title="Submit Exporting Template 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/cipto/archive/2008/11/03/exporting-template.aspx&amp;amp;title=Exporting+Template" target="_blank" title="Add Exporting Template 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=72759" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author></entry><entry><title>More On Compressing Asp Page and performances</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/03/more-on-compressing-asp-page-and-performances.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/11/03/more-on-compressing-asp-page-and-performances.aspx</id><published>2008-11-03T03:31:00Z</published><updated>2008-11-03T03:31:00Z</updated><content type="html">&lt;p&gt;3 days ago i&amp;#39;ve got a phone call from some project support. And i asked him how about the Bandwith test? did it passed?. Well he said that Compare to the last one, the size is Smaller 40%.&lt;/p&gt;  &lt;p&gt;How is it possible?&lt;/p&gt;  &lt;p&gt;1.Enable the Gzip content, which is already support by most browser and the feature is already exists since web 1.1&lt;/p&gt;  &lt;p&gt;How to do this? there are many ways,westwind way, And i followed the omar way again, Enabling the IIS6 GZip compression by changing the metabase , though i already implemented it, but i haven&amp;#39;t take a look the response content using tool. but it supposed to run , i already take a look at the Windows\temporaryiisfiles everything has a GZIP_what_.css or js or html,but to see the asp page is on the response content equals gzip .&lt;/p&gt;  &lt;p&gt;2.I&amp;#39;m using the ViewState Compressor&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;/// Summary description for Compressor&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO.Compression;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Compressor&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] Compress(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] data)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        MemoryStream output = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        GZipStream gzip = &lt;span class="kwrd"&gt;new&lt;/span&gt; GZipStream(output,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;                          CompressionMode.Compress, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        gzip.Write(data, 0, data.Length);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        gzip.Close();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; output.ToArray();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] Decompress(&lt;span class="kwrd"&gt;byte&lt;/span&gt;[] data)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        MemoryStream input = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        input.Write(data, 0, data.Length);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        input.Position = 0;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        GZipStream gzip = &lt;span class="kwrd"&gt;new&lt;/span&gt; GZipStream(input,&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                          CompressionMode.Decompress, &lt;span class="kwrd"&gt;true&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        MemoryStream output = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] buff = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;byte&lt;/span&gt;[64];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; read = -1;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        read = gzip.Read(buff, 0, buff.Length);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        &lt;span class="kwrd"&gt;while&lt;/span&gt; (read &amp;gt; 0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;            output.Write(buff, 0, read);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;            read = gzip.Read(buff, 0, buff.Length);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;        gzip.Close();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; output.ToArray();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;                   &lt;/pre&gt;
&lt;/div&gt;


&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="lnum"&gt;  &lt;/span&gt;And i moved it to the BasePage&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Web.UI;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="rem"&gt;/// Summary description for BasePage&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; BasePage : Page&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="rem"&gt;/// Give the Page Title&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; OnLoadComplete(EventArgs e)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrEmpty(Page.Title) || Page.Title == &lt;span class="str"&gt;&amp;quot;Untitled Page&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;            &lt;span class="rem"&gt;//ambil nama dari halaman&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; fileName = Path.GetFileNameWithoutExtension(Request.PhysicalPath);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            Page.Title = fileName;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="rem"&gt;//var anevent = new PipeLineEvent(HttpContext.Current.User.Identity.Name + &amp;quot; Visit This Page&amp;quot;, this);&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;        &lt;span class="rem"&gt;//anevent.Raise();&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;base&lt;/span&gt;.OnLoadComplete(e);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;    &lt;span class="rem"&gt;/// Handles on Load ViewState Zip from Page&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;viewState&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt; LoadPageStateFromPersistenceMedium()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt; viewState = Request.Form[&lt;span class="str"&gt;&amp;quot;__VSTATE&amp;quot;&lt;/span&gt;];&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bytes = Convert.FromBase64String(viewState);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        bytes = Compressor.Decompress(bytes);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        LosFormatter formatter = &lt;span class="kwrd"&gt;new&lt;/span&gt; LosFormatter();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; formatter.Deserialize(Convert.ToBase64String(bytes));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    &lt;span class="rem"&gt;/// Handles on Save ViewState Zip to Page&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;viewState&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SavePageStateToPersistenceMedium(&lt;span class="kwrd"&gt;object&lt;/span&gt; viewState)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;        LosFormatter formatter = &lt;span class="kwrd"&gt;new&lt;/span&gt; LosFormatter();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        StringWriter writer = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringWriter();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        formatter.Serialize(writer, viewState);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt; viewStateString = writer.ToString();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;        &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] bytes = Convert.FromBase64String(viewStateString);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;        bytes = Compressor.Compress(bytes);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;        ClientScript.RegisterHiddenField(&lt;span class="str"&gt;&amp;quot;__VSTATE&amp;quot;&lt;/span&gt;, Convert.ToBase64String(bytes));&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;    &lt;span class="rem"&gt;/// Move View State to Below Page&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;param name=&amp;quot;writer&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;    &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Render(System.Web.UI.HtmlTextWriter writer)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;        System.IO.StringWriter stringWriter = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.IO.StringWriter();&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;        HtmlTextWriter htmlWriter = &lt;span class="kwrd"&gt;new&lt;/span&gt; HtmlTextWriter(stringWriter);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;        &lt;span class="kwrd"&gt;base&lt;/span&gt;.Render(htmlWriter);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt; html = stringWriter.ToString();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;       &lt;span class="rem"&gt;// int StartPoint = html.IndexOf(&amp;quot;&amp;lt;input type=\&amp;quot;hidden\&amp;quot; name=\&amp;quot;__VIEWSTATE\&amp;quot;&amp;quot;);&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;        &lt;span class="kwrd"&gt;int&lt;/span&gt; StartPoint = html.IndexOf(&lt;span class="str"&gt;&amp;quot;&amp;lt;input type=\&amp;quot;hidden\&amp;quot; name=\&amp;quot;__VSTATE\&amp;quot;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (StartPoint &amp;gt;= 0)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; EndPoint = html.IndexOf(&lt;span class="str"&gt;&amp;quot;/&amp;gt;&amp;quot;&lt;/span&gt;, StartPoint) + 2;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt; viewstateInput = html.Substring(StartPoint, EndPoint - StartPoint);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;            html = html.Remove(StartPoint, EndPoint - StartPoint);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; FormEndStart = html.IndexOf(&lt;span class="str"&gt;&amp;quot;&amp;lt;/form&amp;gt;&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (FormEndStart &amp;gt;= 0)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;                html = html.Insert(FormEndStart, viewstateInput);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;        writer.Write(html);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;     &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now all you&amp;#39;ve gotta do is inherit from this base page. I&amp;#39;ll make another post on creating simple template&lt;/p&gt;

&lt;p&gt;Losformater is the forgotten formater. &lt;/p&gt;

&lt;p&gt;&amp;quot;The limited object serialization (LOS) formatter is designed for highly compact ASCII format serialization. This class supports serializing any object graph, but is optimized for those containing strings, arrays, and hashtables. It offers second order optimization for many of the .NET primitive types&amp;quot; &lt;/p&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;p&gt;For addition in performance&lt;/p&gt;

&lt;p&gt;Well, Do As Yslow suggest us.&lt;/p&gt;

&lt;p&gt;1.Move every javascript at the end of the body&lt;/p&gt;

&lt;p&gt;2.CSS always on top&lt;/p&gt;

&lt;p&gt;3.CN&lt;/p&gt;

&lt;p&gt;4.and so on and so on&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/cipto/archive/2008/11/03/more-on-compressing-asp-page-and-performances.aspx&amp;amp;subject=More On Compressing Asp Page and performances" 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/cipto/archive/2008/11/03/more-on-compressing-asp-page-and-performances.aspx&amp;amp;t=More+On+Compressing+Asp+Page+and+performances" target="_blank" title="Submit More On Compressing Asp Page and performances 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/cipto/archive/2008/11/03/more-on-compressing-asp-page-and-performances.aspx&amp;amp;title=More+On+Compressing+Asp+Page+and+performances" target="_blank" title="Submit More On Compressing Asp Page and performances 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/cipto/archive/2008/11/03/more-on-compressing-asp-page-and-performances.aspx&amp;amp;phase=2" target="_blank" title="Submit More On Compressing Asp Page and performances 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/cipto/archive/2008/11/03/more-on-compressing-asp-page-and-performances.aspx&amp;amp;title=More+On+Compressing+Asp+Page+and+performances" target="_blank" title="Add More On Compressing Asp Page and performances 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=72749" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author></entry><entry><title>Just a Simple CRUD WPF</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/10/30/just-a-simple-crud-wpf.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/10/30/just-a-simple-crud-wpf.aspx</id><published>2008-10-30T04:02:00Z</published><updated>2008-10-30T04:02:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/JustaSimpleCRUDWPF_91FB/image_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="154" alt="image" src="http://geeks.netindonesia.net/blogs/cipto/WindowsLiveWriter/JustaSimpleCRUDWPF_91FB/image_thumb.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Here is the code&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; SimpleCRUD&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="rem"&gt;/// Interaction logic for Window1.xaml&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="rem"&gt;/// &lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;partial&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Window1 : Window&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        IEnumerable&amp;lt;employee&amp;gt; employeecontainer;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        CollectionView view;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; Window1()&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;            InitializeComponent();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnexit_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;            &lt;span class="kwrd"&gt;this&lt;/span&gt;.Close();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Window_Loaded(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;            BindData();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;         }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BindData()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (MyTestDBDataContext datactx = &lt;span class="kwrd"&gt;new&lt;/span&gt; MyTestDBDataContext())&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                employeecontainer = (from a &lt;span class="kwrd"&gt;in&lt;/span&gt; datactx.employees select a);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                &lt;span class="kwrd"&gt;this&lt;/span&gt;.DataContext = datactx.employees;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;                view = (CollectionViewSource.GetDefaultView(employeecontainer) &lt;span class="kwrd"&gt;as&lt;/span&gt; CollectionView);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                view.MoveCurrentToFirst();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                stcRight.DataContext = view;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; ClearAllTextBox()&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var item &lt;span class="kwrd"&gt;in&lt;/span&gt; stcRight.Children)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (item.GetType().Name == &lt;span class="str"&gt;&amp;quot;TextBox&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;                    ((TextBox)item).Text = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;     &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; cmdadd_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (cmdadd.Content.ToString() == &lt;span class="str"&gt;&amp;quot;Add&amp;quot;&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;            ClearAllTextBox();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;            cmdadd.Content = &lt;span class="str"&gt;&amp;quot;Update&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;            sbaritem.Content = String.Empty;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;            txtid.Background = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.Gray);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;            txtname.Focus();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;            &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;                employee tmp = &lt;span class="kwrd"&gt;new&lt;/span&gt; employee();             &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;                tmp.Name = txtname.Text;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                tmp.Address = txtaddress.Text;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (MyTestDBDataContext datactx = &lt;span class="kwrd"&gt;new&lt;/span&gt; MyTestDBDataContext())&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                    datactx.employees.InsertOnSubmit(tmp);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;                    {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;                        datactx.SubmitChanges();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                        sbaritem.Content = &lt;span class="str"&gt;&amp;quot;Success Insert 1 Record&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;                        BindData();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;                        view.MoveCurrentToLast();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;                    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  73:  &lt;/span&gt;                    {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  74:  &lt;/span&gt;                        MessageBox.Show(ex.Message);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  75:  &lt;/span&gt;                    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  76:  &lt;/span&gt;                }               &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  77:  &lt;/span&gt;                cmdadd.Content = &lt;span class="str"&gt;&amp;quot;Add&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  78:  &lt;/span&gt;                txtid.Background = &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidColorBrush(Colors.White);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  79:  &lt;/span&gt;            &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  80:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  81:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  82:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  83:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnmovefirst_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  84:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  85:  &lt;/span&gt;            view.MoveCurrentToFirst();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  86:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  87:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  88:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnprevious_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  89:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  90:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(view.CurrentPosition&amp;gt;0)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  91:  &lt;/span&gt;            view.MoveCurrentToPrevious();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  92:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  93:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  94:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnmovenext_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  95:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  96:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (view.CurrentPosition &amp;lt; view.Count - 1)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  97:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt;  98:  &lt;/span&gt;                view.MoveCurrentToNext();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  99:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 100:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 101:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 102:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btndelete_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 103:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 104:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;(view.CurrentPosition&amp;gt;-1)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 105:  &lt;/span&gt;            {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 106:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (MyTestDBDataContext datactx = &lt;span class="kwrd"&gt;new&lt;/span&gt; MyTestDBDataContext())&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 107:  &lt;/span&gt;                {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 108:  &lt;/span&gt;                    datactx.employees.Attach((employee)view.CurrentItem);&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 109:  &lt;/span&gt;                    datactx.employees.DeleteOnSubmit((employee)view.CurrentItem);&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 110:  &lt;/span&gt;                    datactx.SubmitChanges();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 111:  &lt;/span&gt;                    BindData();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 112:  &lt;/span&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 113:  &lt;/span&gt;            }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 114:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 115:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 116:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btnmovelast_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 117:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 118:  &lt;/span&gt;            view.MoveCurrentToLast();&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 119:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 120:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 121:  &lt;/span&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; btncancel_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, RoutedEventArgs e)&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 122:  &lt;/span&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 123:  &lt;/span&gt;            view.MoveCurrentToFirst();&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 124:  &lt;/span&gt;            cmdadd.Content = &lt;span class="str"&gt;&amp;quot;Add&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 125:  &lt;/span&gt;        }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 126:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 127:  &lt;/span&gt;     &lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 128:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="lnum"&gt; 129:  &lt;/span&gt;    }&lt;/pre&gt;&lt;pre&gt;&lt;span class="lnum"&gt; 130:  &lt;/span&gt;}&lt;/pre&gt;&lt;/div&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/cipto/archive/2008/10/30/just-a-simple-crud-wpf.aspx&amp;amp;subject=Just a Simple CRUD WPF" 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/cipto/archive/2008/10/30/just-a-simple-crud-wpf.aspx&amp;amp;t=Just+a+Simple+CRUD+WPF" target="_blank" title="Submit Just a Simple CRUD WPF 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/cipto/archive/2008/10/30/just-a-simple-crud-wpf.aspx&amp;amp;title=Just+a+Simple+CRUD+WPF" target="_blank" title="Submit Just a Simple CRUD WPF 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/cipto/archive/2008/10/30/just-a-simple-crud-wpf.aspx&amp;amp;phase=2" target="_blank" title="Submit Just a Simple CRUD WPF 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/cipto/archive/2008/10/30/just-a-simple-crud-wpf.aspx&amp;amp;title=Just+a+Simple+CRUD+WPF" target="_blank" title="Add Just a Simple CRUD WPF 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=71367" width="1" height="1"&gt;</content><author><name>cipto</name><uri>http://geeks.netindonesia.net/members/cipto.aspx</uri></author><category term="WPF" scheme="http://geeks.netindonesia.net/blogs/cipto/archive/tags/WPF/default.aspx" /></entry><entry><title>Changing 2D to 3D</title><link rel="alternate" type="text/html" href="http://geeks.netindonesia.net/blogs/cipto/archive/2008/10/29/changing-2d-to-3d.aspx" /><id>http://geeks.netindonesia.net/blogs/cipto/archive/2008/10/29/changing-2d-to-3d.aspx</id><published>2008-10-29T08:20:00Z</published><updated>2008-10-29T08:20:00Z</updated><content type="html">&lt;p&gt;Now i&amp;#39;ve just take a look at this 3d WPF HOL&lt;/p&gt;&lt;p&gt;to make everything inside a grid, which is just ordinary 2d . To become a 3D&lt;/p&gt;&lt;p&gt;just download the 3d Tools on code plex, reference it on your WPF project&lt;/p&gt;&lt;p&gt;add a reference for the namespace in your xaml xmlns:tools=&amp;quot;clr-namespace:_3DTools;assembly=3DTools&amp;quot; &lt;/p&gt;&lt;p&gt;&amp;lt;Grid&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tools:TrackballDecorator&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tools:Interactive3DDecorator&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Viewport3D&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Viewport3D.Camera&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;PerspectiveCamera Position=&amp;quot;0,0,-10&amp;quot; LookDirection=&amp;quot;0,0,1&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UpDirection=&amp;quot;0,1,0&amp;quot; FieldOfView=&amp;quot;45&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Viewport3D.Camera&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tools:InteractiveVisual3D&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tools:InteractiveVisual3D.Geometry&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;MeshGeometry3D Positions=&amp;quot;-3,-1,1.5 3,-1,1.5 -3,-1,0 3,-1,0 -3,1,0 3,1,0 -3,1,1.5 3,1,1.5&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TextureCoordinates=&amp;quot;1,1 0,1 0.75,1 0.25,1 0.75,0 0.25,0 1,0 0,0&amp;quot;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TriangleIndices=&amp;quot;0,6,4 0,4,2 2,4,5 2,5,3 3,5,1 1,5,7&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tools:InteractiveVisual3D.Geometry&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tools:InteractiveVisual3D.Visual&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------------------BELOW IS YOUR CONTENT---------------------------------------------&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ---------------------Till here---------------------------------------------------------------------------- &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tools:InteractiveVisual3D.Visual&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tools:InteractiveVisual3D&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ModelVisual3D&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ModelVisual3D.Content&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;