<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8461613856018617594</id><updated>2012-02-16T18:17:03.894+08:00</updated><category term='生活'/><category term='SharePoint Server 2007'/><category term='PHP'/><category term='Linux / Unix'/><category term='SharePoint Services 3.0'/><category term='Misc. IT stuff'/><category term='Javascript'/><category term='InfoPath 2007'/><category term='Flex / Flash'/><category term='VPC / VM'/><category term='Java - Struts'/><category term='SQL Server 2005'/><category term='AJAX'/><category term='Windows Server 2008'/><category term='VSTS 2008'/><category term='MS Office'/><category term='ASP.NET MVC'/><category term='Silverlight'/><category term='.NET'/><title type='text'>阿俊戰記 - IT</title><subtitle type='html'>這是一場無盡的戰鬥...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>85</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4402932149537607096</id><published>2010-02-25T16:27:00.001+08:00</published><updated>2010-02-25T16:27:22.739+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><title type='text'>Viewing detailed Workflow history list (Hidden List)</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When writing MOSS 2007 Workflow, you can log events (e.g. Log exceptions detail for debugging) to workflow history, which can be view in the task item page.&lt;/p&gt;  &lt;p&gt;However, the task item page only shows simplified version of workflow history item. To view detailed workflow history list. You will have to enter the URL of the hidden list, in the format shown below:    &lt;br /&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;http://[servername]/[sitename]/lists/Workflow%20History&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;For example if your site’s default page is:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;http://servername/sites/sitename/default.aspx&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;then the detailed workflow history list URL will be:&lt;/p&gt; &lt;em&gt;&lt;font color="#ffffff"&gt;     &lt;p&gt;http://servername/sites/sitename/lists/Workflow%20History&lt;/p&gt;   &lt;/font&gt;&lt;/em&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4402932149537607096?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4402932149537607096/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4402932149537607096' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4402932149537607096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4402932149537607096'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2010/02/viewing-detailed-workflow-history-list.html' title='Viewing detailed Workflow history list (Hidden List)'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8546870988206140799</id><published>2010-02-03T18:05:00.001+08:00</published><updated>2010-02-03T18:05:19.832+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex / Flash'/><title type='text'>Getting selected RadioButton value</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.s-gray.com/" target="_blank"&gt;Stephen Gray&lt;/a&gt; has a post about &lt;a href="http://colourgray.wordpress.com/2008/08/11/flex-getting-selected-radiobutton-value/" target="_blank"&gt;getting selected RadioButton value&lt;/a&gt; in Flex. It points out the use of &lt;em&gt;&lt;font color="#ffffff"&gt;RadioButtonGroup&lt;/font&gt;&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://colourgray.wordpress.com/2008/08/11/flex-getting-selected-radiobutton-value/" target="_blank"&gt;Flex getting selected RadioButton value&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Source from &lt;a href="http://blog.s-gray.com/" target="_blank"&gt;Stephen Gray&lt;/a&gt;’s blog &lt;a href="http://colourgray.wordpress.com/2008/08/11/flex-getting-selected-radiobutton-value/" target="_blank"&gt;post&lt;/a&gt;:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a &lt;em&gt;&lt;font color="#ffffff"&gt;“RadioButtonGroup”&lt;/font&gt;&lt;/em&gt; MXML tag and give a id to it. &lt;/li&gt;    &lt;li&gt;Assign the RadioButtons’ &lt;em&gt;&lt;font color="#ffffff"&gt;“groupName”&lt;/font&gt;&lt;/em&gt; attribute to point to the RadioButtonGroup at step 1 (remember to use “{}”)       &lt;br /&gt;      &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4; text-align: left"&gt;       &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;         &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;mx:RadioButtonGroup&lt;/span&gt; &lt;span style="color: #ff0000"&gt;id&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;myRadioButtonGroup&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;mx:RadioButton&lt;/span&gt; &lt;span style="color: #ff0000"&gt;label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;I like RadioButtons&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;groupName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{myRadioButtonGroup}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;left&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;505&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;top&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;64&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;selected&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

        &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;mx:RadioButton&lt;/span&gt; &lt;span style="color: #ff0000"&gt;label&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;I don't like RadioButtons&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;groupName&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;{myRadioButtonGroup}&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;left&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;348&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;top&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;62&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;false&amp;quot;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/li&gt;

  &lt;li&gt;Access the selected value by the RadioButtonGroup 
    &lt;br /&gt;

    &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4; text-align: left"&gt;
      &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;
        &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;Alert.show(myRadioButtonGroup.selectedValue.toString());&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8546870988206140799?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8546870988206140799/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8546870988206140799' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8546870988206140799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8546870988206140799'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2010/02/getting-selected-radiobutton-value.html' title='Getting selected RadioButton value'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8481208907183005420</id><published>2009-10-09T23:58:00.000+08:00</published><updated>2009-10-09T23:58:00.262+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>PHP crash with some MySql functions</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I has been playing with a &lt;a href="http://en.wikipedia.org/wiki/WAMP" target="_blank"&gt;WAMP&lt;/a&gt; web site using Joomla 1.5 as the CMS. Actually I am just doing the setup when I encounter this issue. When I reached the “Database Configuration” step in Joomla installation, Apache keeps crashing when I proceeded, and the Event Log said that:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;Faulting application httpd.exe, version 2.2.11.0, faulting module &amp;gt; php5ts.dll, version 5.2.10.10, fault address 0x0000ac6a.&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Again, with some Googling I found that I am not alone and there are several solutions for this issue, which is caused by wrong &lt;font color="#ff0000"&gt;&amp;quot;libMySql.dll&amp;quot;&lt;/font&gt; module used.&lt;/p&gt;  &lt;p&gt;Both MySQL and PHP provides the &lt;font color="#ff0000"&gt;&amp;quot;libMySql.dll&amp;quot;&lt;/font&gt; module. When using PHP, we should use the &lt;font color="#ff0000"&gt;&amp;quot;libMySql.dll&amp;quot;&lt;/font&gt; module provided by PHP, but not MySQL.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://hk2.php.net/manual/en/mysql.installation.php" target="_blank"&gt;PHP Installation, MySQL&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://be-evil.org/post-117.html" target="_blank"&gt;php使用MySql函数导致Apache(iis)崩溃的问题&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.1-script.com/forums/PHP-Crash-when-use-some-mysql-function-article117756--7.htm#117769" target="_blank"&gt;PHP Crash when use some mysql function&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are several ways to solve this problem, I use the first method:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Rename the &lt;font color="#ff0000"&gt;&amp;quot;libMySql.dll&amp;quot;&lt;/font&gt; file located at your MySQL &lt;em&gt;&lt;font color="#ffffff"&gt;“&amp;lt;InstallDir&amp;gt;/bin”&lt;/font&gt;&lt;/em&gt; folder&lt;/li&gt;    &lt;li&gt;Remove your MySQL &lt;em&gt;&lt;font color="#ffffff"&gt;“&amp;lt;InstallDir&amp;gt;/bin”&lt;/font&gt;&lt;/em&gt; folder path from the system’s path environment variable&lt;/li&gt;    &lt;li&gt;Copy the &lt;font color="#ff0000"&gt;&amp;quot;libMySql.dll&amp;quot;&lt;/font&gt; file from your PHP install folder to &lt;em&gt;&lt;font color="#ffffff"&gt;“%SystemRoot%/system32”&lt;/font&gt;&lt;/em&gt; folder&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8481208907183005420?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8481208907183005420/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8481208907183005420' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8481208907183005420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8481208907183005420'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/10/php-crash-with-some-mysql-functions.html' title='PHP crash with some MySql functions'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7484004053436862786</id><published>2009-10-07T10:51:00.001+08:00</published><updated>2009-10-07T10:51:53.540+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Unlock files used by processes</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I think most of the Windows users have seen the screen saying that &lt;em&gt;&lt;font color="#ffffff"&gt;“Cannot delete XXX: It is being used by another person or program”&lt;/font&gt;&lt;/em&gt;. This is quite annoying as you don’t have a clue what is actually locking the file. Now I would like to share some of the programs I used (or heard) to solve this problem.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ffffff"&gt;Unlocker - &lt;/font&gt;&lt;/strong&gt;&lt;a title="http://ccollomb.free.fr/unlocker/" href="http://ccollomb.free.fr/unlocker/" target="_blank"&gt;http://ccollomb.free.fr/unlocker/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It is a very nice program which add a extensions to your Windows Explorer, so that you can right-click on any file/folder and select the “unlocker” option. It will shows all processes locking the file for your to decide what to do next. However the latest version &lt;u&gt;(1.8.7) does not supports 64-bit OS&lt;/u&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ffffff"&gt;LockHunter - &lt;/font&gt;&lt;/strong&gt;&lt;a title="http://lockhunter.com/" href="http://lockhunter.com/" target="_blank"&gt;http://lockhunter.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;LockHunter is a similar tool to Unlocker, Windows Explorer extensions. However &lt;u&gt;it works for both 32-bit and 64-bit OS&lt;/u&gt;, and it delete files to recycle bin.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ffffff"&gt;&lt;strong&gt;Process Explorer -&lt;/strong&gt; &lt;/font&gt;&lt;a title="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" target="_blank"&gt;http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Finding what files (handles) is used by a process is just one of the features of Process Explorer. As it actually shows much more information than the list of handles used. Because it is more powerful, it is also more complicated to use.&lt;/p&gt;  &lt;p&gt;To use Process Explorer for unlocking files from processes, following the steps below:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Select &lt;font color="#ff0000"&gt;&amp;quot;Find&amp;quot;&lt;/font&gt; –&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Find Handle or DLL&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Enter the full path of the file as the Handle substring, click &lt;font color="#ff0000"&gt;&amp;quot;Search&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;For each of the search results that match the file you want to delete, right-click on the handle and choose &lt;font color="#ff0000"&gt;&amp;quot;Close Handle&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Done! However I recommend using “LockHunter” if you ONLY want to unlock files. ;-)&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7484004053436862786?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7484004053436862786/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7484004053436862786' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7484004053436862786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7484004053436862786'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/10/unlock-files-used-by-processes.html' title='Unlock files used by processes'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4581472001270526156</id><published>2009-09-16T18:30:00.001+08:00</published><updated>2009-09-23T16:04:49.954+08:00</updated><title type='text'>Single Sign-on for ASP.NET 3.5 and Legacy ASP</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I got a task on setting Single Sign-on (SSO) for a ASP.NET site and legacy ASP site. For this, Ting Huang has written a very nice post on &lt;a href="http://www.wwwcoder.com/" target="_blank"&gt;wwwcoder.com&lt;/a&gt;. The idea behind is to create a “bare bone” API for the &lt;em&gt;&lt;font color="#ffffff"&gt;FormsAuthentication&lt;/font&gt;&lt;/em&gt; class (without the need of &lt;em&gt;&lt;font color="#ffffff"&gt;HttpContext&lt;/font&gt;&lt;/em&gt;), and wrap it in a COM object, which can be used by ASP page. However the post is regarding ASP.NET 1.1 and I am using ASP.NET 3.5, for which the &lt;em&gt;&lt;font color="#ffffff"&gt;FormsAuthentication&lt;/font&gt;&lt;/em&gt; class is quite different.&lt;/p&gt;  &lt;p&gt;With some more googling I found the way to manually create the authentication ticket, encrypt it and save it to cookie. Using these technique I can make a ASP page create a authenticate cookie which can be consumed and recognized by a ASP.NET web application.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.wwwcoder.com/Directory/tabid/68/type/art/site/4922/parentid/258/Default.aspx" target="_blank"&gt;Creating a Single Sign-on for ASP.NET Application and Legacy ASP Application (Part II)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.neudesic.com/blogs/michael_morozov/archive/2006/03/17/72.aspx" target="_blank"&gt;Single Sign-On for everyone&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.appdomainsetup.configurationfile.aspx" target="_blank"&gt;AppDomainSetup.ConfigurationFile Property&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Write the “bare bone” API for the FormsAuthentication class&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;using&lt;/span&gt; System.Web.Security;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; SingleSignon&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;AuthAPI&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; AuthAPI()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; FormsCookieName&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt; { &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FormsAuthentication&lt;/span&gt;.FormsCookieName; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Initialize()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;FormsAuthentication&lt;/span&gt;.Initialize();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; SetAuthCookie(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; userName,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;bool&lt;/span&gt; createPersistentCookie)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;FormsAuthentication&lt;/span&gt;.SetAuthCookie(userName, createPersistentCookie);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #a31515"&gt;&amp;quot;success&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #a31515"&gt;&amp;quot;error: &amp;quot;&lt;/span&gt; + e.Message;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; GetAuthCookieValue(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; userName,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;bool&lt;/span&gt; createPersistentCookie&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;FormsAuthenticationTicket&lt;/span&gt; newticket = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FormsAuthenticationTicket&lt;/span&gt;(userName, createPersistentCookie, 30);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #2b91af"&gt;FormsAuthentication&lt;/span&gt;.Encrypt(newticket);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;catch&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: #a31515"&gt;&amp;quot;error: &amp;quot;&lt;/span&gt; + e.StackTrace;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; GetAuthTicketInfo(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; cookieValue,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; cookiePath,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; expireDate,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; expired,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;bool&lt;/span&gt; isPersistent,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; issueDate,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; userName,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; userData,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; version&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; )&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;FormsAuthenticationTicket&lt;/span&gt; ticket = &lt;span style="color: #2b91af"&gt;FormsAuthentication&lt;/span&gt;.Decrypt(cookieValue);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; cookiePath = ticket.CookiePath;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; expireDate = ticket.Expiration.ToShortDateString();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; expired = ticket.Expired;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; isPersistent = ticket.IsPersistent;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; issueDate = ticket.IssueDate.ToShortDateString();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; userName = ticket.Name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; userData = ticket.UserData;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; version = ticket.Version;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Setup web.config file for Forms Authentication&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;authentication&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Forms&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;forms&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DEMO&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;loginUrl&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;login.aspx&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;protection&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;All&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;timeout&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;30&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;authentication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;authorization&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;deny&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;users&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;?&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;authorization&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;machineKey&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;validationKey&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;'&lt;span style="color: blue"&gt;9804…CB69&lt;/span&gt;'&lt;span style="color: red"&gt; decryptionKey&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;'&lt;span style="color: blue"&gt;FEA…D648&lt;/span&gt;' &lt;span style="color: red"&gt;validation&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;'&lt;span style="color: blue"&gt;SHA1&lt;/span&gt;'&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Be reminded to set the &lt;font color="#ff0000"&gt;&amp;quot;machineKey&amp;quot; &lt;/font&gt;for the ASP.NET web application and share it with legacy ASP site.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Add “AuthAPI” assembly to Global Assembly Cache (GAC) and register it as a COM object&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The legacy ASP site is going to use the AuthAPI through COM interface, so we should first register the API as a COM object. To do this, we have to:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Sign the assembly &lt;/li&gt;    &lt;li&gt;Add the assembly to GAC. I use the “gacutil.exe” tool at      &lt;br /&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe&lt;/font&gt;&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;Register the assembly as a COM object. Use “regasm” tool at      &lt;br /&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\regasm&lt;/font&gt;&lt;/em&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Indeed you can use the &lt;font color="#ff0000"&gt;&amp;quot;Post-build event command line&amp;quot;&lt;/font&gt; in Visual Studio to do these actions every time you rebuild the assembly. Just remember to unregister the COM object and uninstall the assembly from GAC first.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Setup/Create the “dllhost.exe.config” file for the legacy ASP site&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You may wonder how the “AuthAPI” load the Forms authentication settings, does it read from the web.config file of the ASP.NET web app? No, actually it does not have any linkage to the web app. So how can we know which config file is the AuthAPI looking for? We can get the file path from “AppDomain.CurrentDomain.SetupInformation.ConfigurationFile”, and it turns out to be a config file at &lt;em&gt;&lt;font color="#ffffff"&gt;“C:\WINDOWS\system32\dllhost.exe.config”&lt;/font&gt;&lt;/em&gt;. It make sense as “dllhost.exe” is the “DCOM DLL Host Process”.&lt;/p&gt;  &lt;p&gt;OK so we have to edit this “dllhost.exe.config” file to configure the FormsAuthentication component of “AuthAPI”. You may not see this file in “C:\WINDOWS\system32\”, so just create it and put the Forms authentication configuration in it.&lt;/p&gt;  &lt;p&gt;Sample of “dllhost.exe.config” file&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configSections&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;sectionGroup&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;system.web.extensions&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.Web...&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--&lt;/span&gt;&lt;span style="color: green"&gt; Copy all settings from web.config file &lt;/span&gt;&lt;span style="color: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;sectionGroup&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configSections&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--&lt;/span&gt;&lt;span style="color: green"&gt; Copy Forms Authentication settings and Machine key from web.config file &lt;/span&gt;&lt;span style="color: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Use “AuthAPI” in legacy ASP site to create a Cookie with valid authentication ticket&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now we have the COM object setup and configured, we can use it in our legacy ASP site. The following code shows the function of creating a authentication ticket and putting it into a Cookie. If the ASP.NET web app and the legacy ASP site share the same domain. The Cookie will be shared between them and the Single Sign-on is achieved!&lt;/p&gt;  &lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; height: 276px; background-color: #f4f4f4; text-align: left"&gt;   &lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&amp;lt;body&amp;gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;    &amp;lt;%          &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;Set&lt;/span&gt; ulogin = Server.CreateObject(&lt;span style="color: #a31515"&gt;&amp;quot;SingleSignon.AuthAPI&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            userName = &lt;span style="color: #a31515"&gt;&amp;quot;TestUser&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;Call&lt;/span&gt; ulogin.Initialize()&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            response.write(&lt;span style="color: #a31515"&gt;&amp;quot;FormsCookieName: &amp;quot;&lt;/span&gt; + ulogin.FormsCookieName() + &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;br&amp;gt;&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            authCookieValue = ulogin.GetAuthCookieValue(userName, &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            response.write(&lt;span style="color: #a31515"&gt;&amp;quot;AuthCookieValue: &amp;quot;&lt;/span&gt; + authCookieValue)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;Call&lt;/span&gt; AddCookie ( ulogin.FormsCookieName(), &lt;span style="color: #a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, authCookieValue, 30, &lt;span style="color: #a31515"&gt;&amp;quot;&amp;quot;&lt;/span&gt;)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;            &lt;span style="color: #0000ff"&gt;set&lt;/span&gt; ulogin = &lt;span style="color: #0000ff"&gt;nothing&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;    %&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"&gt;&amp;lt;/body&amp;gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4581472001270526156?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4581472001270526156/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4581472001270526156' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4581472001270526156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4581472001270526156'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/09/single-sign-on-for-aspnet-35-and-legacy.html' title='Single Sign-on for ASP.NET 3.5 and Legacy ASP'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2000370784040261221</id><published>2009-09-09T18:55:00.001+08:00</published><updated>2009-09-09T18:55:38.801+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPC / VM'/><title type='text'>Disabling Time Synchronization under Virtual PC 2007</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;VPC with Virtual Machine Additions installed will automatically synchronize its time with host. &lt;a href="http://blogs.msdn.com/virtual_pc_guy/default.aspx" target="_blank"&gt;Virtual PC Guy&lt;/a&gt; tells us how to disable it in his post.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/virtual_pc_guy/archive/2007/11/28/disabling-time-synchronization-under-virtual-pc-2007.aspx" target="_blank"&gt;Disabling Time Synchronization under Virtual PC 2007&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Shut down the VPC (I found that cannot use “Save state”) &lt;/li&gt;    &lt;li&gt;Open the .VMC file with notepad and add the &lt;font color="#ff0000"&gt;&amp;quot;components&amp;quot;&lt;/font&gt; element in it:       &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;integration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;microsoft&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;mouse&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;allow&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;boolean&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;true&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;allow&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;mouse&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;!--&lt;/span&gt;&lt;span style="color: green"&gt;Add the &amp;quot;components&amp;quot; element&lt;/span&gt;&lt;span style="color: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;components&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;host_time_sync&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;enabled&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;boolean&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;enabled&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;host_time_sync&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;components&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;Save the .VMC file and restart VPC, done!&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2000370784040261221?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2000370784040261221/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2000370784040261221' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2000370784040261221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2000370784040261221'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/09/disabling-time-synchronization-under.html' title='Disabling Time Synchronization under Virtual PC 2007'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2612087029093586620</id><published>2009-09-09T16:42:00.001+08:00</published><updated>2009-09-09T16:42:06.040+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS 2008'/><title type='text'>Associate XSD to XML file to enable IntelliSense</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;We .Net developers use IntelliSense extensively in our everyone work. I am happy using IntelliSense for XML files like web.config file. Then one day I come across a XML file with schema not available out-of-the-box from VS (think about NHibernate hbm files). How can I use IntelliSense with it?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.danielmoth.com/Blog/2007/10/xml-schemas-dialog-in-visual-studio.html" target="_blank"&gt;XML Schemas dialog in Visual Studio 2008&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;To use schema(s) for a XML file&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open a XML file in Visual Studio 2008&lt;/li&gt;    &lt;li&gt;In menu bar, select &lt;font color="#ff0000"&gt;&amp;quot;XML&amp;quot;&lt;/font&gt; =&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Schemas…&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;In the &lt;font color="#ff0000"&gt;&amp;quot;XML Schemas&amp;quot;&lt;/font&gt; windows, select &lt;font color="#ff0000"&gt;&amp;quot;Use this Schema&amp;quot;&lt;/font&gt; in the &lt;font color="#ff0000"&gt;&amp;quot;Use&amp;quot;&lt;/font&gt; column next to your desired schema&lt;/li&gt;    &lt;li&gt;Click OK, done!&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The &lt;font color="#ff0000"&gt;&amp;quot;XML Schemas&amp;quot;&lt;/font&gt; windows will search for schema files (.XSD) in your project or in folder &lt;em&gt;&lt;font color="#ffffff"&gt;%VS 2008 install folder%\xml\Schemas&lt;/font&gt;&lt;/em&gt;. You can also manually add schemas files using the &lt;font color="#ff0000"&gt;&amp;quot;Add…&amp;quot;&lt;/font&gt; button&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2612087029093586620?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2612087029093586620/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2612087029093586620' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2612087029093586620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2612087029093586620'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/09/associate-xsd-to-xml-file-to-enable.html' title='Associate XSD to XML file to enable IntelliSense'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7430031959860504328</id><published>2009-09-09T11:08:00.001+08:00</published><updated>2009-09-09T11:08:47.025+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Introduction to ASP.NET Forms Authentication</title><content type='html'>&lt;p&gt;In ASP.NET, forms authentication means that users authenticate themselves using a Web form. This feature is provided by the HTTP module &lt;em&gt;&lt;font color="#ffffff"&gt;FormsAuthenticationModule&lt;/font&gt;&lt;/em&gt;. Setting up forms authentication in ASP.NET is quite simple and is presented in a post at &lt;a href="http://windowsdevcenter.com/" target="_blank"&gt;WindowsDevCenter.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://ondotnet.com/pub/a/dotnet/2003/01/06/formsauthp1.html" target="_blank"&gt;ASP.NET Forms Authentication - Part 1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa480476.aspx" target="_blank"&gt;Explained: Forms Authentication in ASP.NET 2.0&lt;/a&gt; (&lt;a href="http://msdn.microsoft.com/en-us/library/default.aspx" target="_blank"&gt;MSDN&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx" target="_blank"&gt;FormsAuthentication Class&lt;/a&gt; (&lt;a href="http://msdn.microsoft.com/en-us/library/default.aspx" target="_blank"&gt;MSDN&lt;/a&gt;) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Enable anonymous access in IIS.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Anonymous access is enabled by default. If not, enable it manually for the web application.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Modify web.config file to allow Forms Authentication&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To allow Forms Authentication, first we have to add the &lt;font color="#ff0000"&gt;&amp;quot;authentication&amp;quot;&lt;/font&gt; element under &lt;font color="#ff0000"&gt;&amp;quot;system.web&amp;quot;&lt;/font&gt; in web.config.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In the &lt;font color="#ff0000"&gt;&amp;quot;authentication&amp;quot;&lt;/font&gt; element, set the &lt;font color="#ff0000"&gt;&amp;quot;mode&amp;quot;&lt;/font&gt; attribute to &lt;em&gt;&lt;font color="#ffffff"&gt;“Forms”&lt;/font&gt;&lt;/em&gt; to specify Forms Authentication. &lt;/li&gt;    &lt;li&gt;Add a &lt;font color="#ff0000"&gt;&amp;quot;forms&amp;quot;&lt;/font&gt; element under &lt;font color="#ff0000"&gt;&amp;quot;authentication&amp;quot;&lt;/font&gt; element to specify configuration settings for Forms Authentication &lt;/li&gt;    &lt;li&gt;Add a &lt;font color="#ff0000"&gt;&amp;quot;authorization&amp;quot;&lt;/font&gt; element under &lt;font color="#ff0000"&gt;&amp;quot;authentication&amp;quot;&lt;/font&gt; element to deny all anonymous users and redirect them to login page. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Code Snippet (web.config):&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;authentication&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;mode&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Forms&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;forms&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DEMO&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;loginUrl&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;login.aspx&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;protection&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;All&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;timeout&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;30&lt;/span&gt;&amp;quot;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;authentication&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;authorization&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;deny&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;users&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;?&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;authorization&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.web&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Create the login page&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The login page is where denied users will be redirected to. It is referenced by &lt;font color="#ff0000"&gt;&amp;quot;loginUrl&amp;quot;&lt;/font&gt; attribute in &lt;font color="#ff0000"&gt;&amp;quot;forms&amp;quot;&lt;/font&gt; element. As shown by the above code snippet, our login page will be &lt;em&gt;&lt;font color="#ffffff"&gt;“login.aspx”&lt;/font&gt;&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Code Snippet (login.aspx.cs)&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Login_Click(&lt;span style="color: #2b91af"&gt;Object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; E)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; ((UserName.Value == &lt;span style="color: #a31515"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (UserPass.Value == &lt;span style="color: #a31515"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;FormsAuthentication&lt;/span&gt;.RedirectFromLoginPage(UserName.Value, PersistCookie.Checked);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; lblResults.Text = &lt;span style="color: #a31515"&gt;&amp;quot;Invalid Credentials: Please try again&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The above code snippet is the &lt;em&gt;&lt;font color="#ffffff"&gt;onClick&lt;/font&gt;&lt;/em&gt; event of the login button. When it is fired, it will:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Validate the user credentials entered. In this case the validation logic is completely provided by us and only allow one user to login. &lt;/li&gt;    &lt;li&gt;If the user is valid, &lt;em&gt;&lt;font color="#ffffff"&gt;FormsAuthentication.RedirectFromLoginPage()&lt;/font&gt;&lt;/em&gt; is called to authenticate the user and redirect back to the page he/she wants to visit. &lt;/li&gt;    &lt;li&gt;Else a warning message is shown. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Configure user credentials in web.config&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Usually we will store the user credentials in a Database. However for easy implementation (or for testing purpose) we can also set user credentials in web.config file.&lt;/p&gt;  &lt;p&gt;By adding &lt;font color="#ff0000"&gt;&amp;quot;credentials&amp;quot;&lt;/font&gt; element under &lt;font color="#ff0000"&gt;&amp;quot;forms&amp;quot;&lt;/font&gt; element, we can add user credentials in username/password pair format.&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;forms&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;credentials&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;passwordFormat&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Clear&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;user&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;user1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;password&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;password1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;user&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;user2&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;password&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;password2&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;user&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;user3&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;password&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;password3&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;credentials&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;forms&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Then we can use &lt;em&gt;&lt;font color="#ffffff"&gt;FormsAuthentication.Authenticate()&lt;/font&gt;&lt;/em&gt; method to validate user credentials against those stored in web.config.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7430031959860504328?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7430031959860504328/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7430031959860504328' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7430031959860504328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7430031959860504328'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/09/introduction-to-aspnet-forms.html' title='Introduction to ASP.NET Forms Authentication'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5679476434164995912</id><published>2009-09-03T17:36:00.001+08:00</published><updated>2009-10-06T18:38:46.975+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>ASP.NET MVC - Get Started</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I just started learning ASP.NET MVC, and would like to list some learning materials links here.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Official ASP.NET MVC Tutorials - &lt;a title="http://www.asp.net/learn/mvc/" href="http://www.asp.net/learn/mvc/"&gt;http://www.asp.net/learn/mvc/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Download &amp;quot;Microsoft Web Platform Installer&amp;quot; to get ASP.NET MVC - &lt;a title="http://www.microsoft.com/web/downloads/platform.aspx" href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;http://www.microsoft.com/web/downloads/platform.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;NerdDinner at CodePlex - &lt;a title="http://nerddinner.codeplex.com/" href="http://nerddinner.codeplex.com/"&gt;http://nerddinner.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;NerdDinner Site - &lt;a title="http://www.nerddinner.com/" href="http://www.nerddinner.com/"&gt;http://www.nerddinner.com/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5679476434164995912?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5679476434164995912/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5679476434164995912' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5679476434164995912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5679476434164995912'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/09/aspnet-mvc-get-started.html' title='ASP.NET MVC - Get Started'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-532873085583704822</id><published>2009-07-22T16:45:00.001+08:00</published><updated>2009-07-22T16:45:49.581+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPC / VM'/><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><title type='text'>Installing Driver for Legacy Network Adapter on Win2k3 x64 VPC (Hyper-V)</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I installed a 64-bit Windows 2003 R2 Enterprise SP2 on one of my Hyper-V VPC, and add a Legacy Network Adaptor to it. However the network adapter is not automatically installed in the x64 win 2k3 because its driver is not available.&lt;/p&gt;  &lt;p&gt;With some Googling I found that 64-bit version of win 2k3 and xp are not supported with corresponding Legacy Network Adaptor driver. Someone suggested a workaround by using the equivalent Vista driver (both x86 and x64).&lt;/p&gt;  &lt;p&gt;So I go the driver files from a machine running on &lt;strong&gt;x86 Vista&lt;/strong&gt; and tried it. But the driver installation terminated with Error: &amp;quot;Driver not intended for this platform&amp;quot;.&lt;/p&gt;  &lt;p&gt;Suspecting this maybe due to the x86/x64 difference, I got another set of driver files from a &lt;strong&gt;x64 Windows Server 2008&lt;/strong&gt;. This time the driver installation ran smoothly and the Network Adaptor works well!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Directory containing Legacy Network Adaptor driver:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Vista:    &lt;br /&gt;&lt;font color="#ffffff"&gt;%windir%\system32\driverstore\FileRepository\dc21x4vm.inf_7d8c6569&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Windows Server 2008:    &lt;br /&gt;&lt;font color="#ffffff"&gt;%windir%\system32\driverstore\FileRepository\dc21x4vm.inf_e14caac7&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.myitforum.com/articles/46/view.asp?id=12593" target="_blank"&gt;Windows XP x64 in Hyper-V - Network Drivers&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-532873085583704822?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/532873085583704822/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=532873085583704822' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/532873085583704822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/532873085583704822'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/07/installing-driver-for-legacy-network.html' title='Installing Driver for Legacy Network Adapter on Win2k3 x64 VPC (Hyper-V)'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6676104076548431077</id><published>2009-07-20T18:20:00.001+08:00</published><updated>2009-07-20T18:20:54.018+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>ASP.NET User Control - Part 1</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;User Control is quite useful in creating a customized control which can be reused throughout pages. Instead of creating a custom server control, developers can create user control which (in my opinion) is easier to create and modify the control layout.&lt;/p&gt;  &lt;p&gt;In this part, I will talk about how to create a user control and include it in an .aspx page.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/fb3w5b53.aspx" target="_blank"&gt;ASP.NET User Controls Overview&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/sbz9etab.aspx" target="_blank"&gt;How to: Include a User Control in an ASP.NET Web Page&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Create a User Control&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Creating a user control is very simple with few steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;You need to have a Web Application Project &lt;/li&gt;    &lt;li&gt;In Solution Explorer, right-click on the project's name (or a folder), select &lt;strong&gt;&amp;quot;Add&amp;quot;&lt;/strong&gt; =&amp;gt; &lt;strong&gt;&amp;quot;New Item...&amp;quot;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Select &lt;strong&gt;&amp;quot;Web User Control&amp;quot;&lt;/strong&gt; under &lt;strong&gt;&amp;quot;Web&amp;quot;&lt;/strong&gt; category, give the control a name and click &lt;strong&gt;&amp;quot;Add&amp;quot;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Done! &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The newly created user control consists of a .ascx (not .aspx) page and a code behind file (just ignore the designer file). The .ascx page currently contains nothing but a &lt;strong&gt;&amp;quot;@ Control&amp;quot;&lt;/strong&gt; directive.&lt;/p&gt;  &lt;p&gt;User control .ascx page is very much like a snippet of an .aspx page, you can modify the layout of the user control by adding HTML tags or ASP.NET controls in it just like what you do to .aspx page. Below is the code of a very simple .ascx page:&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Control&lt;/span&gt; &lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;CodeBehind&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TestUserControl.ascx.cs&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;MyTestWeb.Web.Controls.TestUserControl&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;br&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;br&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Button&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;BtnSubmit&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Submit&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Include a User Control in an .aspx page&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;After a User Control is created, it can be used by any .aspx page within the same Web Application by including the control into the page.&lt;/p&gt;  &lt;p&gt;To Include a User Control, we have to do 2 things:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Create a &amp;quot;@ Register&amp;quot; directive which specify the &amp;quot;TagPrefix&amp;quot;, &amp;quot;TagName&amp;quot; and &amp;quot;Src&amp;quot; (Source file) of the User Control. &lt;/li&gt;    &lt;li&gt;Declare the User Control with tag &amp;quot;&amp;lt;&lt;em&gt;TagPrefix&lt;/em&gt;:&lt;em&gt;TagName&lt;/em&gt;&amp;#160;&amp;#160; /&amp;gt;&amp;quot; just like any other ASP.NET control (the difference is ASP.NET Control start with TagPrefix &amp;quot;asp&amp;quot;) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Below shows the code of a simple .aspx page including the User Control we just created.&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Page&lt;/span&gt; &lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;C#&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;MasterPageFile&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;~/Pages/Global.Master&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;AutoEventWireup&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;true&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;CodeBehind&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TestPageWithMaster.aspx.cs&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Inherits&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;MyTestWeb.Web.Pages.TestPageWithMaster&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: red"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Untitled Page&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: green"&gt;-- &amp;quot;@ Register&amp;quot; directive --&lt;/span&gt;&lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;@&lt;/span&gt; &lt;span style="color: #a31515"&gt;Register&lt;/span&gt; &lt;span style="color: red"&gt;TagPrefix&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;uc&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;TagName&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TestUserControl&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Src&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;~/Controls/TestUserControl.ascx&amp;quot;&lt;/span&gt; &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Content&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Content1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ContentPlaceHolderID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;head&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Content&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Content2&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ContentPlaceHolderID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ContentPlaceHolder1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;form&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: green"&gt;-- User Control declaration --&lt;/span&gt;&lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;uc&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TestUserControl&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TestUserControl1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;form&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Content&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6676104076548431077?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6676104076548431077/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6676104076548431077' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6676104076548431077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6676104076548431077'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/07/aspnet-user-control-part-1.html' title='ASP.NET User Control - Part 1'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2143471779472184797</id><published>2009-07-08T16:27:00.001+08:00</published><updated>2009-07-20T15:24:17.776+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Client side validation skipped if submit Button have "onClientClick" JavaScript function</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have a form using ASP.NET validation controls, I have been using these ASP.NET validators for quite a time and they behaved well. However the problem come when I added a &amp;quot;onClientClick&amp;quot; event handler to the form submit button, and then the validation is just skipped and the form post back every time.&lt;/p&gt;  &lt;p&gt;The problem is that the &amp;quot;onClientClick&amp;quot; event get fired before the validation so the validation is skipped. To solve this, we can use the JavaScript function &amp;quot;&lt;strong&gt;Page_ClientValidate()&lt;/strong&gt;&amp;quot; to trigger the client side validation.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.asp.net/t/963412.aspx?PageIndex=2" target="_blank"&gt;asp:Button Validation with OnClientClick javascript - Not Validating&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa479045.aspx" target="_blank"&gt;ASP.NET Validation in Depth&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can tell &amp;quot;&lt;strong&gt;Page_ClientValidate()&lt;/strong&gt;&amp;quot; to only validate controls of a particular validation group by passing the validation group name as parameter.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;function&lt;/span&gt; BtnSubmitButton_click()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Page_ClientValidate(&lt;span style="color: #a31515"&gt;&amp;quot;ValidationGroup&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; confirm(&lt;span style="color: #a31515"&gt;&amp;quot;Submit this form?&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2143471779472184797?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2143471779472184797/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2143471779472184797' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2143471779472184797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2143471779472184797'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/07/client-side-validation-skipped-if.html' title='Client side validation skipped if submit Button have &amp;quot;onClientClick&amp;quot; JavaScript function'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-813895786075357227</id><published>2009-05-29T10:26:00.001+08:00</published><updated>2009-05-29T10:26:57.584+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><title type='text'>Moved files cannot inherit destination folder's permission, but copied files can.</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;When I want to share a file with others in the same network, I move the file to my shared folder. However, sometimes I receive complains from my colleagues saying that they don't have permission to read the shared files.&lt;/p&gt;  &lt;p&gt;At the end, I found that a copied file can inherit the permission of the destination folder, but a moved file cannot. I think that it is because the copy action create a new file while the move action (within same volume) only change the hosting folder of the original file.&lt;/p&gt;  &lt;p&gt;With some googling, I found that this behaviors is documented by Microsoft. The article also provide a way to change this behavior by modifying registry.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/kb/310316/en-us" target="_blank"&gt;How permissions are handled when you copy and move files and folders&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Step&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Let moved files inherit destination folder's permission like copied files &lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Run &amp;quot;&lt;strong&gt;regedit&lt;/strong&gt;&amp;quot; (Fire up Registry Editor)&lt;/li&gt;    &lt;li&gt;Go to &amp;quot;&lt;strong&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer&lt;/strong&gt;&amp;quot;&lt;/li&gt;    &lt;li&gt;Add a &amp;quot;&lt;strong&gt;DWORD&lt;/strong&gt;&amp;quot; value with name &amp;quot;&lt;b&gt;MoveSecurityAttributes&lt;/b&gt;&amp;quot; and Value &amp;quot;&lt;strong&gt;0&lt;/strong&gt;&amp;quot;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-813895786075357227?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/813895786075357227/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=813895786075357227' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/813895786075357227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/813895786075357227'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/05/moved-files-cannot-inherit-destination.html' title='Moved files cannot inherit destination folder&amp;#39;s permission, but copied files can.'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6758740413536201180</id><published>2009-05-19T12:08:00.001+08:00</published><updated>2009-05-19T12:08:34.064+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux / Unix'/><title type='text'>Using mdev of busybox</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;mdev&lt;/strong&gt; is a device manager like &lt;strong&gt;udev&lt;/strong&gt;, actually it is a &amp;quot;mini udev&amp;quot;. &lt;strong&gt;mdev&lt;/strong&gt; is very useful in embedded system as it is included in newer version of &lt;strong&gt;busybox&lt;/strong&gt;. mdev can also shorten boot up time significantly compared to &lt;strong&gt;udev&lt;/strong&gt;. This can be vital to some embedded system.&lt;/p&gt;  &lt;p&gt;Below shows a sample startup script for &lt;strong&gt;mdev&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://wildanm.wordpress.com/2007/08/21/mdev-mini-udev-in-busybox/" target="_blank"&gt;mdev &amp;#8211; mini udev in busybox&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.csdn.net/hugerat/archive/2008/12/03/3437099.aspx" target="_blank"&gt;mdev的使用方法和原理。&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Here is the startup script I used:&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p&gt;#!/bin/sh &lt;/p&gt;    &lt;p&gt;echo &amp;quot;Mounting sysfs&amp;quot;      &lt;br /&gt;mount -t sysfs sysfs /sys &lt;/p&gt;    &lt;p&gt;echo &amp;quot;Mounting /dev&amp;quot;      &lt;br /&gt;mount -t tmpfs mdev /dev &lt;/p&gt;    &lt;p&gt;echo &amp;quot;Creating /dev/pts&amp;quot;      &lt;br /&gt;mkdir /dev/pts &lt;/p&gt;    &lt;p&gt;echo &amp;quot;Mounting pts&amp;quot;      &lt;br /&gt;mount -t devpts devpts /dev/pts &lt;/p&gt;    &lt;p&gt;echo &amp;quot;Echoing hotplug&amp;quot;      &lt;br /&gt;echo /sbin/mdev &amp;gt; /proc/sys/kernel/hotplug &lt;/p&gt;    &lt;p&gt;echo &amp;quot;mdev -s&amp;quot;      &lt;br /&gt;mdev -s&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6758740413536201180?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6758740413536201180/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6758740413536201180' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6758740413536201180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6758740413536201180'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/05/using-mdev-of-busybox.html' title='Using mdev of busybox'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6367101350881481573</id><published>2009-05-17T12:03:00.002+08:00</published><updated>2009-05-19T12:37:02.534+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VPC / VM'/><title type='text'>Create Private Network for VPCs with Microsoft Loopback Adaptor</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#0080ff;"&gt;Overview&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you want to add your VPCs into a network so that they (and your host machine) can access other via TCP/IP, what will you do? You can assign your physical network adaptor to VPCs so that they will be on the same network as your host machine, but first you need a DHCP server, and all your VPCs will be exposed to external.&lt;/p&gt;  &lt;p&gt;Indeed you can use "Microsoft Loopback Adaptor" to add a virtual network adaptor to your host computer. Then you can assign the Loopback Adaptor to your VPCs to form a Private Virtual Network, so that each VPC can communicate with each other and host machine, but not accessible by external computers.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="color:#0080ff;"&gt;Reference&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc708322%28WS.10%29.aspx" target="_blank"&gt;Install Microsoft Loopback Adapter&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc708341.aspx" target="_blank"&gt;Using Microsoft Loopback Adapter&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.flexuous.com/2007/02/04/virtual-pc-ip-routing-enabling-vpc-nat-loopback-connector-at-the-same-time/" target="_blank"&gt;Virtual PC IP Routing: enabling VPC NAT &amp;amp; loopback connector at the same time&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="color:#0080ff;"&gt;Step&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff8040;"&gt;To Install Microsoft Loopback Adaptor&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Adding Microsoft Loopback Adaptor is like adding a new hardware in Windows. This part is copied from Reference 1.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In the host operating system, right-click &lt;strong&gt;My Computer&lt;/strong&gt;, and then select &lt;strong&gt;Properties&lt;/strong&gt;. Depending on the style of the start menu, &lt;strong&gt;My Computer&lt;/strong&gt; may be located in the &lt;strong&gt;Start&lt;/strong&gt; menu. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;System Properties&lt;/strong&gt; dialog box, on the &lt;strong&gt;Hardware&lt;/strong&gt; tab, click &lt;strong&gt;Add Hardware Wizard&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Add Hardware&lt;/strong&gt; dialog box, click &lt;strong&gt;Next&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;When the &lt;strong&gt;Is the hardware connected?&lt;/strong&gt; dialog box appears, click &lt;strong&gt;Yes, I have already connected the hardware&lt;/strong&gt;, and then click &lt;strong&gt;Next&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Installed hardware&lt;/strong&gt; list, click &lt;strong&gt;Add a new hardware device&lt;/strong&gt;, and then click &lt;strong&gt;Next&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;What do you want the wizard to do?&lt;/strong&gt; list, click &lt;strong&gt;Install the hardware that I manually select from a list (Advanced)&lt;/strong&gt;, and then click &lt;strong&gt;Next&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Common hardware types&lt;/strong&gt; list, click &lt;strong&gt;Network adapters&lt;/strong&gt;, and then click &lt;strong&gt;Next&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Manufacturer&lt;/strong&gt; list, click &lt;strong&gt;Microsoft&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Network Adapter&lt;/strong&gt; list, click &lt;strong&gt;Microsoft Loopback Adapter&lt;/strong&gt;, and then click &lt;strong&gt;Next&lt;/strong&gt; twice. &lt;/li&gt;    &lt;li&gt;If a message about driver signing appears, click &lt;strong&gt;Continue Anyway&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;In the &lt;strong&gt;Completing the Add Hardware Wizard&lt;/strong&gt; dialog box, click &lt;strong&gt;Finish&lt;/strong&gt;, and then click &lt;strong&gt;OK&lt;/strong&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff8040;"&gt;To assign Loopback Adaptor and corresponding IP to each VPC&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;After you installed the Loopback Adaptor, you should see a new network connection in "Network Connections" screen of the host computer. Right-click on the Loopback Adapator network connection and select "&lt;strong&gt;Properties"&lt;/strong&gt;. In the "&lt;strong&gt;Microsoft Loopback Adapter Properties"&lt;/strong&gt; dialog box, verify that the &lt;strong&gt;"Virtual Machine Network services"&lt;/strong&gt; check box is selected. Now the VPCs can be assigned this adaptor in VIrtual PC settings.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start Virtual PC 2007. &lt;/li&gt;    &lt;li&gt;Right-click on your target VPC and click "&lt;strong&gt;Settings&lt;/strong&gt;". &lt;/li&gt;    &lt;li&gt;In the "&lt;strong&gt;Settings&lt;/strong&gt;" dialog box, select "&lt;strong&gt;Networking&lt;/strong&gt;" in the "&lt;strong&gt;Settings&lt;/strong&gt;" list, then select "&lt;strong&gt;Microsoft Loopback Adaptor&lt;/strong&gt;" for the network adaptor.      
(I would suggest assigning the second network adaptor to Loopback Adaptor as we want to reserve the first one for "Shared networking NAT") &lt;/li&gt;    &lt;li&gt;For assigning IP, just treat it like other physical network and set the appropriate IP and netmask. Leave the Default gatway blank for the Virtual network &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="color:#ff8040;"&gt;Configure firewall and test the network&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;At this point each VPCs should be able to "see" and ping others and the host. However the firewall settings on them may block the connection. You can disable windows firewall for the Loopback Adaptor to solve this problem:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;On your host computer, go to "&lt;strong&gt;Windows Firewall&lt;/strong&gt;" &lt;/li&gt;    &lt;li&gt;Select "&lt;strong&gt;Advanced&lt;/strong&gt;" &lt;/li&gt;    &lt;li&gt;Uncheck the network connection (in this case, the "&lt;strong&gt;VPC Virtual Network&lt;/strong&gt;") that you don't want firewall to monitor. &lt;/li&gt;    &lt;li&gt;Click "OK". &lt;/li&gt;    &lt;li&gt;Repeat 1~4 on every VPCs. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_Eyrb1Jl6aRc/Sg-MrLJuVGI/AAAAAAAAACU/dGJ3CMIy32A/blog170520091%5B3%5D.jpg"&gt;&lt;img style="border-width: 0px;" alt="blog170520091" src="http://lh3.ggpht.com/_Eyrb1Jl6aRc/Sg-MrqI50vI/AAAAAAAAACY/pXr_FXWSP80/blog170520091_thumb%5B1%5D.jpg" border="0" width="385" height="454" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6367101350881481573?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6367101350881481573/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6367101350881481573' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6367101350881481573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6367101350881481573'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/05/create-private-network-for-vpcs-with.html' title='Create Private Network for VPCs with Microsoft Loopback Adaptor'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_Eyrb1Jl6aRc/Sg-MrqI50vI/AAAAAAAAACY/pXr_FXWSP80/s72-c/blog170520091_thumb%5B1%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5868244464522600991</id><published>2009-04-07T11:43:00.001+08:00</published><updated>2009-04-07T11:47:38.088+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux / Unix'/><title type='text'>Writing, Starting and Stopping Linux daemon (w/ start-stop-daemon)</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The first page written by Devin Watson shows a tutorial on how-to write a daemon (with an example). The second one at &lt;a href="http://girasoli.org/" target="_blank"&gt;Tony's Cafe&lt;/a&gt; shows how to write scripts for Debian Linux to run the daemon. The last one is the Manpage of &amp;quot;start-stop-daemon&amp;quot; program.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html" target="_blank"&gt;Linux Daemon Writing HOWTO&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://girasoli.org/?p=120"&gt;Creating a Daemon in Debian Linux&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://linuxreviews.org/man/start-stop-daemon/" target="_blank"&gt;Manpage of START-STOP-DAEMON&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5868244464522600991?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5868244464522600991/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5868244464522600991' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5868244464522600991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5868244464522600991'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/04/writing-starting-and-stopping-linux.html' title='Writing, Starting and Stopping Linux daemon (w/ start-stop-daemon)'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4507859247032395616</id><published>2009-04-07T11:35:00.001+08:00</published><updated>2009-04-07T11:38:52.930+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux / Unix'/><title type='text'>U-Boot related documentation</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have been fighting with embedded Linux system for the past two months, here is what I found when the card crash and I have to flash the Kernel.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://docwiki.gumstix.org/U-Boot" target="_blank"&gt;U-Boot bootloader Wiki (Gumstix)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.denx.de/wiki/DULG/UBootEnvVariables" target="_blank"&gt;U-Boot Environment Variables&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4507859247032395616?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4507859247032395616/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4507859247032395616' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4507859247032395616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4507859247032395616'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/04/u-boot-bootloader-wiki-gumstix.html' title='U-Boot related documentation'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-1969886830477145784</id><published>2009-04-07T11:28:00.001+08:00</published><updated>2009-04-07T12:12:03.541+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Some JavaScript / AJAX Resources</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Including Script.aculo.us and others scripts.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://speckyboy.com/2008/04/26/20-top-scriptaculous-scripts-you-cant-live-without/"&gt;20 Top Script.aculo.us Scripts you can&amp;#8217;t live without&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://delimitdesign.com/ajax/80-ajax-solutions-that-are-usefull-and-innovative/" target="_blank"&gt;80 AJAX solutions that are excellent and useful&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.smashingmagazine.com/2009/03/08/70-new-useful-ajax-and-javascript-techniques/"&gt;70 New, Useful AJAX And JavaScript Techniques&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-1969886830477145784?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/1969886830477145784/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=1969886830477145784' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1969886830477145784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1969886830477145784'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/04/20-top-scriptaculous-scripts.html' title='Some JavaScript / AJAX Resources'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8029445152216970440</id><published>2009-04-07T11:12:00.001+08:00</published><updated>2009-04-07T11:13:22.555+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><title type='text'>Concurrent remote desktop sessions in Windows XP sp3</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is a hack for allowing concurrent remote desktop sessions in Windows XP sp3&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sig9.com/articles/concurrent-remote-desktop" target="_blank"&gt;Concurrent Remote Desktop Sessions in Windows XP SP2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://alonbilu.wordpress.com/2008/05/17/enabling-multiple-concurrent-remote-sessions-on-windows-xp-sp3-patched-file-included/" target="_blank"&gt;Enabling Concurrent Remote Desktop Sessions on Windows XP SP3 - Patched file included&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8029445152216970440?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8029445152216970440/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8029445152216970440' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8029445152216970440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8029445152216970440'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/04/concurrent-remote-desktop-sessions-in.html' title='Concurrent remote desktop sessions in Windows XP sp3'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6780616224002965237</id><published>2009-02-14T21:37:00.001+08:00</published><updated>2009-02-14T21:37:22.952+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><title type='text'>Cannot view the contents of a (.chm) file</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I just get an e-book and find that all of the pages are dead. With some searching I find that the file is blocked by windows.&lt;/p&gt;  &lt;p&gt;The solution is to unlock the .chm file. To do this:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right-click on the .chm file, select &amp;quot;Properties&amp;quot;&lt;/li&gt;    &lt;li&gt;Click &amp;quot;unlock&amp;quot;&lt;/li&gt;    &lt;li&gt;Done!&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.csdn.net/net_lover/archive/2006/09/27/1295920.aspx"&gt;解决打开CHM格式文件出现&amp;#8220;网页不能浏览&amp;#8221;错误的方法&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B902225&amp;amp;x=7&amp;amp;y=11" target="_blank"&gt;You cannot open HTML Help files....&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6780616224002965237?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6780616224002965237/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6780616224002965237' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6780616224002965237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6780616224002965237'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/02/cannot-view-contents-of-chm-file.html' title='Cannot view the contents of a (.chm) file'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-586522272911275938</id><published>2009-02-05T17:04:00.001+08:00</published><updated>2009-02-05T17:04:26.015+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Add a select / deselect all checkbox to an ASP.NET checkbox list control</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The code below demonstrate how to use JavaScript to get all the checkbox elements of a particular checkbox list, and then check / unchecked them base on the status of another checkbox (the sender).&lt;/p&gt;  &lt;p&gt;This technique is also useful when you want to do other operation (e.g. ensure single selection) to all checkboxes of a checkbox list.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=77&amp;amp;AspxAutoDetectCookieSupport=1" target="_blank"&gt;Check/Uncheck all items in a CheckBoxList using ASP.NET and Javascript&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This code is directly copied from &lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=77&amp;amp;AspxAutoDetectCookieSupport=1" target="_blank"&gt;Check/Uncheck all items in a CheckBoxList using ASP.NET and Javascript&lt;/a&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;function&lt;/span&gt; CheckBoxListSelect(cbControl, state)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&amp;#160;&amp;#160; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; chkBoxList = document.getElementById(cbControl);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; chkBoxCount= chkBoxList.getElementsByTagName(&lt;span style="color: #a31515"&gt;&amp;quot;input&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;for&lt;/span&gt;(&lt;span style="color: blue"&gt;var&lt;/span&gt; i=0;i&amp;lt;chkBoxCount.length;i++)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; chkBoxCount[i].checked = state;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;false&lt;/span&gt;; &lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-586522272911275938?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/586522272911275938/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=586522272911275938' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/586522272911275938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/586522272911275938'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/02/add-select-deselect-all-checkbox-to.html' title='Add a select / deselect all checkbox to an ASP.NET checkbox list control'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8695819745082267076</id><published>2009-02-03T12:09:00.001+08:00</published><updated>2009-02-03T12:09:30.433+08:00</updated><title type='text'>Multi-line Text boxes (Text area) behave incorrectly with Default Button in Firefox</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I open form with a default button and a Multi-line ASP.NET text box (text area) in Firefox 3. When I hit &amp;quot;Enter&amp;quot; key in the text area, I expect the text area to start a new line. However, the default button is triggered.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.asp.net/t/1294544.aspx" target="_blank"&gt;Multiline Textboxes and DefaultButton in Firefox&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8695819745082267076?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8695819745082267076/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8695819745082267076' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8695819745082267076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8695819745082267076'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/02/multi-line-text-boxes-text-area-behave.html' title='Multi-line Text boxes (Text area) behave incorrectly with Default Button in Firefox'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6567946004818335111</id><published>2009-01-21T12:23:00.001+08:00</published><updated>2009-01-21T12:23:53.802+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Restrict date range in Calendar</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;By default, Calendar control won't allow you to restrict the selectable date range. However, we can achieve this by doing two things:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Restrict user from navigating to a month outside the range &lt;/li&gt;    &lt;li&gt;Restrict user from selecting a day outside the range &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.eggheadcafe.com/community/aspnet/6/10043864/restrict-date-range-in--c.aspx" target="_blank"&gt;Visual Studio .NET - restrict date range in Calendar - eggheadcafe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.eggheadcafe.com/community/aspnet/6/10043865/try-this.aspx" target="_blank"&gt;Disable calendar day select link - eggheadcafe&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff8040"&gt;&lt;strong&gt;Restrict user from navigating to a month outside the range&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To achieve this, we can set the &lt;font color="#ff0000"&gt;&amp;quot;NextMonthText&amp;quot;&lt;/font&gt; and &lt;font color="#ff0000"&gt;&amp;quot;PrevMonthText&amp;quot;&lt;/font&gt; fields of the Calendar control to hide the link navigating to next or previous month.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#8080ff"&gt;Code Snippet:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Cal_PreRender(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Cal.VisibleDate.Year &amp;gt; 2009 || (Cal.VisibleDate.Year == 2009 &amp;amp;&amp;amp; Cal.VisibleDate.Month &amp;gt;= 12))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cal.NextMonthText = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cal.NextMonthText = &lt;span style="color: #a31515"&gt;&amp;quot;&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Cal.VisibleDate.Year &amp;lt; 2000 || (Cal.VisibleDate.Year == 2000 &amp;amp;&amp;amp; Cal.VisibleDate.Month &amp;lt;= 1))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cal.PrevMonthText = &lt;span style="color: blue"&gt;string&lt;/span&gt;.Empty;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cal.PrevMonthText = &lt;span style="color: #a31515"&gt;&amp;quot;&amp;lt;&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Restrict user from selecting a day outside the range&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This can be achieved by controlling the &lt;font color="#ff0000"&gt;&amp;quot;IsSelectable&amp;quot;&lt;/font&gt; field in the &lt;font color="#ff0000"&gt;&amp;quot;onDayRender&amp;quot;&lt;/font&gt; event handler of the Calendar.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#8080ff"&gt;Code Snippet:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Cal_DayRender(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;DayRenderEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (e.Day.Date.Year == 2009)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; e.Day.IsSelectable = &lt;span style="color: blue"&gt;false&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6567946004818335111?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6567946004818335111/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6567946004818335111' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6567946004818335111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6567946004818335111'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/01/restrict-date-range-in-calendar.html' title='Restrict date range in Calendar'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-1321883972881944692</id><published>2009-01-21T11:55:00.001+08:00</published><updated>2009-01-21T11:55:51.403+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>ListView Control vs Repeater Control</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Repeater control is one of my favorite ASP.NET controls because of its flexibility in UI design. However it lack some useful functions like &amp;quot;Sorting&amp;quot;, &amp;quot;Paging&amp;quot; &amp;amp; &amp;quot;Data modification&amp;quot;.&lt;/p&gt;  &lt;p&gt;Now in ASP.NET 3.5 we have a ListView control which seems to do all of the Repeater's jobs and more. Below are some article talking about ListView control.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/08/10/the-asp-listview-control-part-1-building-a-product-listing-page-with-clean-css-ui.aspx" target="_blank"&gt;The asp:ListView control (Part 1) - Scott Guthrie&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.singingeels.com/Articles/The_ListView_Dominates_The_Repeater.aspx" target="_blank"&gt;The ListView Dominates The Repeater - SingingEels&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb398790.aspx" target="_blank"&gt;ListView Web Server Control Overview - MSDN&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-1321883972881944692?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/1321883972881944692/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=1321883972881944692' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1321883972881944692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1321883972881944692'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2009/01/listview-control-vs-repeater-control.html' title='ListView Control vs Repeater Control'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-957416706611920640</id><published>2008-12-11T16:22:00.001+08:00</published><updated>2008-12-11T16:22:44.058+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Understanding ASP.NET Page Life Cycle and TRULY understanding ViewState</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I once thought that writing an ASP.NET page is like writing a Form in a Desktop Application, all I have to take care are just about event handlers likes &amp;quot;Page_Load&amp;quot;, &amp;quot;Button_Click&amp;quot;. There is no concept of persisting states in page or controls in my mind ( I am just a Noob...)&lt;/p&gt;  &lt;p&gt;Actually I have heard of &amp;quot;ViewState&amp;quot; and used it a few times, but without understanding what a creature it is. It was until I accidentally found that one of my pages had a ViewState of 10+ KB, that I started learning about ViewState.&lt;/p&gt;  &lt;p&gt;In order to understand ViewState, one must first have an understanding of ASP.NET Page Life Cycle. Besides, there are two excellent posts by &lt;a href="http://weblogs.asp.net/infinitiesloop/" target="_blank"&gt;Dave Reed&lt;/a&gt; and Milan Negovan that will make you TRULY Understand ViewState.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms178472.aspx" target="_blank"&gt;ASP.NET Page Life Cycle Overview&lt;/a&gt; - &lt;a href="http://msdn.microsoft.com/en-us/library/default.aspx" target="_blank"&gt;MSDN&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/infinitiesloop/archive/2006/08/03/truly-understanding-viewstate.aspx" target="_blank"&gt;TRULY Understanding ViewState&lt;/a&gt; - &lt;a href="http://weblogs.asp.net/infinitiesloop/" target="_blank"&gt;Dave Reed&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.aspnetresources.com/articles/ViewState.aspx" target="_blank"&gt;ASP.NET State Management: ViewState&lt;/a&gt; - Milan Negovan&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms972976.aspx" target="_blank"&gt;Understanding ASP.NET View State&lt;/a&gt; - &lt;a href="http://msdn.microsoft.com/en-us/library/default.aspx" target="_blank"&gt;MSDN&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-957416706611920640?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/957416706611920640/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=957416706611920640' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/957416706611920640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/957416706611920640'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/12/understanding-aspnet-page-life-cycle.html' title='Understanding ASP.NET Page Life Cycle and TRULY understanding ViewState'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-3419551784806505716</id><published>2008-12-11T15:26:00.001+08:00</published><updated>2008-12-11T15:26:33.966+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><title type='text'>Using custom workflow for SharePoint page approval (web content management)</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;SharePoint provides a out-of-the-box mechanism for Web Content Management (WCM) in document library (for example: a page author must seek web master approval before his page can be viewed by publish). But sometimes we may want to use our custom workflow for the approval process, and indeed it is possible to do so with SharePoint &amp;quot;workflow settings&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://sharepoint-one-stop.blogspot.com/2008/07/content-approval-workflow-in-moss-2007.html"&gt;Content Approval Workflow in MOSS 2007&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://aidangarnish.net/blog/post/2008/06/Customising-the-pages-approval-for-MOSS-2007-web-content-management.aspx"&gt;Customizing the pages approval for MOSS 2007 web content management&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-3419551784806505716?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/3419551784806505716/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=3419551784806505716' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/3419551784806505716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/3419551784806505716'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/12/using-custom-workflow-for-sharepoint.html' title='Using custom workflow for SharePoint page approval (web content management)'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7111210939872725036</id><published>2008-12-11T15:19:00.001+08:00</published><updated>2008-12-11T15:19:27.697+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Terminal Service Gateway in Windows Server 2008</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Terminal Service &amp;amp; Remote Desktop allow you to access your computer/server virtually anywhere with Internet access. They are very useful and commonly used. However, there is no way to pre-authenticate client or have centralized Authorization Policy settings. Now, with Windows Server 2008 Terminal Service Gateway, we can make use of all this features.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.windowsecurity.com/articles/Configuring-Windows-Server-2008-Terminal-Services-Gateway-Part1.html" target="_blank"&gt;Configuring the Windows Server 2008 Terminal Services Gateway (Part 1)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/dmitrii/search.aspx?q=Terminal+Services+Gateway&amp;amp;p=1" target="_blank"&gt;Dmitrii blog: Windows Terminal Services Gateway&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps (Outline only, refer to reference links for Detailed Steps)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Setup the TS Gateway Server&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;On a server with Windows Server 2008 installed &lt;/li&gt;    &lt;li&gt;Add &amp;quot;Terminal Services&amp;quot; role, select &amp;quot;TS Gateway&amp;quot; as Role services &lt;/li&gt;    &lt;li&gt;Create a Certificate for SSL connection (Common name must be pointing to the TS Gateway Server IP) &lt;/li&gt;    &lt;li&gt;At &amp;quot;TS Gateway Manager&amp;quot;, configure the following:      &lt;ul&gt;       &lt;li&gt;Install the Cert created at Step 2 to the TS Gateway Server &lt;/li&gt;        &lt;li&gt;Configure the &amp;quot;Connection Authorization Policies (CAP)&amp;quot; &lt;/li&gt;        &lt;li&gt;Configure the &amp;quot;Resource Authorization Policies (RAP)&amp;quot; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Connect to Remote Desktop/Terminal Services thru TS Gateway&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;For Windows XP / Windows Server 2003 (Not needed for Vista)      &lt;ul&gt;       &lt;li&gt;Download and Install &amp;quot;Remote Desktop Connection 6.0 Terminal Services Client&amp;quot; by this &lt;a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B925876&amp;amp;x=15&amp;amp;y=14" target="_blank"&gt;Link&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;Open &amp;quot;Remote Desktop Connection&amp;quot;, click &amp;quot;Options &amp;gt;&amp;gt;&amp;quot; &lt;/li&gt;    &lt;li&gt;Go to &amp;quot;Advanced&amp;quot; Tab, &amp;quot;Settings&amp;quot; &lt;/li&gt;    &lt;li&gt;Select &amp;quot;Use these TS Gateway server settings&amp;quot; and input the Server name (Common name of the SSL Certificate) and Logon method. &lt;/li&gt;    &lt;li&gt;Press &amp;quot;OK&amp;quot; to exit and enter the IP of the computer you want to connect. Beware that the IP here is for the TS Gateway, so it should be IP within the TS Gateway's local network. &lt;/li&gt;    &lt;li&gt;Click &amp;quot;Connect&amp;quot; to start the connection. &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7111210939872725036?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7111210939872725036/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7111210939872725036' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7111210939872725036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7111210939872725036'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/12/terminal-service-gateway-in-windows.html' title='Terminal Service Gateway in Windows Server 2008'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5492285290071597666</id><published>2008-12-03T19:19:00.001+08:00</published><updated>2008-12-03T19:19:21.667+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Add validation function to ASP.NET AJAX Tab control</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In my previous &lt;a href="http://acarieslee.blogspot.com/2008/12/make-aspnet-ajax-tab-control-panel-load.html" target="_blank"&gt;post&lt;/a&gt;, I talked about how to make AJAX Tab control panel to load on-demand. Now I would like to extend that sample and implement validation function to each tab, so that user cannot change tab if the information they enter is not valid.&lt;/p&gt;  &lt;p&gt;I am going to use the out-of-the-box &lt;a href="http://msdn.microsoft.com/en-us/library/aa310913.aspx" target="_blank"&gt;ASP.NET Validator&lt;/a&gt; to do the validation, as they provide many useful client-side properties and methods:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;Page_IsValid&lt;/font&gt;&lt;/em&gt; - By MSDN it indicates whether the page is currently valid and it is kept up to date at ALL TIMES. it is not very true though... because it need time to update. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;Page_Validators&lt;/font&gt;&lt;/em&gt; - An array containing all of the validators on page. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;Page_ValidationActive&lt;/font&gt;&lt;/em&gt; - Indicates whether validation should take place, can be turned off at run time. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;ValidatorValidate(val)&lt;/font&gt;&lt;/em&gt; - Takes a validator as input and make the validator start validation on its target. &lt;/li&gt;    &lt;li&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;isvalid&lt;/font&gt;&lt;/em&gt; - Very useful property of a validator, it shows that whether a particular validator's state is valid. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;For other properties or functions related to validators, please refer to Reference section.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa479045.aspx#aspplusvalid_clientside" target="_blank"&gt;ASP.NET Validation in Depth&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa310913.aspx" target="_blank"&gt;Validator Control Samples&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Modify the AJAX Tab Container in previous example&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I will build on the example code in my previous &lt;a href="http://acarieslee.blogspot.com/2008/12/make-aspnet-ajax-tab-control-panel-load.html" target="_blank"&gt;post&lt;/a&gt;, here is the modified Tab Container (For &amp;quot;TabPanel1&amp;quot; only):&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#8080ff"&gt;Code Snippet:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TabPanel1&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;RequiredFieldValidator&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;RequiredFieldValidator1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ControlToValidate&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ErrorMessage&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Please enter something!&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;The only thing that I've added is the &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;RequiredFieldValidator&amp;quot;&lt;/font&gt;&lt;/em&gt;, which will ensure that &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;TextBox1&amp;quot;&lt;/font&gt;&lt;/em&gt; has something entered, otherwise displaying the error message &amp;quot;Please enter something!&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Modify the Javascript function &amp;quot;ActiveTabChanged()&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Next and the final thing to do is to modify the &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;ActiveTabChanged()&amp;quot;&lt;/font&gt;&lt;/em&gt; function to do validation on Tab changed and return to previous Tab if the input is invalid.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#8080ff"&gt;Code Snippet:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; preActiveTabIndex = 0;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;function&lt;/span&gt; ActiveTabChanged(sender, e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (sender.get_activeTabIndex() != preActiveTabIndex) &lt;span style="color: green"&gt;// This line is important, otherwise: Infinite Loop!!!&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;var&lt;/span&gt; valid = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Validate current tab before switching tab&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;switch&lt;/span&gt;(preActiveTabIndex)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; 0:&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ValidatorValidate($get(&lt;span style="color: #a31515"&gt;'&amp;lt;%=RequiredFieldValidator1.ClientID%&amp;gt;'&lt;/span&gt;));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; valid = $get(&lt;span style="color: #a31515"&gt;'&amp;lt;%=RequiredFieldValidator1.ClientID%&amp;gt;'&lt;/span&gt;).isvalid;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (!valid)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Invalid, return to previous tab&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sender.set_activeTabIndex(preActiveTabIndex);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Change Tab&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; preActiveTabIndex = sender.get_activeTabIndex();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;switch&lt;/span&gt;(sender.get_activeTabIndex())&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; 1:&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Reload &amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; __doPostBack(&lt;span style="color: #a31515"&gt;'&amp;lt;%=UpdatePanel1.ClientID%&amp;gt;'&lt;/span&gt;,&lt;span style="color: #a31515"&gt;''&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;script&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;As the &amp;quot;TabContainer&amp;quot; object don't store previous active tab index, we have to store it with a variable &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;preActiveTabIndex&amp;quot;&lt;/font&gt;&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;So the algorithm is to validate the Tab based on &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;preActiveTabIndex&amp;quot;&lt;/font&gt;&lt;/em&gt;. If the result is valid, then go ahead and change tab, otherwise force the Tab Container to previous tab.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Done!!!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5492285290071597666?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5492285290071597666/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5492285290071597666' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5492285290071597666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5492285290071597666'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/12/add-validation-function-to-aspnet-ajax.html' title='Add validation function to ASP.NET AJAX Tab control'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-1045514041188136148</id><published>2008-12-03T17:38:00.001+08:00</published><updated>2008-12-03T19:20:08.629+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>Make ASP.NET AJAX Tab control panel load 'on-demand'</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;ASP.NET AJAX Control Toolkit is surely a very useful toolbox for ASP.NET web developer. However, some of the Toolkit's controls are not fully &amp;quot;AJAX&amp;quot; enabled in my point of view.&lt;/p&gt;  &lt;p&gt;&amp;quot;AJAX Tabs&amp;quot; is one of the controls that I like the most but also want it to be better. One of the feature I want to (must) have is to make a control panel load 'on-demand' in order to reflect changes made on previous control panels.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/sburke/default.aspx"&gt;Shawn Burke&lt;/a&gt; have a post showing a implementation on this feature. I copy it and change it a bit, mainly because I don't need a button to reload the panel. Instead I can just call &amp;quot;&lt;em&gt;&lt;font color="#ffffff"&gt;__doPostBack('&amp;lt;%=UpdatePanelControl.ClientID%&amp;gt;','')&lt;/font&gt;&lt;/em&gt;&amp;quot; to reload the update panel.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/sburke/archive/2007/06/13/how-to-make-tab-control-panels-load-on-demand.aspx" target="_blank"&gt;How To: Make Tab control panels load &amp;quot;on-demand&amp;quot;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Build the &amp;quot;AJAX Tab Control&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Building the Tab Control is pretty easy, provided that you have your &lt;font color="#ff0000"&gt;AJAX Control Toolkit&lt;/font&gt; setup properly. (If you don't please go to &lt;a href="http://www.asp.net/AJAX/downloads/" target="_blank"&gt;Here&lt;/a&gt; to download the components need to setup ASP.NET AJAX and &lt;a href="http://www.codeplex.com/AjaxControlToolkit" target="_blank"&gt;Here&lt;/a&gt; to download the AJAX Control Toolkit)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#8080ff"&gt;Code Snippet:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabContainer&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TabContainer&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;OnClientActiveTabChanged&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;ActiveTabChanged&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TabPanel1&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TextBox&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TextBox1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabPanel&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;TabPanel2&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;UpdatePanel&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;OnLoad&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;UpdatePanel1_Load&amp;quot; &lt;span style="color: red"&gt;UpdateMode&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Conditional&amp;quot;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;UpdatePanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ContentTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabPanel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ajaxToolKit&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;TabContainer&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There are several things that make it works:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;First of all, an &amp;quot;Update Panel&amp;quot; inside the Tap Panel you want to load on-demand. Set the &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;UpdateMode&amp;quot;&lt;/font&gt;&lt;/em&gt; attribute to &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;Conditional&amp;quot;&lt;/font&gt;&lt;/em&gt; is the key to make it reload only when it is supposed to. &lt;/li&gt;    &lt;li&gt;A Javascript function which tell server side to load the Update Panel. In this example the function is &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;ActiveTabChanged&amp;quot;&lt;/font&gt;&lt;/em&gt; and it is set to &lt;font color="#ffffff"&gt;&lt;em&gt;&amp;quot;OnClientActiveTabChanged&amp;quot;&lt;/em&gt;&lt;/font&gt; attribute of the Tab Container, so that it is fired whenever active tab is changed. &lt;/li&gt;    &lt;li&gt;A server-side on-load event handler &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;UpdatePanel1_Load&amp;quot;&lt;/font&gt;&lt;/em&gt; for the Update Panel in step 1. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Javascript function &amp;quot;ActiveTabChagned&amp;quot; to load the Update Panel&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As stated above, a Javascript function attached to &lt;font color="#ffffff"&gt;&lt;em&gt;&amp;quot;OnClientActiveTabChanged&amp;quot;&lt;/em&gt;&lt;/font&gt; event of the Tab Container is used to load the Update Panel. Basically it will check the active tab index and do postback of the corresponding Update Panel.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;strong&gt;&lt;font color="#8080ff"&gt;Code Snippet:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;function&lt;/span&gt; ActiveTabChanged(sender, e)    &lt;p&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Change Tab&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;switch&lt;/span&gt;(sender.get_activeTabIndex())&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;case&lt;/span&gt; 1:&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Reload &amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; __doPostBack(&lt;span style="color: #a31515"&gt;'&amp;lt;%=UpdatePanel1.ClientID%&amp;gt;'&lt;/span&gt;,&lt;span style="color: #a31515"&gt;''&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;break&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In the function I use &lt;em&gt;&lt;font color="#ffffff"&gt;get_activeTabIndex()&lt;/font&gt;&lt;/em&gt; method provided by the AJAX Tab Container (the sender) to get the active tab index. On the other hand you may use &lt;em&gt;&lt;font color="#ffffff"&gt;set_activeTabIndex()&lt;/font&gt;&lt;/em&gt; method to change active tab at client side.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Update Panel on-load event handler&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;At this time I have successfully make the Update Panel to load on-demand. Now in order to make sure that it actually reloaded, let's write an on-load event handler to change the text of the Label inside it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;strong&gt;&lt;font color="#8080ff"&gt;Code Snippet:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; UpdatePanel1_Load(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Page.IsPostBack)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Label1.Text = &lt;span style="color: #a31515"&gt;&amp;quot;On&amp;quot;&lt;/span&gt;.Equals(Label1.Text) ? &lt;span style="color: #a31515"&gt;&amp;quot;Off&amp;quot;&lt;/span&gt; : &lt;span style="color: #a31515"&gt;&amp;quot;On&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;That's it, Happy Coding ;-)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-1045514041188136148?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/1045514041188136148/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=1045514041188136148' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1045514041188136148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1045514041188136148'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/12/make-aspnet-ajax-tab-control-panel-load.html' title='Make ASP.NET AJAX Tab control panel load &amp;#39;on-demand&amp;#39;'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5845791282520642494</id><published>2008-12-02T20:19:00.001+08:00</published><updated>2008-12-02T20:19:43.902+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><title type='text'>AJAX Control Toolkit - Tab Control Themes</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.visoftinc.com/author/Damien%20White.aspx" target="_blank"&gt;Damien White&lt;/a&gt; have a post discussing how to customize theme in a ASP.NET AJAX Control Toolkit Tab Control.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.visoftinc.com/archive/2007/09/26/ajax-control-toolkit-tab-control-themes.aspx"&gt;AJAX Control Toolkit - Tab Control - Themes&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5845791282520642494?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5845791282520642494/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5845791282520642494' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5845791282520642494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5845791282520642494'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/12/ajax-control-toolkit-tab-control-themes.html' title='AJAX Control Toolkit - Tab Control Themes'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8260338085914061202</id><published>2008-10-28T18:09:00.001+08:00</published><updated>2008-10-28T18:09:44.378+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>ASP.NET CAPTCHA implementation with C#</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;CAPTCHA stands for &amp;quot;completely automated public Turing test to tell computers and humans apart.&amp;quot; It is used to distinguish human end users from machines (including software).   &lt;br /&gt;This implementation is posted on &lt;a href="http://www.codeproject.com/" target="_blank"&gt;CodeProject&lt;/a&gt; by &lt;a href="http://www.codeproject.com/script/Membership/Profiles.aspx?mid=462079" target="_blank"&gt;BrainJar&lt;/a&gt;. A zip files containing the source code is attached with the post too.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/aspnet/CaptchaImage.aspx" target="_blank"&gt;CAPTCHA Image&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8260338085914061202?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8260338085914061202/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8260338085914061202' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8260338085914061202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8260338085914061202'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/10/aspnet-captcha-implementation-with-c.html' title='ASP.NET CAPTCHA implementation with C#'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4450305730660052237</id><published>2008-10-28T17:39:00.001+08:00</published><updated>2008-10-28T17:39:14.997+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Repeater with Empty Data Template</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Apart from &lt;a href="http://acarieslee.blogspot.com/2008/10/adding-paging-support-to.html"&gt;Paging Support&lt;/a&gt;, one of the features that Repeater lacks is the &lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;quot;Empty Data Template&amp;quot;&lt;/font&gt;&lt;/strong&gt; that will be shown when there is no result too display. &lt;a href="http://devcandy.blogspot.com/" target="_blank"&gt;MONA&lt;/a&gt; blogged a very simple method to implement a &lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;quot;Empty Data Template&amp;quot;&lt;/font&gt;&lt;/strong&gt; for Repeater, and this implementation does not include writing anything in code behind.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devcandy.blogspot.com/2008/09/empty-data-template-with-repeater.html"&gt;Repeater with Empty Data Template&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I modified the code from &lt;a href="http://devcandy.blogspot.com/" target="_blank"&gt;MONA's blog&lt;/a&gt; a bit, by changing the &lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;quot;Label&amp;quot;&lt;/font&gt;&lt;/strong&gt; to &lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;quot;Panel&amp;quot;&lt;/font&gt;&lt;/strong&gt; inside the Footer Template. In this way we can treat the &lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;quot;Panel&amp;quot;&lt;/font&gt;&lt;/strong&gt; as &lt;strong&gt;&lt;font color="#ff0000"&gt;&amp;quot;Empty Data Template&amp;quot;&lt;/font&gt;&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Repeater&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;RptrContacts&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;&amp;lt;!-- Add your Item Template Here --&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;FooterTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Panel&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;pnlEmpty&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Visible&lt;/span&gt;&lt;span style="color: blue"&gt;='&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;#bool.Parse((RptrContacts.Items.Count==0).ToString())&lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;'&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;no result&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Panel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;FooterTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Repeater&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4450305730660052237?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4450305730660052237/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4450305730660052237' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4450305730660052237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4450305730660052237'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/10/repeater-with-empty-data-template.html' title='Repeater with Empty Data Template'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4667190933010305108</id><published>2008-10-28T17:15:00.001+08:00</published><updated>2008-10-28T17:15:56.747+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Adding Paging Support to the "Repeater"</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Repeater is very useful in displaying data with a fully customized layout. However, repeater does not have built-in paging support. I found an article in &lt;a href="http://www.4guysfromrolla.com/" target="_blank"&gt;&amp;quot;4GuysFromRolla&amp;quot;&lt;/a&gt; by &amp;quot;Harrison Enholm&amp;quot;, talking about how to add paging support to the Repeater or DataList, with the use of &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;PagedDataSource&amp;quot;&lt;/font&gt;&lt;/em&gt; Class.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/081804-1.aspx" target="_blank"&gt;Adding Paging Support to the Repeater or DataList with the PagedDataSource Class&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add a Repeater to the aspx page:      &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Repeater&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;RprChild&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;OnItemDataBound&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;RprChild_DataBound&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="color: blue"&gt;#&lt;/span&gt; DataBinder.Eval(Container.DataItem, &amp;quot;FirstName&amp;quot;) &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ItemTemplate&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Repeater&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;Setup a property to stored the &amp;quot;Current Page&amp;quot; variable of the Repeater in ViewState:      &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;int&lt;/span&gt; CurrentPage&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// look for current page in ViewState&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;object&lt;/span&gt; o = &lt;span style="color: blue"&gt;this&lt;/span&gt;.ViewState[&lt;span style="color: #a31515"&gt;&amp;quot;_CurrentPage&amp;quot;&lt;/span&gt;];&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (o == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; 0;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// By default shows the first page&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; (&lt;span style="color: blue"&gt;int&lt;/span&gt;)o;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.ViewState[&lt;span style="color: #a31515"&gt;&amp;quot;_CurrentPage&amp;quot;&lt;/span&gt;] = &lt;span style="color: blue"&gt;value&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;Declare a method &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;ItemsGet()&amp;quot;&lt;/font&gt;&lt;/em&gt; to assign a list of objects to the &lt;em&gt;&lt;font color="#ffffff"&gt;&amp;quot;PagedDataSource&amp;quot; objPds&lt;/font&gt;&lt;/em&gt;, and bind it with the Repeater:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; ItemsGet(&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Profile&lt;/span&gt;&amp;gt; children)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Populate the repeater control with the Items DataSet&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;PagedDataSource&lt;/span&gt; objPds = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;PagedDataSource&lt;/span&gt;();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; objPds.DataSource = children;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; objPds.AllowPaging = &lt;span style="color: blue"&gt;true&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; objPds.PageSize = 6;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; objPds.CurrentPageIndex = CurrentPage;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Disable Prev or Next buttons if necessary&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LkbPrevPage.Enabled = !objPds.IsFirstPage;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LkbNextPage.Enabled = !objPds.IsLastPage;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RprChild.DataSource = objPds;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RprChild.DataBind();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;Add a &amp;quot;Previous Page&amp;quot; &amp;amp; a &amp;quot;Next page&amp;quot; button, with their OnClick Event like these:      &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; LkbPrevPage_OnClick(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CurrentPage -= 1;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ItemsGet(member.Children);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; LkbNextPage_OnClick(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CurrentPage += 1;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ItemsGet(member.Children);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;Done! &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4667190933010305108?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4667190933010305108/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4667190933010305108' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4667190933010305108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4667190933010305108'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/10/adding-paging-support-to.html' title='Adding Paging Support to the &amp;quot;Repeater&amp;quot;'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5177050467316445439</id><published>2008-10-21T19:45:00.001+08:00</published><updated>2008-10-21T19:47:15.558+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Switching Culture in an ASP.NET web app</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In my previous blog post &lt;a href="http://acarieslee.blogspot.com/2008/08/globalization-of-aspnet-with-resources.html" target="_blank"&gt;Globalization of ASP.NET with Resources File&lt;/a&gt;, I talk about my experience in providing multi-language support for an ASP.NET web app. In that example, the web app get the cultures from preference of user's browser. If a user wants to change the preferred culture, he/she has to change it in browser.     &lt;br /&gt;Is there a way to do it in the web app, so that user can change the culture by clicking a button / select from a dropdown? The answer is yes, and &lt;a href="http://www.codeproject.com/script/Membership/Profiles.aspx?mid=1143776"&gt;Michael Ulmann&lt;/a&gt; had done a very nice implementation of that by using &amp;quot;Master Page&amp;quot;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeproject.com/KB/locale/MasterPage_Localization.aspx" target="_blank"&gt;Developing an ASP.NET page with MasterPage and Localization&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bz9tc508(VS.80).aspx" target="_blank"&gt;How to: Set the Culture and UI Culture for ASP.NET Web Page Globalization&lt;/a&gt; (&lt;a href="http://msdn.microsoft.com/en-us/library/default.aspx" target="_blank"&gt;MSDN&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Store the current culture name in a session variable. &lt;/li&gt;    &lt;li&gt;Make a new class (e.g. BasePage) inheriting &lt;em&gt;&lt;font color="#ffffff"&gt;System.Web.UI.Page&lt;/font&gt;&lt;/em&gt;, override method &amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;InitializeCulture()&lt;/strong&gt;&lt;/font&gt;&amp;quot;. You cannot override this method in the MasterPage as the &amp;quot;MasterPage&amp;quot; class does not inherit &lt;em&gt;&lt;font color="#ffffff"&gt;System.Web.UI.Page&lt;/font&gt;&lt;/em&gt;, as&amp;#160; Example Code Snippet:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; InitializeCulture()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//retrieve culture information from session&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; culture = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToString(Session[&lt;span style="color: #a31515"&gt;&amp;quot;MyCulture&amp;quot;&lt;/span&gt;]);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Culture = culture;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//set culture to current thread&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.CurrentThread.CurrentCulture = &lt;span style="color: #2b91af"&gt;CultureInfo&lt;/span&gt;.CreateSpecificCulture(culture);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.CurrentThread.CurrentUICulture = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;CultureInfo&lt;/span&gt;(culture);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//call base class&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;base&lt;/span&gt;.InitializeCulture();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;In the Master Page, make two Buttons with &amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;Command Argument&lt;/strong&gt;&lt;/font&gt;&amp;quot; set to &amp;quot;zh-TW&amp;quot; and &amp;quot;en-US&amp;quot; respectively. Assign the following method as their On-Click event:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; LbnCulture_Click(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Change Culture&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Session[&lt;span style="color: #a31515"&gt;&amp;quot;MyCulture&amp;quot;&lt;/span&gt;] = (sender &lt;span style="color: blue"&gt;as&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LinkButton&lt;/span&gt;).CommandArgument;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Reload Page to let new culture take effect&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Server.Transfer(Request.Path);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div class="VS"&gt;       &lt;p style="margin: 0px"&gt;Create a new ASP.NET page (e.g. SamplePage) using the above Master Page, inherit &amp;quot;SamplePage&amp;quot; from &amp;quot;&lt;font color="#ff0000"&gt;&lt;strong&gt;BasePage&lt;/strong&gt;&lt;/font&gt;&amp;quot; (the class created in Step 1). Then you can test the buttons.&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5177050467316445439?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5177050467316445439/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5177050467316445439' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5177050467316445439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5177050467316445439'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/10/switching-culture-in-aspnet-web-app.html' title='Switching Culture in an ASP.NET web app'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8438419644515798092</id><published>2008-10-07T19:33:00.001+08:00</published><updated>2008-10-07T19:33:54.906+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Office'/><title type='text'>Using parameter with Microsoft Query 'CONTAINS' criteria</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Microsoft Query does provide the &amp;quot;CONTAINS&amp;quot; criteria to check whether a field contains a value, the SQL 'WHERE' clause for this is &amp;quot;&lt;em&gt;WHERE criteria_field LIKE '%value_to_check%'&lt;/em&gt;&amp;quot;. The problem is how to use parameter with &amp;quot;CONTAINS&amp;quot; criteria?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With the '&amp;amp;' operator we can easily concatenate the parameter in the &amp;quot;LIKE '%%'&amp;quot; clause. The SQL is:   &lt;br /&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;WHERE criteria_field LIKE '%' &amp;amp; ? &amp;amp;'%'&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8438419644515798092?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8438419644515798092/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8438419644515798092' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8438419644515798092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8438419644515798092'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/10/using-parameter-with-microsoft-query.html' title='Using parameter with Microsoft Query &amp;#39;CONTAINS&amp;#39; criteria'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2287908286697272579</id><published>2008-10-07T19:17:00.001+08:00</published><updated>2008-10-07T19:17:07.726+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Office'/><title type='text'>Query Access DB from Excel 2007 by "Microsoft Query"</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Let's consider this scenario: I have a Access DB and want to retrieve the data in Excel. In Excel 2007, the easiest way to do it (as far as I know) is to use built-in Access connect (&amp;quot;&lt;font color="#ff0000"&gt;Data&lt;/font&gt;&amp;quot; tab =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;Get External Data&lt;/font&gt;&amp;quot; group =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;From Access&lt;/font&gt;&amp;quot;).&lt;/p&gt;  &lt;p&gt;However, in this way I cannot pass parameter into the query, how about if I want to use the value of a cell as the query parameter? In this case, you can use &amp;quot;Microsoft Query&amp;quot; in Excel 2007.&lt;/p&gt;  &lt;p&gt;Seems that &amp;quot;Microsoft Query&amp;quot; can be used on other DB, but I haven't tried it out yet.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/excel/HP100898981033.aspx?pid=CH100648471033" target="_blank"&gt;Connect to (Import) external data&lt;/a&gt; (Excel 2007)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/excel/HA100996641033.aspx?pid=CH100648471033" target="_blank"&gt;Use Microsoft Query to retrieve external data&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/excel/HP102161131033.aspx?pid=CH100648471033" target="_blank"&gt;Customize a parameter query&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Build a parameter query with &amp;quot;Microsoft Query&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In Excel 2007, select &amp;quot;&lt;font color="#ff0000"&gt;Data&lt;/font&gt;&amp;quot; tab =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;Get External Data&lt;/font&gt;&amp;quot; group =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;From Other Sources&lt;/font&gt;&amp;quot; =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;From Microsoft Query&lt;/font&gt;&amp;quot;&lt;/li&gt;    &lt;li&gt;Select your Access database&lt;/li&gt;    &lt;li&gt;In the &amp;quot;&lt;font color="#ff0000"&gt;Query Wizard&lt;/font&gt;&amp;quot;, setup your query and select &amp;quot;&lt;font color="#ff0000"&gt;View data or edit query in Microsoft Query&lt;/font&gt;&amp;quot; to open &amp;quot;&lt;font color="#ff0000"&gt;Microsoft Query&lt;/font&gt;&amp;quot;&lt;/li&gt;    &lt;li&gt;In &amp;quot;&lt;font color="#ff0000"&gt;Microsoft Query&lt;/font&gt;&amp;quot;, click the &amp;quot;&lt;font color="#ff0000"&gt;Show/Hide Criteria&lt;/font&gt;&amp;quot; button (the button with a pair of glasses on it)&lt;/li&gt;    &lt;li&gt;Select the Criteria Field (Field to be compared in SQL 'WHERE' clause), and enter &amp;quot;[&lt;em&gt;&lt;font color="#ffffff"&gt;Parameter Name&lt;/font&gt;&lt;/em&gt;]&amp;quot; in &amp;quot;&lt;font color="#ff0000"&gt;Value&lt;/font&gt;&amp;quot; to specify a parameter in the SQL query.&lt;/li&gt;    &lt;li&gt;Switch to SQL view and you should see a 'WHERE' clause like this:     &lt;br /&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;WHERE customer_id = ?&lt;/font&gt;&lt;/em&gt;      &lt;br /&gt;The question mark &amp;quot;?&amp;quot; represents a parameter.&lt;/li&gt;    &lt;li&gt;Go ahead and modify the SQL as you like. When finished, select &amp;quot;&lt;font color="#ff0000"&gt;File&lt;/font&gt;&amp;quot; =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;Return Data to Microsoft Office Excel&lt;/font&gt;&amp;quot; to save and exit.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Use a cell's value as parameter&lt;/font&gt;&lt;/strong&gt; (For more detail, go to &lt;a href="http://office.microsoft.com/en-us/excel/HP102161131033.aspx?pid=CH100648471033" target="_blank"&gt;Reference 3&lt;/a&gt;)&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Click on any cell of your query result&lt;/li&gt;    &lt;li&gt;Select &amp;quot;&lt;font color="#ff0000"&gt;Data&lt;/font&gt;&amp;quot; tab =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;Connections&lt;/font&gt;&amp;quot; group =&amp;gt; &amp;quot;&lt;font color="#ff0000"&gt;Properties&lt;/font&gt;&amp;quot; (If &amp;quot;&lt;font color="#ff0000"&gt;Properties&lt;/font&gt;&amp;quot; button is grayed out, redo Step 1 )&lt;/li&gt;    &lt;li&gt;Click &amp;quot;&lt;font color="#ff0000"&gt;Connection properties&lt;/font&gt;&amp;quot; (The little button next to Connection Name)&lt;/li&gt;    &lt;li&gt;Select &amp;quot;&lt;font color="#ff0000"&gt;Definition&lt;/font&gt;&amp;quot; tab, click &amp;quot;&lt;font color="#ff0000"&gt;Parameters&lt;/font&gt;&amp;quot; (If there is no &amp;quot;&lt;font color="#ff0000"&gt;Parameters&lt;/font&gt;&amp;quot; button, it means that your query doesn't contain parameter, redo Step 1-7 in previous section)&lt;/li&gt;    &lt;li&gt;Select the desired parameter, click &amp;quot;&lt;font color="#ff0000"&gt;Get the value from the following cell:&lt;/font&gt;&amp;quot; and select the cell, you may also select &amp;quot;&lt;font color="#ff0000"&gt;Refresh automatically when cell value changes&lt;/font&gt;&amp;quot;&lt;/li&gt;    &lt;li&gt;Done. Change the value of the cell to test the query.&lt;/li&gt;    &lt;li&gt;Happy building query! (Hopefully...)&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2287908286697272579?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2287908286697272579/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2287908286697272579' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2287908286697272579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2287908286697272579'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/10/query-access-db-from-excel-2007-by.html' title='Query Access DB from Excel 2007 by &amp;quot;Microsoft Query&amp;quot;'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-158407893545972240</id><published>2008-10-06T00:05:00.001+08:00</published><updated>2008-10-06T00:05:19.599+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Office'/><title type='text'>Eliminate error messages with "IFERROR" in Excel 2007</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In making dynamic Excel spreadsheet, sometimes we may have a function with result &amp;quot;#REF&amp;quot; or &amp;quot;#DIV/0&amp;quot;. Some of these error messages are avoidable, but some of them aren't. In this case we have to conceal (hide) the error message. In Excel 2003 or before, we were using the &amp;quot;IF&amp;quot; function to check whether the function results in an error. However, this workaround is cumbersome and not efficient, because we have to put the function twice inside the &amp;quot;IF&amp;quot; statement.&lt;/p&gt;  &lt;p&gt;Now in Excel 2007, we have a new function &amp;quot;IFERROR&amp;quot; designed to due with this particular situation. Let's see how we can benefit from it.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.techrepublic.com.com/msoffice/?p=443"&gt;Eliminate those unfriendly error messages with Excel 2007&amp;#8217;s IFERROR function&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Step&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The step is very simple, just replace your old &amp;quot;IF&amp;quot; function:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ffffff"&gt; =IF(SOME_FUNCTION(),&amp;#8221;Error Message&amp;#8221;, SOME_FUNCTION())&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;with this one&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#ffffff"&gt; =IFERROR(SOME_FUNCTION(),&amp;#8221;Error Message&amp;#8221;)&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;and you are good to go~&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-158407893545972240?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/158407893545972240/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=158407893545972240' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/158407893545972240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/158407893545972240'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/10/eliminate-error-messages-with-in-excel.html' title='Eliminate error messages with &amp;quot;IFERROR&amp;quot; in Excel 2007'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5414745217631596117</id><published>2008-09-11T17:55:00.001+08:00</published><updated>2008-09-11T17:55:14.208+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><title type='text'>香港寛頻轉IP方法</title><content type='html'>&lt;p&gt;(轉用香港話...)&lt;/p&gt;  &lt;p&gt;前幾日見到呢個blog講點樣可以轉香港寬頻派俾我地既IP, 本來我都以為香港寬頻係用static IP無得轉. 點知仲有個咁簡單既方法, 真係道高一尺....&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;來原&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://space.uwants.com/html/20/823320_itemid_189647.html" target="_blank"&gt;香港寬頻轉IP方法&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;轉ip方法簡介&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;按 &amp;quot;開始&amp;quot; -&amp;gt; &amp;quot;執行&amp;quot; -&amp;gt; &amp;quot;輸入 &lt;em&gt;&lt;font color="#ffffff"&gt;cmd&lt;/font&gt;&lt;/em&gt;&amp;quot; &lt;/li&gt;    &lt;li&gt;彈出 Command Prompt, 輸入 &lt;em&gt;&lt;font color="#ffffff"&gt;ipconfig/all&lt;/font&gt;&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;記低 &amp;quot;Physical Address&amp;quot;&lt;/li&gt;    &lt;li&gt;到 &amp;quot;控制台&amp;quot; -&amp;gt; &amp;quot;網路連線&amp;quot; -&amp;gt; right-click &amp;quot;區域連線&amp;quot; -&amp;gt; &amp;quot;內容&amp;quot;&lt;/li&gt;    &lt;li&gt;0向 &amp;quot;區域連線 內容&amp;quot; 內, 按 &amp;quot;設定&amp;quot;, 再選 &amp;quot;進階&amp;quot;&lt;/li&gt;    &lt;li&gt;在新彈出來既視窗中, 於左面 &amp;quot;內容&amp;quot; 選 &amp;quot;本地管理位址&amp;quot;&lt;/li&gt;    &lt;li&gt;在右面 &amp;quot;數值&amp;quot; 下填上之前記低既 &amp;quot;Physical Address&amp;quot;&lt;/li&gt;    &lt;li&gt;在填上既 &amp;quot;Physical Address&amp;quot; 入面, 隨意更改&lt;strong&gt;&lt;font color="#ff0000"&gt;一個&lt;/font&gt;&lt;/strong&gt;數字或字母      &lt;br /&gt;(輸入的數值只可以是十六進制, 即是 0-9 或 A-F, 並且如原來數字是雙數, 就填雙數, 否則填單數)&lt;/li&gt;    &lt;li&gt;按 &amp;quot;確定&amp;quot;, 檢查 IP 係咪改左, 完成&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5414745217631596117?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5414745217631596117/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5414745217631596117' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5414745217631596117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5414745217631596117'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/09/ip.html' title='香港寛頻轉IP方法'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8017910534540873924</id><published>2008-09-08T11:44:00.001+08:00</published><updated>2008-09-08T11:44:43.409+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><title type='text'>"Page is customized" in SPD 2007</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I come across a situation that the &amp;quot;Edit Page&amp;quot; menu item is missing for certain page in a SharePoint Site. Later I found that it is caused by &amp;quot;Customized Page&amp;quot; created by SharePoint Designer (SPD).    &lt;br /&gt;If want to enable the &amp;quot;Edit Page&amp;quot; function of customized page, you can navigate to the page in SPD, right-click on it and select &amp;quot;Reset to Site Definition&amp;quot;. However, this action will remove the customized page content.     &lt;br /&gt;Links below talk more about &amp;quot;customized page&amp;quot;, &amp;quot;customized files&amp;quot; in WSS 3.0 &amp;amp; MOSS 2007&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc406685.aspx" target="_blank"&gt;Understanding and Creating Customized and Uncustomized Files in Windows SharePoint Services 3.0&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointdesigner/HA101741451033.aspx" target="_blank"&gt;Reset a customized page to the site definition&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.cnblogs.com/zhalin/archive/2008/02/05/1064750.html" target="_blank"&gt;關於 SharePoint Designer 的利與弊&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8017910534540873924?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8017910534540873924/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8017910534540873924' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8017910534540873924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8017910534540873924'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/09/is-customized-in-spd-2007.html' title='&amp;quot;Page is customized&amp;quot; in SPD 2007'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-1164630464127189713</id><published>2008-09-05T16:32:00.001+08:00</published><updated>2008-09-05T16:32:21.619+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><title type='text'>Delete users from a Site collection</title><content type='html'>&lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;A user might belongs to many user groups in a MOSS site collection. Below steps show how to remove users from all groups of a site collection.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.technet.microsoft.com/en-US/sharepointadmin/thread/4c364f08-63bf-4cb4-89aa-55101c713b23/" target="_blank"&gt;Removing Selected Users in MOSS 2007/WSS v3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Select &amp;quot;Site Actions&amp;quot; -&amp;gt; &amp;quot;Site Settings&amp;quot;&lt;/li&gt;    &lt;li&gt;Click &amp;quot;People and groups&amp;quot; under &amp;quot;Users and Permission&amp;quot;&lt;/li&gt;    &lt;li&gt;In &amp;quot;People and Groups&amp;quot; page, click &amp;quot;All People&amp;quot;&lt;/li&gt;    &lt;li&gt;Select the users you want to remove, then select &amp;quot;Actions&amp;quot; -&amp;gt; &amp;quot;Delete Users from Site collection&amp;quot;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-1164630464127189713?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/1164630464127189713/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=1164630464127189713' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1164630464127189713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1164630464127189713'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/09/delete-users-from-site-collection.html' title='Delete users from a Site collection'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4623052991381945916</id><published>2008-09-04T10:05:00.001+08:00</published><updated>2008-09-04T10:05:45.403+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><title type='text'>Save MOSS sub sites as a template</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Site templates are very useful when creating sites with similar structure &amp;amp; settings. However the link &amp;quot;Save site as template&amp;quot; is only available under Look and Feel at the Top Level of the site collection. So can I create site template of my sub site? Yes, and the way to do it is indeed quite simple.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/blogs/shane/archive/2006/07/29/moss-2007-save-site-as-a-template-missing.aspx" target="_blank"&gt;MOSS 2007 - Save site as a template missing&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Navigate to the site you want to create site template.&lt;/li&gt;    &lt;li&gt;Copy its URL (e.g. &lt;font color="#ffffff"&gt;&amp;quot;http://www.abc.com/demo/default.aspx&amp;quot;&lt;/font&gt;)&lt;/li&gt;    &lt;li&gt;Change the URL to &lt;font color="#ffffff"&gt;&amp;quot;http://www.abc.com/demo/&lt;em&gt;_layout/savetmpl.aspx&lt;/em&gt;&amp;quot;&lt;/font&gt;, this will lead you to the &amp;quot;Create site template&amp;quot; page.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4623052991381945916?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4623052991381945916/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4623052991381945916' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4623052991381945916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4623052991381945916'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/09/save-moss-sub-sites-as-template.html' title='Save MOSS sub sites as a template'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7926745041023176290</id><published>2008-09-01T15:29:00.001+08:00</published><updated>2008-09-01T15:29:29.587+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='VSTS 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight + SharePoint integration (Silverlight Blueprint for SharePoint)</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Microsoft provides a Blueprint for integrating Silverlight 2 applications with SharePoint sites. The Blueprint includes guides to configure SharePoint runtime environment for hosting Silverlight 2 application, as well as VS 2008 development environment for building Silverlight 2 wrapper webparts. Besides, 5 examples application are included in the Blueprint.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/SL4SP/Release/ProjectReleases.aspx?ReleaseId=16420" target="_blank"&gt;Silverlight Blueprint for SharePoint Beta 2&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Below only briefly shows the steps required for the integration, for details please refer to Silverlight Blueprint Guidance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Configure VS 2008 development environment&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install the &lt;font color="#ff0000"&gt;Microsoft Silverlight 2 Beta 2 plug-in&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Install &lt;font color="#ff0000"&gt;VS 2008 SP1&lt;/font&gt; and &lt;font color="#ff0000"&gt;.NET Framework 3.5 SP1&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Install &lt;font color="#ff0000"&gt;Microsoft Silverlight 2 Tools Beta 2 for VS 2008&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Install &lt;font color="#ff0000"&gt;Windows SharePoint Services 3.0 Tools: VS 2008 Extensions&lt;/font&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Configure SharePoint runtime environment&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install &lt;font color="#ff0000"&gt;Service Pack 1&lt;/font&gt; for your SharePoint (either WSS 3.0 or MOSS 2007)&lt;/li&gt;    &lt;li&gt;Deploy &lt;font color="#ff0000"&gt;System.Web.Silverlight.dll&lt;/font&gt; into Global Assembly Cache&lt;/li&gt;    &lt;li&gt;Add a new &lt;font color="#ff0000"&gt;MIME type for (.xap) file&lt;/font&gt; to the IIS Web Application hosting SharePoint Sites&lt;/li&gt;    &lt;li&gt;Modify the &lt;font color="#ff0000"&gt;web.config file&lt;/font&gt; of the IIS Web Application hosting SharePoint Sites to enable ASP.NET AJAX 1.0 and Silverlight 2 applications.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7926745041023176290?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7926745041023176290/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7926745041023176290' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7926745041023176290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7926745041023176290'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/09/silverlight-sharepoint-integration.html' title='Silverlight + SharePoint integration (Silverlight Blueprint for SharePoint)'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-545730705587893016</id><published>2008-08-27T10:27:00.001+08:00</published><updated>2008-08-27T11:48:13.504+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Silverlight Get-started tutorial</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;To get started with Silverlight, I search for tutorial on web and found &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx" target="_blank"&gt;this&lt;/a&gt; blog by Scott Guthrie giving out a tutorial on building a complete Silverlight application with VS 2008.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx" target="_blank"&gt;First Look at Silverlight 2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Silverlight Tools Beta 2 for Visual Studio 2008&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/28/first-look-at-using-expression-blend-with-silverlight-2.aspx" target="_blank"&gt;First Look at Using Expression Blend with Silverlight 2&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Really Simple steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install Silverlight 2 (if you don't have one) &lt;/li&gt;    &lt;li&gt;Install VS 2008 &lt;/li&gt;    &lt;li&gt;Install Silverlight Tools Beta 2 for VS 2008 (download from &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=50A9EC01-267B-4521-B7D7-C0DBA8866434&amp;amp;displaylang=en" target="_blank"&gt;reference 2&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;Create a Silverlight Application in VS 2008 &lt;/li&gt;    &lt;li&gt;Happy coding! &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-545730705587893016?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/545730705587893016/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=545730705587893016' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/545730705587893016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/545730705587893016'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/silverlight-get-started-tutorial.html' title='Silverlight Get-started tutorial'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2528492791901509603</id><published>2008-08-21T11:09:00.001+08:00</published><updated>2008-08-21T11:10:55.611+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><title type='text'>Sending test email through Telnet</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;How to test if a SMTP server function properly in sending email? The simplest way is to send a test email. In this blog I will talk about how to send a simple test email by Telnet to the SMTP server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/cc160769.aspx" target="_blank"&gt;How Simple is SMTP?&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start a Telnet connection to the SMTP server by using the following command in command prompt:      &lt;br /&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;telnet $smtp_server_ip$ $port$&lt;/font&gt;&lt;/em&gt;       &lt;br /&gt;Note that the ip &amp;amp; port is separated by a &amp;quot;space&amp;quot; but not &amp;quot;colon&amp;quot;, For SMTP server, the port is &amp;quot;25&amp;quot; &lt;/li&gt;    &lt;li&gt;Once the connection is established, type in &amp;quot;&lt;em&gt;&lt;font color="#ffffff"&gt;HELO&lt;/font&gt;&lt;/em&gt;&amp;quot; or &amp;quot;&lt;em&gt;&lt;font color="#ffffff"&gt;EHLO&lt;/font&gt;&lt;/em&gt;&amp;quot; before enter other commands &lt;/li&gt;    &lt;li&gt;After saying hello, we can use the following command to specify the email sender:      &lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;em&gt;MAIL FROM: sender@domain.com&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Next we can specify the receiver by the following command:      &lt;br /&gt;&lt;font color="#ffffff"&gt;&lt;em&gt;RCPT TO: receiver@domain.com&lt;/em&gt;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Now the last thing to do is entering the mail body, you can enter your mail after sending this command:      &lt;br /&gt;&lt;em&gt;&lt;font color="#ffffff"&gt;DATA&lt;/font&gt;&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;After you enter command &amp;quot;&lt;em&gt;&lt;font color="#ffffff"&gt;DATA&lt;/font&gt;&lt;/em&gt;&amp;quot;, the server will tell you to enter mail and indicate how to end the mail body. Follow it and the server will reply that your email is on its way! &lt;/li&gt;    &lt;li&gt;After all is done, enter &amp;quot;&lt;em&gt;&lt;font color="#ffffff"&gt;QUIT&lt;/font&gt;&lt;/em&gt;&amp;quot; to close the connection. &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2528492791901509603?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2528492791901509603/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2528492791901509603' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2528492791901509603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2528492791901509603'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/sending-test-email-through-telnet.html' title='Sending test email through Telnet'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8648305423885750235</id><published>2008-08-20T15:58:00.001+08:00</published><updated>2008-08-20T15:58:35.587+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Globalization of ASP.NET with Resources File</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Resources files can be used to provide multi-languages support in ASP.NET web applications. The web app can be set to display different languages based on the settings of client browser. Following shows how to use resources files in a web application project.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms227427.aspx" target="_blank"&gt;ASP.NET Web Page Resources Overview&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.c-sharpcorner.com/UploadFile/prasham/RESOURCEFILES02132008080733AM/RESOURCEFILES.aspx" target="_blank"&gt;Resource Files in ASP.NET 2.0&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx" target="_blank"&gt;CultureInfo Class&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx" target="_blank"&gt;globalization Element (ASP.NET Settings Schema)&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Example&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the following example I will create a web application project in Visual Studio 2008 and add English &amp;amp; Traditional Chinese support for a simple page containing only one Label.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Create the Web Application Project&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/u&gt; In order to make the resources files editable even after the application is published, we have to use &lt;font color="#ff0000"&gt;&amp;quot;ASP.NET Web Application&amp;quot;&lt;/font&gt; as the project template.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In VS 2008, select &amp;quot;File&amp;quot; -&amp;gt; &amp;quot;New&amp;quot; -&amp;gt; &amp;quot;Project&amp;quot; &lt;/li&gt;    &lt;li&gt;In &amp;quot;Project types&amp;quot;, select &amp;quot;Visual C#&amp;quot; -&amp;gt; &amp;quot;Web&amp;quot;. &lt;/li&gt;    &lt;li&gt;In &amp;quot;Template&amp;quot;, select &amp;quot;ASP.NET Web Application&amp;quot;. Enter the Name of the web and the solution &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Add Global Resources files (for default language: English) to the application&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right-click on the web application project &lt;/li&gt;    &lt;li&gt;In the appeared menu, select &amp;quot;Add&amp;quot; -&amp;gt; &amp;quot;Add ASP.NET Folder&amp;quot; -&amp;gt; &amp;quot;App_GlobalResources&amp;quot;, a folder named &amp;quot;App_GlobalResources&amp;quot; created &lt;/li&gt;    &lt;li&gt;Right-click on folder &amp;quot;App_GlobalResources&amp;quot; &lt;/li&gt;    &lt;li&gt;In the appeared menu, select &amp;quot;Add&amp;quot; -&amp;gt; &amp;quot;New Item...&amp;quot; &lt;/li&gt;    &lt;li&gt;In &amp;quot;Add New Item&amp;quot; window, select &amp;quot;Resources File&amp;quot;, name it as &amp;quot;Resource.resx&amp;quot; &lt;/li&gt;    &lt;li&gt;Open &amp;quot;Resource.resx&amp;quot; and add a row with      &lt;br /&gt;Name: TestString       &lt;br /&gt;Value: Test &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Add another Global Resources files for Trad. Chinese&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right-click on folder &amp;quot;App_GlobalResources&amp;quot; &lt;/li&gt;    &lt;li&gt;In the appeared menu, select &amp;quot;Add&amp;quot; -&amp;gt; &amp;quot;New Item...&amp;quot; &lt;/li&gt;    &lt;li&gt;In &amp;quot;Add New Item&amp;quot; window, select &amp;quot;Resources File&amp;quot; under &amp;quot;Visual C#&amp;quot; category, name it as &amp;quot;Resource.&lt;em&gt;zh-Hant&lt;/em&gt;.resx&amp;quot;       &lt;br /&gt;&lt;u&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/u&gt; The phase between &amp;quot;Resource&amp;quot; &amp;amp; &amp;quot;resx&amp;quot; indicate the culture represented by this resources file. In this case, &amp;quot;zh-Hant&amp;quot; is the culture for &amp;quot;Traditional Chinese&amp;quot; which includes Locales for &amp;quot;Hong Kong&amp;quot;, &amp;quot;Taiwan&amp;quot; etc. &lt;/li&gt;    &lt;li&gt;Open &amp;quot;Resource.zh-Hant.resx&amp;quot; and add a row with      &lt;br /&gt;Name: TestString       &lt;br /&gt;Value: 測試 &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Configure &amp;quot;web.config&amp;quot; to change Language based on client browser's setting&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open file &amp;quot;web.config&amp;quot; &lt;/li&gt;    &lt;li&gt;Add the following code under &amp;quot;system.web&amp;quot; tab &lt;/li&gt; &lt;/ol&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;globalization&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;enableClientBasedCulture&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;uiCulture&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;auto&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;culture&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;auto&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Add an ASP.NET page with a Label to see the result&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right-click on the web application project &lt;/li&gt;    &lt;li&gt;In the appeared menu, select &amp;quot;Add&amp;quot; -&amp;gt; &amp;quot;New Item...&amp;quot; &lt;/li&gt;    &lt;li&gt;In &amp;quot;Add New Item&amp;quot; window, select &amp;quot;Web Form&amp;quot;, name it as &amp;quot;Test.aspx&amp;quot; &lt;/li&gt;    &lt;li&gt;Open &amp;quot;Test.aspx&amp;quot;, add a Web Control Label to it with the following code: &lt;/li&gt; &lt;/ol&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;asp&lt;/span&gt;&lt;span style="color: blue"&gt;:&lt;/span&gt;&lt;span style="color: #a31515"&gt;Label&lt;/span&gt; &lt;span style="color: red"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Label1&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;runat&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;Text&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;&lt;/span&gt;&lt;span style="background: #ffee62"&gt;&amp;lt;%&lt;/span&gt;$ Resources: Resources, TestString &lt;span style="background: #ffee62"&gt;%&amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Debug the project to see the result&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If your browser (take IE 7 in this case) don't have any language preference setting, then the page should shows &amp;quot;Test&amp;quot;. You can change the Language setting by:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Select &amp;quot;Tools&amp;quot; -&amp;gt; &amp;quot;Internet Options&amp;quot;&lt;/li&gt;    &lt;li&gt;In &amp;quot;General&amp;quot; Tab, select &amp;quot;Languages&amp;quot;&lt;/li&gt;    &lt;li&gt;Click &amp;quot;Add&amp;quot; to add more preferred Languages, you can also change the priority of preferred Languages&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8648305423885750235?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8648305423885750235/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8648305423885750235' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8648305423885750235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8648305423885750235'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/globalization-of-aspnet-with-resources.html' title='Globalization of ASP.NET with Resources File'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-9058633157460561655</id><published>2008-08-12T11:44:00.002+08:00</published><updated>2008-08-12T11:51:39.799+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Multiple Delete in GridView</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;span style="color:#0080ff;"&gt;Overview&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;By default GridView allows us to delete only a record (a row) at a time, it will be better if we can select multiple rows with check boxes and delete them in a batch.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;span style="color:#0080ff;"&gt;Reference&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.dotnetcurry.com/ShowArticle.aspx?ID=66" target="_blank"&gt;Deleting Multiple Rows in a GridView&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.c-sharpcorner.com/Forums/ShowMessages.aspx?ThreadID=36886" target="_blank"&gt;delete multiple rows from gridview&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;blockquote&gt;   &lt;p&gt;Reference 1 shows a example of multiple delete in GridView with SqlDataSource. Reference 2 demonstrates the same thing and add a simple JavaScript asking user to confirm deleting.&lt;/p&gt;    &lt;p&gt;I'm using ObjectDataSource in my code, which is very similar to what Reference 1 shows.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-9058633157460561655?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/9058633157460561655/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=9058633157460561655' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/9058633157460561655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/9058633157460561655'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/multiple-delete-in-gridview.html' title='Multiple Delete in GridView'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7383970865959708810</id><published>2008-08-08T10:56:00.001+08:00</published><updated>2008-08-08T12:29:38.244+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Connecting NHibernate to Oracle Database</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In my previous &lt;a href="http://acarieslee.blogspot.com/2008/08/hibernate-for-net-nhibernate-setup.html"&gt;blog - NHibernate Setup&lt;/a&gt;, I shared my experience on setting up NHibernate with ASP.NET and SQL Server 2005 Database. Now I would like to talk about my experience on connecting NHibernate to Oracle Database.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://oracleatdotnet.blogspot.com/2007/01/as-long-as-odpnet-is-under-hood.html"&gt;As long as ODP.NET is under the hood - NHibernate&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.timvasil.com/blog14/post/2008/02/NHibernate--SpringNET-with-Oracle.aspx"&gt;NHibernate &amp;amp; Spring.NET with Oracle&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://michaelhanney.com/blog/2007/10/31/nhibernate-and-oracle-part-1-using-an-external-configuration-file/"&gt;NHibernate and Oracle Part 1 - using an external configuration file&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;About the Oracle Client Driver&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There are two types of commonly used Oracle Client Driver: &lt;em&gt;Microsoft's .NET driver&lt;/em&gt; &amp;amp; &lt;em&gt;Oracle's own .NET driver&lt;/em&gt;. Using Microsoft's .NET driver in NHibernate is very very simple, but according to &lt;a href="http://www.timvasil.com/blog14/post/2008/02/NHibernate--SpringNET-with-Oracle.aspx" target="_blank"&gt;Reference 2&lt;/a&gt; talking about NHibernate documentation, this driver does not handle long character strings correctly.     &lt;br /&gt;In the following blog, I will show the configuration for BOTH Drivers.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Steps - Microsoft's .NET driver&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install &amp;quot;Oracle Client&amp;quot;, you can download it at &amp;quot;&lt;a title="http://www.oracle.com/technology/software/index.html" href="http://www.oracle.com/technology/software/index.html" target="_blank"&gt;http://www.oracle.com/technology/software/index.html&lt;/a&gt;&amp;quot; but registration required. I use Client 10g. &lt;/li&gt;    &lt;li&gt;Replace the original &lt;font color="#ff0000"&gt;&amp;quot;hibernate-configuration&amp;quot;&lt;/font&gt; section in &amp;quot;web.config&amp;quot; with the following XML:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;session-factory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;dialect&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Dialect.Oracle9Dialect&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;connection.provider&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Connection.DriverConnectionProvider&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;hibernate.connection.driver_class&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Driver.OracleClientDriver&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;connection.connection_string&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Data source=DATASOURCE;User Id=ID;Password=PASS;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;session-factory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;That's it!!! One thing to note is that in the connection string &lt;font color="#ff0000"&gt;&amp;quot;Data source&amp;quot;&lt;/font&gt; is defined in &amp;quot;Net Manager&amp;quot; of Oracle Client. You can also find that in &lt;em&gt;&amp;quot;$ORACLE_HOME\NETWORK\ADMIN\tnsnames.ora&amp;quot;&lt;/em&gt;. $ORACLE_HOME is the installation folder of your Oracle Client, mine is &lt;em&gt;&amp;quot;C:\oracle\product\10.2.0\client_1&amp;quot;&lt;/em&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Steps - Oracle's .NET driver&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Install &amp;quot;Oracle Client&amp;quot;, you can download it at &amp;quot;&lt;a title="http://www.oracle.com/technology/software/index.html" href="http://www.oracle.com/technology/software/index.html" target="_blank"&gt;http://www.oracle.com/technology/software/index.html&lt;/a&gt;&amp;quot; but registration required. I use Client 10g. &lt;/li&gt;    &lt;li&gt;Set Environment Variable &lt;font color="#ff0000"&gt;&amp;quot;ORACLE_HOME&amp;quot;&lt;/font&gt; to installation folder of your Oracle Client, mine is &lt;em&gt;&amp;quot;C:\oracle\product\10.2.0\client_1&amp;quot;&lt;/em&gt;. &lt;/li&gt;    &lt;li&gt;Make sure that &lt;font color="#ff0000"&gt;&amp;quot;Oracle.DataAccess&amp;quot;&lt;/font&gt; is available in your Global Assembly Cache (GAC). You can view your GAC at &amp;quot;Administrative Tools&amp;quot; =&amp;gt; &amp;quot;.NET Framework 2.0&amp;quot; &lt;/li&gt;    &lt;li&gt;In &amp;quot;web.config&amp;quot;, add reference to &amp;quot;Oracle.DataAccess&amp;quot; by adding &lt;font color="#ff0000"&gt;&amp;quot;qualifyAssembly&amp;quot;&lt;/font&gt; section in &lt;font color="#ff0000"&gt;&amp;quot;assemblyBinding&amp;quot;&lt;/font&gt; section:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;assemblyBinding&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;urn:schemas-microsoft-com:asm.v1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;qualifyAssembly&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;partialName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Oracle.DataAccess&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;fullName&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Oracle.DataAccess, Version=10.2.0.100, Culture=neutral, PublicKeyToken=89b483f429c47342&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;assemblyBinding&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;Replace the original &lt;font color="#ff0000"&gt;&amp;quot;hibernate-configuration&amp;quot;&lt;/font&gt; section in &amp;quot;web.config&amp;quot; with the following XML:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;session-factory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;dialect&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Dialect.Oracle9Dialect&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;connection.provider&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Connection.DriverConnectionProvider&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;hibernate.connection.driver_class&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Driver.OracleDataClientDriver&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;connection.connection_string&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Data source=DATASOURCE;User Id=ID;Password=PASS;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;session-factory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;      &lt;br /&gt;Note that the &amp;quot;driver_class&amp;quot; is &lt;em&gt;&amp;quot;OracleDataClientDriver&amp;quot;&lt;/em&gt; instead of &lt;em&gt;&amp;quot;OracleClientDriver&amp;quot;&lt;/em&gt;. &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7383970865959708810?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7383970865959708810/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7383970865959708810' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7383970865959708810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7383970865959708810'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/connecting-nhibernate-to-oracle.html' title='Connecting NHibernate to Oracle Database'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6173338995078273544</id><published>2008-08-05T19:20:00.001+08:00</published><updated>2008-08-05T19:20:57.804+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Convert NHibernate result iList to DataSet</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Just like Hibernate, NHibernate returns query result in List of Objects (that's the idea of O/R mapping). It is very good, but some ASP.NET tools only work with DataSet, so we have to explicitly convert the iList returned by NHibernate to DataSet. The following simple code snippet mainly copied from &lt;a href="http://www.ayende.com/Blog/archive/2007/05/09/Converting-an-object-collection-to-a-DataSet.aspx" target="_blank"&gt;Ayende's Blog&lt;/a&gt; can server this purpose.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.ayende.com/Blog/archive/2007/05/09/Converting-an-object-collection-to-a-DataSet.aspx"&gt;Converting an object collection to a DataSet&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Company&lt;/span&gt;&amp;gt; ShowCompanies()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Get the List of Companies&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ICriteria&lt;/span&gt; criteria = &lt;span style="color: #2b91af"&gt;NHibernateHttpModule&lt;/span&gt;.CurrentSession.CreateCriteria(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;Company&lt;/span&gt;));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IList&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af"&gt;Company&lt;/span&gt;&amp;gt; companies = criteria.List&amp;lt;&lt;span style="color: #2b91af"&gt;Company&lt;/span&gt;&amp;gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;// Convert the List into DataSet &amp;amp; return it&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;DataTable&lt;/span&gt; dt = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DataTable&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dt.Columns.Add(&lt;span style="color: #a31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: blue"&gt;string&lt;/span&gt;));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dt.Columns.Add(&lt;span style="color: #a31515"&gt;&amp;quot;CompanyCode&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: blue"&gt;string&lt;/span&gt;));&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: #2b91af"&gt;Company&lt;/span&gt; comp &lt;span style="color: blue"&gt;in&lt;/span&gt; companies)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;DataRow&lt;/span&gt; row = dt.NewRow();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; row[&lt;span style="color: #a31515"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;] = comp.Name;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; row[&lt;span style="color: #a31515"&gt;&amp;quot;CompanyCode&amp;quot;&lt;/span&gt;] = comp.CompanyCode;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dt.Rows.Add(row);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;DataSet&lt;/span&gt; ds = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;DataSet&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ds.Tables.Add(dt);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; ds;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; companies;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6173338995078273544?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6173338995078273544/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6173338995078273544' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6173338995078273544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6173338995078273544'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/convert-nhibernate-result-ilist-to.html' title='Convert NHibernate result iList to DataSet'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7533961302301344454</id><published>2008-08-04T17:42:00.001+08:00</published><updated>2008-08-04T17:42:51.082+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS 2008'/><title type='text'>Using CopySourceAsHtml in VS 2008</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;CopySourceAsHtml (CSAH) is a very useful tools for us &amp;quot;Programming Oriented Blogger&amp;quot;. But after I switched to VS 2008, I soon found that there is no CSAH officially supporting it. Luckily with a little bit of googling, I was able to find a couple of Blogs of how to use CSAH in VS 2008.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;a href="http://developers.de/blogs/andreas_erben/archive/2007/08/01/using-copysourceashtml-with-visual-studio-2008-beta-2.aspx" target="_blank"&gt;Using CopySourceAsHtml with Visual Studio 2008 (beta 2 and yes, also RTM)&lt;/a&gt;  &lt;p&gt;&lt;a href="http://www.cnblogs.com/ShawnJiNet/archive/2008/03/21/1114432.html" target="_blank"&gt;CopySourceAsHtml VS2008&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7533961302301344454?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7533961302301344454/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7533961302301344454' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7533961302301344454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7533961302301344454'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/using-copysourceashtml-in-vs-2008.html' title='Using CopySourceAsHtml in VS 2008'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6686696357569379334</id><published>2008-08-04T17:05:00.001+08:00</published><updated>2008-08-04T17:05:58.850+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Hibernate for .NET - NHibernate Setup</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Hibernate offers O/R mappings between Database and Java persistence classes. Many Java programmers get used to Hibernate would like to use the same technology (and syntax!) on their .NET projects too~ The answer to this is called NHibernate.    &lt;br /&gt;Below I will share my experience on how to set up NHibernate with C#, it should be similar for other .NET languages.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.codegod.de/WebAppCodeGod/NHibernate-Tutorial-1---and-ASP-NET-AID25.aspx" target="_blank"&gt;NHibernate Tutorial (1) - and ASP.NET&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://acoderslife.wordpress.com/tutorials/nhibernate-web-developer-express-and-sql-server-express-2005/installation-and-running-nhibernate/" target="_blank"&gt;Installation And Running NHibernate&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.hibernatingrhinos.com/nhibernate/archive/2008/04/01/your-first-nhibernate-based-application.aspx" target="_blank"&gt;Your first NHibernate based application&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Environment&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Database: SQL Server 2005 &lt;/li&gt;    &lt;li&gt;NHibernate: 1.2.1 GA &lt;/li&gt;    &lt;li&gt;.NET Language: C# &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Setup SQL Server Database&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;It is assumed that your Database is setup properly, so I will skip this step. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Download and install NHibernate&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download NHibernate at &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=73818&amp;amp;package_id=73969" target="_blank"&gt;Here&lt;/a&gt; (I downloaded 1.2.1 GA-bin.zip) &lt;/li&gt;    &lt;li&gt;Extract the zip file and navigate to folder &amp;quot;net-2.0&amp;quot; &lt;/li&gt;    &lt;li&gt;We are going to use &amp;quot;NHibernate.dll&amp;quot; as reference in our project &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Create Web Site and do NHibernate Configuration in VS&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add a Web Site to your Solution, and a C# class library project with name &amp;quot;Solution.Domain&amp;quot;. &lt;/li&gt;    &lt;li&gt;There are two ways to do configuration for NHibernate, one is by &lt;font color="#ff0000"&gt;&amp;quot;System.Configuration.NameValueSectionHandler&amp;quot;&lt;/font&gt;, the other is by &lt;font color="#ff0000"&gt;&amp;quot;NHibernate.Cfg.ConfigurationSectionHandler&amp;quot;&lt;/font&gt;. I choose to use method 2 because it is supported in NHibernate 2.0 &lt;/li&gt;    &lt;li&gt;Open &lt;font color="#ff0000"&gt;&amp;quot;web.config&amp;quot;&lt;/font&gt; file and add &lt;font color="#ff0000"&gt;&amp;quot;hibernate-configuration&amp;quot;&lt;/font&gt; section with the following code snippet:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;configSections&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;section&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;hibernate-configuration&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;NHibernate.Cfg.ConfigurationSectionHandler, NHibernate&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configSections&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&lt;/p&gt;       &lt;span style="color: blue"&gt;&amp;#160; &amp;lt;!--&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;        &lt;p&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; NHibernate configuration&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;hibernate-configuration&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;urn:nhibernate-configuration-2.2&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;session-factory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;dialect&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Dialect.MsSql2005Dialect&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;connection.provider&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Connection.DriverConnectionProvider&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;hibernate.connection.driver_class&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;NHibernate.Driver.SqlClientDriver&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;connection.connection_string&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Server=(local);Initial Catalog=Test;Integrated Security=SSPI;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;mapping&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;assembly&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Solution.Domain&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;session-factory&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;hibernate-configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;configuration&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;Now we have the &lt;font color="#ff0000"&gt;&amp;quot;web.config&amp;quot;&lt;/font&gt; ready, we still have to add two helper classes for handling NHibernate sessions. I extracted &lt;a href="http://www.codegod.de/WebAppCodeGod/zips%5Czip_25.zip" target="_blank"&gt;This&lt;/a&gt; zip file attached to &lt;a href="http://www.codegod.de/WebAppCodeGod/NHibernate-Tutorial-1---and-ASP-NET-AID25.aspx" target="_blank"&gt;Reference 1&lt;/a&gt; and used the &lt;font color="#ff0000"&gt;&amp;quot;NHibernateHttpModule.cs&amp;quot;&lt;/font&gt; and &lt;font color="#ff0000"&gt;&amp;quot;SessionHelper.cs&amp;quot;&lt;/font&gt; files.       &lt;br /&gt;However, I modified &amp;quot;SessionFactory&amp;quot; method in &amp;quot;SessionHelper.cs&amp;quot; as my configuration method is different from that of &lt;a href="http://www.codegod.de/WebAppCodeGod/NHibernate-Tutorial-1---and-ASP-NET-AID25.aspx" target="_blank"&gt;Reference 1&lt;/a&gt;.       &lt;br /&gt;      &lt;br /&gt;My modified &amp;quot;SessionFactory&amp;quot; method:       &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ISessionFactory&lt;/span&gt; SessionFactory&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (_sessionFactory == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;Configuration&lt;/span&gt; config = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Configuration&lt;/span&gt;();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; config.Configure();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _sessionFactory = config.BuildSessionFactory();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (_sessionFactory == &lt;span style="color: blue"&gt;null&lt;/span&gt;)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;InvalidOperationException&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;Could not build SessionFactory&amp;quot;&lt;/span&gt;);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; _sessionFactory;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Defines Mapping and the persistence class&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The NHibernate mapping file is just like that of Hibernate: A XML file with extension &amp;quot;.hbm.xml&amp;quot;. Here is my mapping file:      &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; ?&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;hibernate-mapping&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;urn:nhibernate-mapping-2.2&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;namespace&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;font color="#0000ff"&gt;Solution.Domain&lt;/font&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;assembly&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;font color="#0000ff"&gt;Solution.Domain&lt;/font&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;class&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;User&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;table&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;app_user&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Username&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;column&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;username&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;generator&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;#160; &lt;/span&gt;&lt;span style="color: red"&gt;class&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;assigned&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;id&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Name&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;column&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;name&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Password&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;column&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;password&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;class&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;#160; &lt;/span&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;hibernate-mapping&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;This XML mapping file must be included in the assembly with the name &amp;quot;Solution.Domain&amp;quot;. To do this, right-click on the XML mapping file and select &lt;font color="#ff0000"&gt;&amp;quot;properties&amp;quot;&lt;/font&gt;, then choose &lt;font color="#ff0000"&gt;&amp;quot;Embedded Resource&amp;quot;&lt;/font&gt; for &lt;font color="#ff0000"&gt;&amp;quot;Build Action&amp;quot;&lt;/font&gt;. &lt;/li&gt;    &lt;li&gt;Next, let's move on to the persistence class.      &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;namespace&lt;/span&gt; Solution.Domain&lt;/p&gt;        &lt;p style="margin: 0px"&gt;{&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;User&lt;/span&gt;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; User()&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;virtual&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Username&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;virtual&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Name&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;virtual&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; Password&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;set&lt;/span&gt;;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;        &lt;p style="margin: 0px"&gt;}&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Show the result in ASP.NET page&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add a aspx page to the Web Site and then add the following code snippet to the aspx page:      &lt;br /&gt;      &lt;div class="vs"&gt;       &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: #2b91af"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ISession session = NHibernateHttpModule.CurrentSession;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IQuery query = session.CreateQuery(&lt;span style="color: #a31515"&gt;&amp;quot;FROM User&amp;quot;&lt;/span&gt;);&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;IList&lt;/span&gt; result = query.List();&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GridView1.DataSource = result;&lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; GridView1.DataBind(); &lt;/p&gt;        &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;     &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;If everything works fine (and you have some Data in your SQL Server Table!), then you should see the data is retrieved and displayed on the aspx page~ &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6686696357569379334?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6686696357569379334/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6686696357569379334' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6686696357569379334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6686696357569379334'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/hibernate-for-net-nhibernate-setup.html' title='Hibernate for .NET - NHibernate Setup'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2709618587300872219</id><published>2008-08-01T19:07:00.001+08:00</published><updated>2008-08-01T19:07:41.887+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS 2008'/><title type='text'>Changing the default browser used in VS 2005/2008</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I always use Firefox except browsing SharePoint sites (or sites with Active-X). However when I was debugging my projects with VS 2005/2008, I don't want it to use Firefox to open aspx pages. With a little bit of searching, I found below page showing how to set default aspx browser in VS (it can be either FF or IE or other Browsers)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2005/11/18/430943.aspx"&gt;Changing the default browser used in VS 2005 and Visual Web Developer - ScottGu's Blog&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps (Copied from reference link)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Right click on a .aspx page in your solution explorer&lt;/li&gt;    &lt;li&gt;Select the &amp;quot;browse with&amp;quot; context menu option&lt;/li&gt;    &lt;li&gt;In the dialog you can select or add a browser.&amp;#160; If you want Firefox in the list, click &amp;quot;add&amp;quot; and point to the firefox.exe filename&lt;/li&gt;    &lt;li&gt;Click the &amp;quot;Set as Default&amp;quot; button to make this the default browser when you run any page on the site&lt;strong&gt;&lt;font color="#0080ff"&gt;.&lt;/font&gt;&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2709618587300872219?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2709618587300872219/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2709618587300872219' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2709618587300872219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2709618587300872219'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/08/changing-default-browser-used-in-vs.html' title='Changing the default browser used in VS 2005/2008'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4249899480138402221</id><published>2008-07-30T18:20:00.001+08:00</published><updated>2008-07-30T18:20:39.813+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS 2008'/><title type='text'>How to: Set Team Foundation Server Administrator Permissions</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Below &lt;a href="http://msdn.microsoft.com/en-us/library/default.aspx" target="_blank"&gt;MSDN&lt;/a&gt; post shows the steps to grant sufficient privileges to a new Team Foundation Server Administrator.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb552341.aspx"&gt;How to: Set Team Foundation Server Administrator Permissions&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4249899480138402221?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4249899480138402221/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4249899480138402221' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4249899480138402221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4249899480138402221'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/how-to-set-team-foundation-server.html' title='How to: Set Team Foundation Server Administrator Permissions'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6037877178436829677</id><published>2008-07-30T18:09:00.001+08:00</published><updated>2008-07-30T18:11:00.056+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTS 2008'/><title type='text'>Hands-Free TFS 2008 Install</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Installing VSTS Team Foundation Server (TFS) 2008 is way more than just run &amp;quot;setup.exe&amp;quot; and keep clicking &amp;quot;Next&amp;quot;. Actually if you have all the prerequisites ready then the installation is simple, but usually you have to prepare all the prerequisites by yourselves.&lt;/p&gt;  &lt;p&gt;I found two post by Grant Holliday and William Bartholomew talking about how to automate Installation process of TFS 2005 &amp;amp; 2008. I have never tried it (cos by the time I see these post I was already finishing the installation...), but I think it is good for understanding the process of TFS installation, and it may come in handy someday!&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Notes:&lt;/u&gt; The guides is for Windows Server 2003, and when I installed TFS 2008 on Windows Server 2008, WSS 3.0 installation cannot be included as part of TFS installation. I must install and configure WSS 3.0 first before I start TFS installation (You may use existing SharePoint sites on other computer for TFS)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://ozgrant.com/2007/07/17/hands-free-tfs-installation-introduction/" target="_blank"&gt;Hands-Free TFS Install (VSTS 2005)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.teamsystemnotes.com/index.php/2008/04/21/hands-free-tfs-2008-install/" target="_blank"&gt;Hands-Free TFS 2008 Install&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6037877178436829677?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6037877178436829677/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6037877178436829677' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6037877178436829677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6037877178436829677'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/hands-free-tfs-2008-install.html' title='Hands-Free TFS 2008 Install'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6221258700393613315</id><published>2008-07-30T11:48:00.001+08:00</published><updated>2008-07-30T11:48:05.089+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Renaming a SharePoint 2007 / WSS 3.0 Server</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sometimes you have to rename a Server, it can easily be done in &amp;quot;System properties&amp;quot;. However, if the Server host a SharePoint Services/Server, then renaming will cause SharePoint sites to stop functioning. Eventually I found a Blog showing the steps to rename a SharePoint 2007 / WSS 3.0 Server, and I have repost the steps below.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://sharepointers.blogspot.com/2008/06/renaming-sharepoint-2007-wss-30-server.html" target="_blank"&gt;Renaming a SharePoint 2007 / WSS 3.0 Server&lt;/a&gt; (I copy the steps from here)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc261986(TechNet.10).aspx" target="_blank"&gt;Rename a stand-alone server (Office SharePoint Server)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Change each alternate access mapping for your MOSS/WSS deployment in Central Administration&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open Central Administration &lt;/li&gt;    &lt;li&gt;Click on the &amp;quot;Operation&amp;quot; Tab &lt;/li&gt;    &lt;li&gt;Click on the &amp;quot;Alternate access mappings&amp;quot; link under the &amp;quot;Global Configuration&amp;quot; heading &lt;/li&gt;    &lt;li&gt;Modify each mapping item to reflect your newly chosen server name, making sure to keep port numbers the same (this also include the mapping for Central Administration, don&amp;#8217;t worry it's cool) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Use stsadm.exe to invoke the &amp;quot;renameserver&amp;quot; command option&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open a command prompt window and navigate to the folder where stsadm.exe sits. Normally &amp;quot;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN&amp;quot;. &lt;/li&gt;    &lt;li&gt;Use the &lt;font color="#ff0000"&gt;&amp;quot;renameserver&amp;quot;&lt;/font&gt; command as follows, replacing and with the new and old names of your server:       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;stsadm -o renameserver -newservername &amp;lt;newname&amp;gt; -oldservername &amp;lt;oldname&amp;gt;&lt;/em&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Rename your Server via Change Name Operation in Windows Server 2003&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Now the last step is to simply right click on My Computer &lt;/li&gt;    &lt;li&gt;Open &amp;#8220;Properties&amp;#8221; &lt;/li&gt;    &lt;li&gt;Click on &amp;#8220;Computer Name&amp;#8221; tab &lt;/li&gt;    &lt;li&gt;Click &amp;#8220;Change&amp;#8221; button &lt;/li&gt;    &lt;li&gt;Input your new server name and reboot the server &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Use stsadm.exe to invoke the &amp;quot;updatefarmcredentials&amp;quot; command option&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open a command prompt window and navigate to the folder where stsadm.exe sits. Normally &amp;#8220;C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN&amp;#8221;. &lt;/li&gt;    &lt;li&gt;Type in the following command and press [enter]:      &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;stsadm -o updatefarmcredentials -identitytype NetworkService &lt;/em&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6221258700393613315?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6221258700393613315/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6221258700393613315' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6221258700393613315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6221258700393613315'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/renaming-sharepoint-2007-wss-30-server.html' title='Renaming a SharePoint 2007 / WSS 3.0 Server'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2481666984017810801</id><published>2008-07-29T17:16:00.001+08:00</published><updated>2008-07-29T17:16:31.373+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Uninstall WSS 3.0 MICROSOFT##SSEE Database</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I come across a situation that I was installing WSS 3.0 but the &amp;quot;SharePoint Products and Technologies Configuration Wizard&amp;quot; failed at half-way and it keep crashing even after I uninstall and reinstall WSS. The result is the broken &amp;quot;MICROSOFT##SSEE&amp;quot; Database which is the configuration database created by WSS. After I followed instructions of the below link, I successfully uninstalled the database and the WSS 3.0 configuration wizard run again!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://jianwang.blogspot.com/2007/04/uninstall-wss-30-microsoftssee-database.html" target="_blank"&gt;Uninstall WSS 3.0 MICROSOFT##SSEE Database&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2481666984017810801?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2481666984017810801/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2481666984017810801' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2481666984017810801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2481666984017810801'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/uninstall-wss-30-microsoftssee-database.html' title='Uninstall WSS 3.0 MICROSOFT##SSEE Database'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4768737829251311330</id><published>2008-07-28T18:11:00.001+08:00</published><updated>2008-07-28T18:11:56.917+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Server 2008'/><title type='text'>Problems installing SQL Server 2005 with IIS 7</title><content type='html'>&lt;p&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;When I install SQL Server 2005 Enterprise on Windows Server 2008 with IIS 7, I was warned that &amp;quot;Microsoft Internet Information Services (IIS) is either not installed or is disabled&amp;quot;. Actually this misleading warning means some features of IIS 7 are not installed, and SQL Server 2005 installation needs those features.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.iis.net/bills/archive/2007/09/04/problems-installing-sql-server-2005-on-vista-and-iis7.aspx" target="_blank"&gt;Problems installing SQL Server 2005 on Vista and IIS7&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4768737829251311330?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4768737829251311330/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4768737829251311330' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4768737829251311330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4768737829251311330'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/problems-installing-sql-server-2005.html' title='Problems installing SQL Server 2005 with IIS 7'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7078379478371541794</id><published>2008-07-22T19:09:00.001+08:00</published><updated>2008-07-22T19:09:50.203+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>Installing PHP with FastCGI in Windows Server 2008 (IIS 7)</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;FastCGI can greatly improve the performance of CGI applications. I will share my experience of installing and configuring PHP 5.2.6 with FastCGI in Windows Server 2008 environment (the main difference is between IIS 7 and IIS 6).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.witsuite.com/support/knowledge-base/manual-installation/install-php.php#testing-your-configuration" target="_blank"&gt;Install PHP&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.witsuite.com/support/knowledge-base/manual-installation/install-iis-fastcgi.php" target="_blank"&gt;Install IIS FastCGI&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Install &amp;amp; Configure PHP&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download PHP 5.2.6 form &lt;a href="http://www.php.net/downloads.php"&gt;http://www.php.net/downloads.php&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;Extract the ZIP file to C:\php &lt;/li&gt;    &lt;li&gt;Copy &lt;font color="#ff0000"&gt;&amp;quot;php.ini-recommended&amp;quot;&lt;/font&gt; to the Windows directory (C:\Windows) and rename it to &lt;font color="#ff0000"&gt;&amp;quot;php.ini&amp;quot;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Open the &amp;quot;php.ini&amp;quot; and change the following settings&amp;quot;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;extension_dir = &amp;quot;C:\php\extensions&amp;quot;&lt;/strong&gt; &lt;/li&gt;        &lt;li&gt;uncomment and set: &lt;strong&gt;cgi.force_redirect = 0&lt;/strong&gt;&lt;/li&gt;        &lt;li&gt;&lt;strong&gt;short_open_tag = On&lt;/strong&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Install &amp;amp; Configure IIS 7&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Add &amp;quot;Web Service&amp;quot; role at Windows Server 2008 &amp;quot;Server Manager&amp;quot; to install IIS 7.0&lt;/li&gt;    &lt;li&gt;Go to IIS Manager, select &amp;quot;Handler Mappings&amp;quot;&lt;/li&gt;    &lt;li&gt;Select &amp;quot;Add Module Mapping&amp;quot;&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Input *.php in &amp;quot;Request Path&amp;quot;&lt;/li&gt;      &lt;li&gt;Select &amp;quot;FastCgiModule&amp;quot; in &amp;quot;Module&amp;quot;&lt;/li&gt;      &lt;li&gt;Input &amp;quot;C:\php\php.exe&amp;quot; in Executable&lt;/li&gt;      &lt;li&gt;Input Name&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Press &amp;quot;OK&amp;quot;&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7078379478371541794?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7078379478371541794/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7078379478371541794' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7078379478371541794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7078379478371541794'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/installing-php-with-fastcgi-in-windows.html' title='Installing PHP with FastCGI in Windows Server 2008 (IIS 7)'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5861332693809278092</id><published>2008-07-22T11:07:00.001+08:00</published><updated>2008-07-22T11:15:08.952+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java - Struts'/><title type='text'>Uploading Multiple Files using Struts FormFile</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It is convenient to group same type of Form Inputs with an ArrayList (or other types of List). For checkbox this is easily done in Struts Framework, but how about &amp;quot;File&amp;quot; or other types of input?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.sun.com/thread.jspa?threadID=674773&amp;amp;messageID=3945712" target="_blank"&gt;Uploading Multiple Files using Struts FormFile&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I copy the code from the reference link above and do some change on it in order to get the uploaded files in the order shown in the User's Form.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;In JSP File&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;form&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;fileupload&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;enctype&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;multipart/form-data&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;method&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;post&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;action&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;/photos/fileuploadresult&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Photo 1&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;input&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;file&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;uploads[0]&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Photo 2&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;input&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;file&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;uploads[1]&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;input&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;='submit'&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;submit&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;value&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;Submit&amp;quot;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;td&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;tr&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;form&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;In struts-config.xml&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;action&lt;/span&gt; &lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;/photos/fileuploadresult&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;com.uploads.actions.FileUploadAction&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;PhotoUpload&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;scope&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;request&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;forward&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;success&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;path&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;/photos/fileuploadresult.jsp&amp;quot;&lt;/span&gt; &lt;span style="color: blue"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;action&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;form-bean&lt;/span&gt; &lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;PhotoUpload&amp;quot;&lt;/span&gt; &lt;span style="color: red"&gt;type&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;com.uploads.forms.FileUploadForm&amp;quot;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;form-bean&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;In FileUploadForm.java&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="java" align="left"&gt;   &lt;table cellspacing="0" cellpadding="3" width="537" border="0"&gt;&lt;tbody&gt;       &lt;tr&gt;&lt;!-- start source code --&gt;         &lt;td valign="top" nowrap="nowrap" align="left" width="535"&gt;&lt;code&gt;&lt;font color="#ffffff"&gt;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public class &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;FileUploadForm &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;extends &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ActionForm &lt;/font&gt;&lt;font color="#000000"&gt;{                &lt;br /&gt;&lt;/font&gt;              &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;private &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;List formFiles = &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;new &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;ArrayList&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;;                &lt;br /&gt;&lt;/font&gt;              &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;List getUploads&lt;/font&gt;&lt;font color="#000000"&gt;() {&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;return this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.formFiles;&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}                &lt;br /&gt;&lt;/font&gt;              &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;public &lt;/b&gt;&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;void &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;setUploads&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;iIndex, FormFile formFile&lt;/font&gt;&lt;font color="#000000"&gt;) {&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;( &lt;/font&gt;&lt;font color="#000000"&gt;!formFile.getFileName&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;.equals&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#2a00ff"&gt;&amp;quot;&amp;quot;&lt;/font&gt;&lt;font color="#000000"&gt;) ) {&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;if &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;( &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.formFiles.size&lt;/font&gt;&lt;font color="#000000"&gt;() &lt;/font&gt;&lt;font color="#000000"&gt;&amp;lt;= iIndex &lt;/font&gt;&lt;font color="#000000"&gt;) {&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#3f7f5f"&gt;// Fill the list to the specified size&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;for &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;( &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;int &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;i=&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.formFiles.size&lt;/font&gt;&lt;font color="#000000"&gt;()&lt;/font&gt;&lt;font color="#000000"&gt;; i &amp;lt; iIndex; i++ &lt;/font&gt;&lt;font color="#000000"&gt;){&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.formFiles.add&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;null&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.formFiles.add&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;formFile&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;} &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;else &lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;{&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#7f0055"&gt;&lt;b&gt;this&lt;/b&gt;&lt;/font&gt;&lt;font color="#000000"&gt;.formFiles.set&lt;/font&gt;&lt;font color="#000000"&gt;(&lt;/font&gt;&lt;font color="#000000"&gt;iIndex, formFile&lt;/font&gt;&lt;font color="#000000"&gt;)&lt;/font&gt;&lt;font color="#000000"&gt;;&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;               &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}                &lt;br /&gt;&lt;/font&gt;              &lt;br /&gt;&lt;font color="#ffffff"&gt;&amp;#160; &lt;/font&gt;&lt;font color="#000000"&gt;}&lt;/font&gt;&lt;/code&gt; &lt;/td&gt; &lt;!-- end source code --&gt;&lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5861332693809278092?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5861332693809278092/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5861332693809278092' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5861332693809278092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5861332693809278092'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/uploading-multiple-files-using-struts.html' title='Uploading Multiple Files using Struts FormFile'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-9153343996343647590</id><published>2008-07-15T14:31:00.001+08:00</published><updated>2008-07-15T14:31:22.543+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Misc. IT stuff'/><title type='text'>Lock-down Internet Explorer with password</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;You can prevent others from using IE to surf the Internet by using its built-in &amp;quot;Content Advisor&amp;quot;. A Supervisor password can be set to control the usage of IE.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://in.answers.yahoo.com/question/index?qid=20080531100240AAWTxuU" target="_blank"&gt;Yahoo! Answers: Block other users from accessing the Internet Explorer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://support.microsoft.com/?scid=kb%3Ben-us%3B310401&amp;amp;x=2&amp;amp;y=15" target="_blank"&gt;HOW TO: Use the Internet Explorer 6 Content Advisor to Control Access to Web Sites in Internet Explorer&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps (For IE 7)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open up Internet Explorer&lt;/li&gt;    &lt;li&gt;Click Tools&lt;/li&gt;    &lt;li&gt;Click Internet Options&lt;/li&gt;    &lt;li&gt;Click on the tab Content&lt;/li&gt;    &lt;li&gt;Underneath 'Content Advisor', Click Enable&lt;/li&gt;    &lt;li&gt;Then click on the tab General&lt;/li&gt;    &lt;li&gt;Under 'Supervisor Password click Create&lt;/li&gt;    &lt;li&gt;Make you password then click Ok.&lt;/li&gt;    &lt;li&gt;Then Apply and finally Ok&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-9153343996343647590?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/9153343996343647590/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=9153343996343647590' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/9153343996343647590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/9153343996343647590'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/07/lock-down-internet-explorer-with.html' title='Lock-down Internet Explorer with password'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7681392312271340331</id><published>2008-06-26T10:49:00.001+08:00</published><updated>2008-06-26T10:49:59.380+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><title type='text'>My struggle with Browser enabled InfoPath Form connection to 'UserProfileService' Web Service</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I faced a silly error when trying to use data connection in a Browser-enabled InfoPath Form to connect to MOSS built-in &lt;em&gt;'UserProfileService'&lt;/em&gt; web service in order to retrieve the display name (Preferred Name) of the logged in user. It works great without any error when I preview the form in InfoPath. However, I keep seeing the &lt;strong&gt;&amp;quot;ID 5566&amp;quot;&lt;/strong&gt; error after I published the form to a document library and open it in browser. On the other hand, the published form works to show the current logged in user of the computer (not the MOSS portal) when opened in a client application (i.e. InfoPath).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Symptom&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Fail with &lt;strong&gt;&amp;quot;ID 5566&amp;quot;&lt;/strong&gt; error when the form is opened in web browser. &lt;/li&gt;    &lt;li&gt;Work without error when opened in preview mode or in client application, shows the logged in user of the computer. &lt;/li&gt;    &lt;li&gt;Fail to work with all methods in &lt;em&gt;'UserProfileService'&lt;/em&gt; web service. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Cause&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;After many googling and trial &amp;amp; error, I still can't find the cause. Or I actually overlooked one suggestion in a post. That is the &lt;font color="#ff0000"&gt;&amp;quot;Allow Anonymous login&amp;quot;&lt;/font&gt; option. I thought that this is the option in &lt;em&gt;&amp;quot;Central Administration&amp;quot;&lt;/em&gt; -&amp;gt; &lt;em&gt;&amp;quot;Application Management&amp;quot;&lt;/em&gt; -&amp;gt; &lt;em&gt;&amp;quot;Authentication Providers&amp;quot;&lt;/em&gt; -&amp;gt; &lt;em&gt;&amp;quot;Edit Authentication&amp;quot;&lt;/em&gt;. But actually the main problem is at IIS settings of the web applications' authentication.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.microsoft.co.il/blogs/itaysk/archive/2007/04/05/InfoPath-_2D00_-Get-the-current-user-without-writing-code.aspx" target="_blank"&gt;InfoPath - Get the current user without writing code&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps to disable &amp;quot;anonymous login&amp;quot; in &amp;quot;IIS Manager&amp;quot;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In Windows Server 2003 R2, click &lt;font color="#ff0000"&gt;&amp;quot;Start&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Administrative Tools&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Internet Information Services (IIS) Manger&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;In &lt;font color="#ff0000"&gt;&amp;quot;IIS Manager&amp;quot;&lt;/font&gt;, expand the name of your computer on the left pane, expand &lt;font color="#ff0000"&gt;&amp;quot;Web Sites&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Right click on the web application you want to edit (e.g. mine is &lt;font color="#ff0000"&gt;&amp;quot;SharePoint - 80&amp;quot;&lt;/font&gt;, select &lt;font color="#ff0000"&gt;&amp;quot;Properties&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;In &lt;font color="#ff0000"&gt;&amp;quot;Properties&amp;quot;&lt;/font&gt;, select &lt;font color="#ff0000"&gt;&amp;quot;Directory Security&amp;quot;&lt;/font&gt; tab. Press &lt;font color="#ff0000"&gt;&amp;quot;Edit&amp;quot;&lt;/font&gt; in the &lt;font color="#ff0000"&gt;&amp;quot;Authentication and access control&amp;quot;&lt;/font&gt; category&lt;/li&gt;    &lt;li&gt;Uncheck &lt;font color="#ff0000"&gt;&amp;quot;Enable anonymous access&amp;quot;&lt;/font&gt; in &lt;font color="#ff0000"&gt;&amp;quot;Authentication Methods&amp;quot;&lt;/font&gt;, click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt; to go back to IIS Manager&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7681392312271340331?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7681392312271340331/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7681392312271340331' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7681392312271340331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7681392312271340331'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/my-struggle-with-browser-enabled.html' title='My struggle with Browser enabled InfoPath Form connection to &amp;#39;UserProfileService&amp;#39; Web Service'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5898431005919197139</id><published>2008-06-19T15:15:00.001+08:00</published><updated>2008-06-19T15:22:56.513+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Deploy old SQL Reporting Services Reports to SharePoint Site</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In my &lt;a href="http://acarieslee.blogspot.com/2008/06/guides-on-setting-up-sharepoint.html"&gt;previous post&lt;/a&gt;, I discussed about how to setup SharePoint Integrated SQL Server Reporting Services (RS). Now that I have the Integrated RS ready, I can deploy the reports to the SharePoint site. But wait, how can I deploy a Pre-SP2 RS report to SharePoint site? Below shows the steps I used.&lt;/p&gt;  &lt;p&gt;My RS reports consists of two files: a Report Definition file (&lt;em&gt;.rdl&lt;/em&gt;) and a Data Source file (&lt;em&gt;.rds&lt;/em&gt;). To deploy a Pre-SP2 RS report to a SharePoint site, I have to upload the Report Definition file, and create a new SP2 Data Source file (with extension changed to : &lt;em&gt;.rsds&lt;/em&gt;).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb326288.aspx" target="_blank"&gt;Deploying Reports, Models, and Shared Data Sources to a SharePoint Site&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb283152.aspx" target="_blank"&gt;How to: Create and Manage Shared Data Sources (SharePoint Integrated Mode)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb326289.aspx" target="_blank"&gt;How to: Add Report Server Content Types to a Library (SharePoint Integrated Mode)&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Upload Report Definition file&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Create a New Document Library (or use an existing one) in SharePoint site to store the Report Definition file and the Data Source file. &lt;/li&gt;      &lt;li&gt;Upload the Report Definition file (&lt;em&gt;.rdl&lt;/em&gt;) of your report to the Document Library created in Step 1. &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Add &amp;quot;Report Data Source&amp;quot; Content Type to the Document Library&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Before we can &amp;quot;New&amp;quot; a Data Source in SharePoint Document Library, we must first add the &amp;quot;Report Data Source&amp;quot; Content Type. &lt;/li&gt;      &lt;li&gt;Navigate to the Document Library, select &lt;font color="#ff0000"&gt;&amp;quot;Settings&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Document Library Settings&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;Select &lt;font color="#ff0000"&gt;&amp;quot;Advanced Settings&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;Select &lt;font color="#ff0000"&gt;&amp;quot;Yes&amp;quot;&lt;/font&gt; for &lt;font color="#ff0000"&gt;&amp;quot;Allow management of content types&amp;quot;&lt;/font&gt;, click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;At &lt;font color="#ff0000"&gt;&amp;quot;Document Library Settings&amp;quot;&lt;/font&gt;, select &lt;font color="#ff0000"&gt;&amp;quot;Add from existing site content types&amp;quot;&lt;/font&gt; under &lt;font color="#ff0000"&gt;&amp;quot;Content Types&amp;quot;&lt;/font&gt; Category &lt;/li&gt;      &lt;li&gt;Make sure that &lt;font color="#ff0000"&gt;&amp;quot;All Groups&amp;quot;&lt;/font&gt; is selected for &lt;font color="#ff0000"&gt;&amp;quot;Select site content types from:&amp;quot;&lt;/font&gt;, then select &lt;font color="#ff0000"&gt;&amp;quot;Report Data Source&amp;quot;&lt;/font&gt; Content Type and click &lt;font color="#ff0000"&gt;&amp;quot;Add&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Create a Data Source file in Document Library&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Navigate to the Document Library, select &lt;font color="#ff0000"&gt;&amp;quot;New&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Report Data Source&amp;quot;&lt;/font&gt;&lt;/li&gt;      &lt;li&gt;Fill in the properties of the Data Source, I opened my old data source in visual studio and copy all the properties to the new one.&lt;/li&gt;      &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt;&lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Bind the Report Definition file to the new Data Source&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Navigate to the Document Library, click to display the drop-down list of the Report Definition (&lt;em&gt;.rdl&lt;/em&gt;) File&lt;/li&gt;      &lt;li&gt;Select &lt;font color="#ff0000"&gt;&amp;quot;Manage Data Sources&amp;quot;&lt;/font&gt; in the drop-down list&lt;/li&gt;      &lt;li&gt;Click on the name of the Data Source to edit it.&lt;/li&gt;      &lt;li&gt;Specify the URL of the newly created Data Source (&lt;em&gt;.rsds&lt;/em&gt;) file in &lt;font color="#ff0000"&gt;&amp;quot;Data Source Link&amp;quot;&lt;/font&gt; and click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt;&lt;/li&gt;      &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;Close&amp;quot;&lt;/font&gt; to go back to Document Library, click on the Report Definition file to see the result. If a report is displayed successfully, then the deployment is done!&lt;/li&gt;   &lt;/ol&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5898431005919197139?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5898431005919197139/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5898431005919197139' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5898431005919197139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5898431005919197139'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/deploy-old-sql-reporting-services.html' title='Deploy old SQL Reporting Services Reports to SharePoint Site'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5836303499747818795</id><published>2008-06-18T17:05:00.001+08:00</published><updated>2008-06-26T17:52:36.321+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Guides on setting up SharePoint integrated SQL Server Reporting Services</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is going to be a long post, in this post I am trying to describe how I setup Integrated SQL Server Reporting Services on a Standalone SharePoint Server. According to my understanding, these steps can be applied to SharePoint Services too.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Software Configuration&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;SQL Server 2005 &lt;/li&gt;    &lt;li&gt;SharePoint Server 2007 &lt;/li&gt;    &lt;li&gt;Microsoft .NET Framework 3.0 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en" target="_blank"&gt;Download&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Guides to install and configure&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb677368.aspx" target="_blank"&gt;How to: Configure SharePoint Integration on a Stand-alone Server&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb326356.aspx" target="_blank"&gt;Configuring Reporting Services for SharePoint 3.0 Integration&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb283151.aspx" target="_blank"&gt;How to: Create a Report Server Database for SharePoint Integrated Mode (Reporting Services Configuration)&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb326213.aspx" target="_blank"&gt;How to: Configure the Report Server Integration Feature in SharePoint Central Administration&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Information on MOSS integrated SQL Server Reporting Service&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/archive/2007/02/19/microsoft-sql-server-2005-sp2-reporting-services-integration-with-wss-3-0-and-moss-2007.aspx" target="_blank"&gt;Microsoft SQL Server 2005 SP2 Reporting Services integration with WSS 3.0 and MOSS 2007&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/sharepoint/attachment/4194088.ashx" target="_blank"&gt;Installation and Configuration Guide for SQL Server Reporting Services - SharePoint Integration Mode&lt;/a&gt; (Word format) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Prepare the software package&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;SQL Server 2005 Service Pack 2 &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=d07219b2-1e23-49c8-8f0c-63fa18f26d3a&amp;amp;DisplayLang=en" target="_blank"&gt;Download&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;SQL Server 2005 Reporting Services Add-in for Microsoft SharePoint Technologies &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=1e53f882-0c16-4847-b331-132274ae8c84" target="_blank"&gt;Download&lt;/a&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Install software package&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Install .NET Framework 3.0 (My server originally has this installed) &lt;/li&gt;      &lt;li&gt;Install SQL Server 2005 SP 2 &lt;/li&gt;      &lt;li&gt;Install SQL Server 2005 RS Add-in for SharePoint &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Create a Report Server DB for SharePoint Integrated Mode&lt;/font&gt;&lt;/strong&gt; (Check &lt;a href="http://msdn.microsoft.com/en-us/library/bb283151.aspx" target="_blank"&gt;Reference 3&lt;/a&gt; for details)&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Go to &lt;font color="#ff0000"&gt;&amp;quot;Report Services Configuration&amp;quot;&lt;/font&gt; in SQL Server 2005 &lt;font color="#ff0000"&gt;&amp;quot;Configuration Tools&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;Connect to the Instance you want to create the Report Server (Mine is &amp;quot;MSSQLSERVER&amp;quot;) &lt;/li&gt;      &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;Database Setup&amp;quot;&lt;/font&gt; on the left pane, then select the Server you want to connect and click &lt;font color="#ff0000"&gt;&amp;quot;Connect&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;New&amp;quot;&lt;/font&gt; button next to the Database Name. &lt;/li&gt;      &lt;li&gt;In &lt;font color="#ff0000"&gt;&amp;quot;SQL Server Connection&amp;quot;&lt;/font&gt; dialog box, enter the name for the new Database, make sure to select the &lt;font color="#ff0000"&gt;&amp;quot;Create the report server database in SharePoint Integrated mode&amp;quot;&lt;/font&gt; check box. &lt;/li&gt;      &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;On the Database Setup page, specify the Credential you want to connect to the report server, Click &lt;font color="#ff0000"&gt;&amp;quot;Apply&amp;quot;&lt;/font&gt; &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Configure Report Server Integration Feature in SharePoint Central Administration &lt;/font&gt;&lt;/strong&gt;(Check &lt;a href="http://msdn.microsoft.com/en-us/library/bb326213.aspx" target="_blank"&gt;Reference 4&lt;/a&gt; for details)&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;Go to &lt;font color="#ff0000"&gt;&amp;quot;SharePoint 3.0 Central Administration&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;In Central Administration, select &lt;font color="#ff0000"&gt;&amp;quot;Application Management&amp;quot;&lt;/font&gt;, then click &lt;font color="#ff0000"&gt;&amp;quot;Manage integration settings&amp;quot;&lt;/font&gt; under &lt;font color="#ff0000"&gt;&amp;quot;Reporting Services&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;Specify the &lt;font color="#ff0000"&gt;&amp;quot;Report Server URL&amp;quot;&lt;/font&gt; and &lt;font color="#ff0000"&gt;&amp;quot;Authentication Mode&amp;quot;&lt;/font&gt;, normally the Report Server URL will be something like &lt;em&gt;&amp;quot;http://server-name:8080/reportserver&amp;quot;&lt;/em&gt; where port number should follow your configuration but not always &amp;quot;8080&amp;quot;. I use &lt;em&gt;&amp;quot;Trusted Account&amp;quot;&lt;/em&gt; for &lt;font color="#ff0000"&gt;&amp;quot;Authentication Mode&amp;quot;&lt;/font&gt; &lt;/li&gt;      &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt; to go back to &lt;font color="#ff0000"&gt;&amp;quot;Application Management&amp;quot;&lt;/font&gt;, then select &lt;font color="#ff0000"&gt;&amp;quot;Grant database access&amp;quot;&lt;/font&gt;. &lt;/li&gt;      &lt;li&gt;Specify the &lt;font color="#ff0000"&gt;&amp;quot;Server Name&amp;quot;&lt;/font&gt; and &lt;font color="#ff0000"&gt;&amp;quot;Instance&amp;quot;&lt;/font&gt; of the Report Server (In standalone case the server name should be the same as the SharePoint Server). &lt;/li&gt;      &lt;li&gt;In the pop up windows, specify the &lt;font color="#ff0000"&gt;&amp;quot;User Name&amp;quot;&lt;/font&gt; and &lt;font color="#ff0000"&gt;&amp;quot;Password&amp;quot;&lt;/font&gt; to connect to report server. Enter the administrator account here. Then click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt; twice to go back to &lt;font color="#ff0000"&gt;&amp;quot;Application Management&amp;quot;&lt;/font&gt;. &lt;/li&gt;      &lt;li&gt;Select &lt;font color="#ff0000"&gt;&amp;quot;Set server defaults&amp;quot;&lt;/font&gt;, if you enter this page successfully, then it means that SharePoint connect to report server successfully. Actually I didn't change any settings here, and the report service works fine in SharePoint Site. &lt;/li&gt;   &lt;/ol&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5836303499747818795?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5836303499747818795/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5836303499747818795' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5836303499747818795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5836303499747818795'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/guides-on-setting-up-sharepoint.html' title='Guides on setting up SharePoint integrated SQL Server Reporting Services'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5601463627573246550</id><published>2008-06-17T17:44:00.001+08:00</published><updated>2008-06-17T17:44:04.310+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Problems in deploying / debugging SQL Report Server Project: Permissions granted to user 'domain\username' are insufficient (rsAccessDenied)</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I came across an issue that the project created from &amp;quot;Report Server Project Wizard&amp;quot; Template in Visual Studio did not deploy successfully and the &amp;quot;permissions granted to user 'domain\username' are insufficient for .... (rsAccessDenied)&amp;quot; error was shown.    &lt;br /&gt;Finally I was able to get it done by restoring the IIS 'ReportServer' Active Directory. Below shows the steps I follow to do the restore.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.microsoft.com/msdn/showpost.aspx?postid=1158068&amp;amp;siteid=1&amp;amp;sb=0&amp;amp;d=1&amp;amp;at=7&amp;amp;ft=11&amp;amp;tf=0&amp;amp;pageid=1" target="_blank"&gt;&amp;quot;The permissions granted to user '' are insufficient for performing this operation.&amp;quot; when trying to view Report Site.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Click &lt;font color="#ff0000"&gt;&amp;quot;Start&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;All programs&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Microsoft SQL Server 2005&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Configuration Tools&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Reporting Services Configuration&amp;quot;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Enter the &lt;font color="#ff0000"&gt;&amp;quot;Machine Name&amp;quot;&lt;/font&gt; &amp;amp; &lt;font color="#ff0000"&gt;&amp;quot;Instance Name&amp;quot; and click &amp;quot;Connect&amp;quot;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Select &lt;font color="#ff0000"&gt;&amp;quot;Report Server Virtual Directory&amp;quot;&lt;/font&gt; at the left pane and check &lt;font color="#ff0000"&gt;&amp;quot;Apply default settings&amp;quot;&lt;/font&gt;, and click &lt;font color="#ff0000"&gt;&amp;quot;Apply&amp;quot;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;Done!!! &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5601463627573246550?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5601463627573246550/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5601463627573246550' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5601463627573246550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5601463627573246550'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/problems-in-deploying-debugging-sql.html' title='Problems in deploying / debugging SQL Report Server Project: Permissions granted to user &amp;#39;domain\username&amp;#39; are insufficient (rsAccessDenied)'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-250970721268337411</id><published>2008-06-13T16:30:00.001+08:00</published><updated>2008-06-13T16:30:38.556+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Office'/><title type='text'>Set the Start Up display Form in Access 2007</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In my previous blog showing &lt;a href="http://acarieslee.blogspot.com/2008/06/convert-application-to-runtime-mode-in.html"&gt;How to convert Access 2007 App into Runtime Mode&lt;/a&gt;, I discuss how to convert Application to Runtime Mode. However, you need to specify a Start-Up Form so that the Runtime Application have something to show when started.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://articles.techrepublic.com.com/2415-10878_11-88582.html" target="_blank"&gt;Change Access 2007 database options for your application&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Fire up Access 2007 and open your application (NOT in Runtime Mode)&lt;/li&gt;    &lt;li&gt;Click the &amp;quot;Office&amp;quot; button&lt;/li&gt;    &lt;li&gt;Click the &amp;quot;Access Options&amp;quot; button, then choose &amp;quot;Current Database&amp;quot; in left pane&lt;/li&gt;    &lt;li&gt;Click the &amp;quot;Display Form&amp;quot; drop-down list and set your start-up form&lt;/li&gt;    &lt;li&gt;Finish!&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-250970721268337411?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/250970721268337411/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=250970721268337411' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/250970721268337411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/250970721268337411'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/set-start-up-display-form-in-access.html' title='Set the Start Up display Form in Access 2007'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6553051864475078199</id><published>2008-06-13T16:06:00.001+08:00</published><updated>2008-06-13T16:06:52.979+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MS Office'/><title type='text'>Convert application to Runtime Mode in Access 2007</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Access Forms let you create a user-friendly interface to end-user, it can also restrict what your users can view/modify. However user can still modify your table directly if your application is not run in Runtime Mode. Below shows the steps to convert your Access 2007 application to runtime before you put it to production.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.techrepublic.com.com/msoffice/?p=444&amp;amp;tag=rbxccnbtr1" target="_blank"&gt;Convert your Access 2007 application from design to runtime mode by changing its extension&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open the folder that contains your application (with .accdb extension)&lt;/li&gt;    &lt;li&gt;Ensure that extension is shown in filename (this can be set in &lt;font color="#ff0000"&gt;&amp;quot;Folder Options&amp;quot;&lt;/font&gt;),&amp;#160; rename the application to have .accdr extension (e.g. &amp;quot;myApp.accdb&amp;quot; rename to &amp;quot;myApp.accdr&amp;quot;)&lt;/li&gt;    &lt;li&gt;Finished!&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6553051864475078199?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6553051864475078199/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6553051864475078199' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6553051864475078199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6553051864475078199'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/convert-application-to-runtime-mode-in.html' title='Convert application to Runtime Mode in Access 2007'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4542785806831758138</id><published>2008-06-04T14:08:00.003+08:00</published><updated>2008-12-11T15:20:38.098+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Customizing Web Parts Outlook with XSL Editor</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Out-of-the-box web parts in MOSS is very useful in development. However some of their looking might not fit your needs. However, the looking and style of web parts can be customized by editing the XSL(Extensible Stylesheet Language) file.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Navigate to the Page containing the Web part you want to customize. &lt;/li&gt;    &lt;li&gt;Choose &lt;font color="#ff0000"&gt;&amp;quot;Site Actions&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Edit Page&amp;quot;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;At the title of Web part, click &lt;font color="#ff0000"&gt;&amp;quot;edit&amp;quot;&lt;/font&gt; -&amp;gt; &lt;font color="#ff0000"&gt;&amp;quot;Modify Shared Web Part&amp;quot;&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;At the Web part Tool Pane just opened on the right, under the &lt;font color="#ff0000"&gt;&amp;quot;Data View Properties&amp;quot;&lt;/font&gt; category, click the &lt;font color="#ff0000"&gt;&amp;quot;XSL Editor...&amp;quot;&lt;/font&gt; button to open a text editor containing XSL of the Web part. &lt;/li&gt;    &lt;li&gt;As the so called &lt;font color="#ff0000"&gt;&amp;quot;XSL Editor&amp;quot;&lt;/font&gt; is just a very simple text editor (without Search Function), better copy the XSL inside to Visual Studio for editing. To do this, just new a file in VS and select XSLT as the template. &lt;/li&gt;    &lt;li&gt;When you finish editing the XSL in VS, copy it back into the &lt;font color="#ff0000"&gt;&amp;quot;XSL Editor&amp;quot;&lt;/font&gt; and press &lt;font color="#ff0000"&gt;&amp;quot;Save&amp;quot;&lt;/font&gt;, then click &lt;font color="#ff0000"&gt;&amp;quot;Apply&amp;quot;&lt;/font&gt; in the Web part Tool Pane to see the change. &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4542785806831758138?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4542785806831758138/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4542785806831758138' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4542785806831758138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4542785806831758138'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/customizing-web-parts-outlook-with-xsl.html' title='Customizing Web Parts Outlook with XSL Editor'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6540366099216996993</id><published>2008-06-03T11:44:00.001+08:00</published><updated>2008-06-03T11:44:34.534+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><title type='text'>Embed SQL DB connection ID &amp; password into BDC Definition File</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;(From MSDN: &lt;a href="http://msdn.microsoft.com/en-us/library/ms551230.aspx" target="_blank"&gt;BDC Overview&lt;/a&gt;) Business Data Catalog (BDC) is a new business integration feature in Microsoft Office SharePoint Server 2007, it enables Office SharePoint Server 2007 to surface business data from back-end server applications without any coding.&lt;/p&gt;  &lt;p&gt;Business Data Catalog provides built-in support for displaying data from databases and Web services. That is, you can use Business Data Catalog to display data from your SAP, Siebel, or other line-of-business (LOB) application via Web services or databases.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Water-blowing&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;(By me) BDC is a very good tool in connecting SharePoint with other system (DB or Web Services), it is good because the information collected from BDC application can be displayed in some out-of-the-box (but not good looking...) webparts, and be searched just like other information in SharePoint (Yes~ you can search your BDC connected DB in SharePoint!), you can also make site columns based on BDC information and embed it into content type too! One example is to make a SharePoint generated Word Document able to crawl data from DB thru BDC, quite amazing....&lt;/p&gt;  &lt;p&gt;Besides all these exciting features, writing a BDC application is quite a pain in the xxx (Sorry I can't control myself for this). The Microsoft claimed &amp;quot;NO CODE&amp;quot; experience is equivalent to writing a XML file with &lt;font color="#ff0000"&gt;several hundred to thousands of lines.&lt;/font&gt; This infernal XML file is called (Application Definition File).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Connecting to DB in BDC - SSO&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Writing the damn Definition File is one thing, getting your application to connect to remote DB is another mountain to climb. I used to get it work by using Single Sign-On in MOSS, which is VERY difficult to setup, and required the server to be connected to an Active Directory.&lt;/p&gt;  &lt;p&gt;Recently I come across this method to embed connection UserID and Password into the Definition File, so no more SSO nightmare~~ &lt;u&gt;(This method is obviously NOT the best practice and should be used in development environment ONLY)&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;DatabaseAccessProvider&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAccessProvider&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;SqlServer&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;AuthenticationMode&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAuthenticationMode&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;PassThrough&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;rdbconnection Data Source&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;ServerName_Here&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;rdbconnection Initial Catalog&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;DataBaseName_Here&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;rdbconnection Integrated Security&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;SSPI&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;RdbConnection Pooling&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: green"&gt;For Passing Login &amp;amp; Password Directly&lt;/span&gt;&lt;span style="color: blue"&gt;--&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;RdbConnection User ID&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;UserID Here&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;RdbConnection Password&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Password Here&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;RdbConnection Trusted_Connection&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Type&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.String&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;false&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Property&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In the above Code Snippet, actually what you have to customize is &amp;quot;ServerName&amp;quot;, &amp;quot;DataBaseName&amp;quot;, &amp;quot;UserID&amp;quot; &amp;amp; &amp;quot;Password&amp;quot;, and the authentication should work.&lt;/p&gt;  &lt;p&gt;Note that I am using SQL Authentication here, so make sure to SQL Server you are connecting to have SQL Authentication enabled and have a matching UserID and Password.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6540366099216996993?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6540366099216996993/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6540366099216996993' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6540366099216996993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6540366099216996993'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/06/embed-sql-db-connection-id-password.html' title='Embed SQL DB connection ID &amp;amp; password into BDC Definition File'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4366337147883668851</id><published>2008-05-30T16:47:00.001+08:00</published><updated>2008-05-30T16:47:32.404+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Using Features and Solutions to do Deployment in MOSS / WSS</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb861828.aspx" target="_blank"&gt;&amp;quot;Feature&amp;quot;&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt; is a new concept in MOSS / WSS 3.0, it defines a collection of functionality or site customization in a SharePoint site (For example, adding &lt;a href="http://msdn.microsoft.com/en-us/library/ms454431.aspx" target="_blank"&gt;&amp;quot;Content Type&amp;quot;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/en-us/library/ms196085.aspx" target="_blank"&gt;&amp;quot;Columns&amp;quot;&lt;/a&gt; or &lt;a href="http://msdn.microsoft.com/en-us/library/ms443214.aspx" target="_blank"&gt;&amp;quot;Workflow&amp;quot;&lt;/a&gt;). &lt;strong&gt;&lt;em&gt;Feature&lt;/em&gt;&lt;/strong&gt; can be installed into a specific server machine, and then be activated or deactivated on specific sites.&lt;/p&gt;  &lt;p&gt;A &lt;em&gt;&lt;strong&gt;Feature&lt;/strong&gt;&lt;/em&gt; must consists of a definition file (Feature.xml), plus any number of manifest files in XML format. Location of manifest files is specified in &amp;lt;ElementManifests&amp;gt;&amp;lt;/ElementManifests&amp;gt; tags in &amp;quot;Feature.xml&amp;quot; file.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa543214.aspx" target="_blank"&gt;&lt;em&gt;&lt;strong&gt;&amp;quot;Solution&amp;quot;&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; is used as a mean to deploy custom code, files and other components to SharePoint. With the Solution Framework, developers can deploy custom components such as &lt;u&gt;&lt;em&gt;Web Parts&lt;/em&gt;&lt;/u&gt;, &lt;em&gt;&lt;u&gt;Features&lt;/u&gt;&lt;/em&gt;, &lt;u&gt;&lt;em&gt;site definitions&lt;/em&gt;&lt;/u&gt; and &lt;u&gt;&lt;em&gt;templates&lt;/em&gt;&lt;/u&gt;, &lt;u&gt;&lt;em&gt;custom code access security (CAS)&lt;/em&gt;&lt;/u&gt; policies, and &lt;u&gt;&lt;em&gt;add assemblies&lt;/em&gt;&lt;/u&gt; to a specific SharePoint site's &lt;em&gt;BIN&lt;/em&gt; directory or to the global assembly cache (GAC).&lt;/p&gt;  &lt;p&gt;Each &lt;strong&gt;&lt;em&gt;Solution&lt;/em&gt;&lt;/strong&gt; contains one solution file, called a Windows SharePoint Package (WSP) file, which is essentially a cabinet (*.cab) file with (*.wsp) extension. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc263911.aspx#CreateCustomFeatureInSharePoint_CreatingYourOwnCustomFeature" target="_blank"&gt;Creating a Custom Feature in Office SharePoint Server 2007&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/aa543741.aspx" target="_blank"&gt;Creating a Solution&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4366337147883668851?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4366337147883668851/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4366337147883668851' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4366337147883668851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4366337147883668851'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/using-features-and-solutions-to-do.html' title='Using Features and Solutions to do Deployment in MOSS / WSS'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-2378000904670000323</id><published>2008-05-20T13:45:00.001+08:00</published><updated>2008-05-23T10:27:08.395+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><title type='text'>Working with InfoPath Repeatable Table/Section in MOSS workflows</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With an InfoPath form as a workflow list item, we can gain access to its data via &lt;u&gt;&lt;em&gt;workflowProperties.Item&lt;/em&gt;&lt;/u&gt;. However, there is no native support in MOSS workflows for repeating table/sections. So we developers have to write custom helper method to gain this function.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.officezealot.com/jkremer/archive/2006/10/31/14298.aspx?CommentPosted=true#commentmessage"&gt;Julie's Office Dev Blog : InfoPath 2007, SharePoint Workflows and Whatnot&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Parse repeating data in an InfoPath form (normally this is the submit form)&lt;/font&gt;&lt;/strong&gt;     &lt;br /&gt;This code is copied form &amp;quot;MOSS SDK Workflow Example - Inter-System Purchase Order&amp;quot; by Microsoft&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; GetLineItemsFromOrder(&lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: teal"&gt;DateTime&lt;/span&gt; dueDate, &lt;span style="color: blue"&gt;out&lt;/span&gt; &lt;span style="color: teal"&gt;LineItem&lt;/span&gt;[] items)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: teal"&gt;LineItem&lt;/span&gt;&amp;gt; LineItems = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: teal"&gt;LineItem&lt;/span&gt;&amp;gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Load the bytes for the document&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;byte&lt;/span&gt;[] xmlBytes = &lt;span style="color: blue"&gt;this&lt;/span&gt;.workflowProperties.Item.File.OpenBinary();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Remove the BOM from the xml file so XmlDocument Can handle it&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; Xml = System.Text.&lt;span style="color: teal"&gt;Encoding&lt;/span&gt;.UTF8.GetString(xmlBytes);&lt;span style="color: green"&gt;//, 1, xmlBytes.Length - 1);&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (Xml[0] == (&lt;span style="color: blue"&gt;char&lt;/span&gt;)0xfeff)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Xml = Xml.Substring(1);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 15&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;XmlDocument&lt;/span&gt; Document = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;XmlDocument&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 16&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Document.LoadXml(Xml);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 17&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 18&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;XmlElement&lt;/span&gt; RootElement = Document.DocumentElement;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 19&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 20&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;XmlNamespaceManager&lt;/span&gt; Manager = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;XmlNamespaceManager&lt;/span&gt;(Document.NameTable);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 21&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Manager.AddNamespace(&lt;span style="color: maroon"&gt;&amp;quot;my&amp;quot;&lt;/span&gt;, RootElement.NamespaceURI);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 22&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 23&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Get Due Date&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 24&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dueDate = &lt;span style="color: teal"&gt;DateTime&lt;/span&gt;.Parse(RootElement.SelectSingleNode(&lt;span style="color: maroon"&gt;&amp;quot;//my:ShipBy&amp;quot;&lt;/span&gt;, Manager).InnerText);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 25&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 26&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Get Order Details&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 27&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;XmlNodeList&lt;/span&gt; OrderItems = RootElement.SelectNodes(&lt;span style="color: maroon"&gt;&amp;quot;//my:OrderItem&amp;quot;&lt;/span&gt;, Manager);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 28&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt;(&lt;span style="color: teal"&gt;XmlNode&lt;/span&gt; OrderItem &lt;span style="color: blue"&gt;in&lt;/span&gt; OrderItems)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 29&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 30&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;LineItem&lt;/span&gt; LineItem = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;LineItem&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 31&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LineItem.ProductID = OrderItem.SelectSingleNode(&lt;span style="color: maroon"&gt;&amp;quot;my:ProductID&amp;quot;&lt;/span&gt;, Manager).InnerText;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 32&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LineItem.Quantity = OrderItem.SelectSingleNode(&lt;span style="color: maroon"&gt;&amp;quot;my:Quantity&amp;quot;&lt;/span&gt;, Manager).InnerText;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 33&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; LineItems.Add(LineItem);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 34&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 35&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 36&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; items = LineItems.ToArray();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 37&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 38&lt;/span&gt; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Passing repeating data to an InfoPath task form        &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;In MOSS workflows, InfoPath task form is receiving data by setting up a secondary data source bound to a &lt;font color="#ff0000"&gt;&amp;quot;ItemMetadata.xml&amp;quot;&lt;/font&gt; file. Unfortunately, repeating data schema is not supported in this file.&lt;/p&gt;  &lt;p&gt;In this example, I will try to send the data in original list item file to the InfoPath task form, I am sending over the actual xml of the original list item file as a string value in the ItemMetadata. To get the actual xml of the original list item file, we can use the code snippet extracted from above example:&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//Load the bytes for the document&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;byte&lt;/span&gt;[] xmlBytes = &lt;span style="color: blue"&gt;this&lt;/span&gt;.workflowProperties.Item.File.OpenBinary();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//Remove the BOM from the xml file so XmlDocument Can handle it&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;string&lt;/span&gt; Xml = System.Text.&lt;span style="color: teal"&gt;Encoding&lt;/span&gt;.UTF8.GetString(xmlBytes);&lt;span style="color: green"&gt;//, 1, xmlBytes.Length - 1);&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;if&lt;/span&gt; (Xml[0] == (&lt;span style="color: blue"&gt;char&lt;/span&gt;)0xfeff)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; Xml = Xml.Substring(1);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;Here we get the string variable &amp;quot;Xml&amp;quot; as the xml of the original list item file, and we can pass it to ItemMetadata. Next step is to parse this xml string into repeating data in the InfoPath task form, to do this, we have to write custom code in the InfoPath task form, will require the form to be &lt;u&gt;&amp;quot;Fully Trust&amp;quot;.&lt;/u&gt; The code snippet of the task form is as below:&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; FormEvents_Loading(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: teal"&gt;LoadingEventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;{&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; xmlSource = &lt;span style="color: blue"&gt;this&lt;/span&gt;.DataSources[&lt;span style="color: maroon"&gt;&amp;quot;ItemMetadata&amp;quot;&lt;/span&gt;].CreateNavigator().SelectSingleNode(&lt;span style="color: maroon"&gt;&amp;quot;/z:row/@ows_repeatData&amp;quot;&lt;/span&gt;, NamespaceManager).Value;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;XmlDocument&lt;/span&gt; nodeDoc = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: teal"&gt;XmlDocument&lt;/span&gt;();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; nodeDoc.LoadXml(xmlSource);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;XPathNavigator&lt;/span&gt; sectionNode = &lt;span style="color: blue"&gt;this&lt;/span&gt;.MainDataSource.CreateNavigator().SelectSingleNode(&lt;span style="color: maroon"&gt;&amp;quot;/my:myFields&amp;quot;&lt;/span&gt;, NamespaceManager);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; ns = sectionNode.NamespaceURI;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//we need to delete the default one Infopath adds in&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;this&lt;/span&gt;.MainDataSource.CreateNavigator().SelectSingleNode(&lt;span style="color: maroon"&gt;&amp;quot;/my:myFields/my:repeatDetail&amp;quot;&lt;/span&gt;, NamespaceManager).DeleteSelf();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;foreach&lt;/span&gt; (&lt;span style="color: teal"&gt;XmlNode&lt;/span&gt; thisNode &lt;span style="color: blue"&gt;in&lt;/span&gt; nodeDoc.DocumentElement.ChildNodes)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; ((thisNode.LocalName == &lt;span style="color: maroon"&gt;&amp;quot;repeatDetail&amp;quot;&lt;/span&gt;))&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Start populating the data&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;XmlWriter&lt;/span&gt; write = sectionNode.AppendChild();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write.WriteStartElement(&lt;span style="color: maroon"&gt;&amp;quot;my&amp;quot;&lt;/span&gt;, &lt;span style="color: maroon"&gt;&amp;quot;repeatDetail&amp;quot;&lt;/span&gt;, ns);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write.WriteElementString(&lt;span style="color: maroon"&gt;&amp;quot;my&amp;quot;&lt;/span&gt;, &lt;span style="color: maroon"&gt;&amp;quot;DataColumn1&amp;quot;&lt;/span&gt;, ns, &lt;span style="color: maroon"&gt;&amp;quot;Value1&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write.WriteElementString(&lt;span style="color: maroon"&gt;&amp;quot;my&amp;quot;&lt;/span&gt;, &lt;span style="color: maroon"&gt;&amp;quot;DataColumn2&amp;quot;&lt;/span&gt;, ns, &lt;span style="color: maroon"&gt;&amp;quot;Value2&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write.WriteElementString(&lt;span style="color: maroon"&gt;&amp;quot;my&amp;quot;&lt;/span&gt;, &lt;span style="color: maroon"&gt;&amp;quot;DataColumn3&amp;quot;&lt;/span&gt;, ns, &lt;span style="color: maroon"&gt;&amp;quot;Value3&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write.WriteElementString(&lt;span style="color: maroon"&gt;&amp;quot;my&amp;quot;&lt;/span&gt;, &lt;span style="color: maroon"&gt;&amp;quot;DataColumn4&amp;quot;&lt;/span&gt;, ns, &lt;span style="color: maroon"&gt;&amp;quot;Value4&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write.WriteEndElement();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; write.Close();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;}&amp;#160;&amp;#160; &lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-2378000904670000323?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/2378000904670000323/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=2378000904670000323' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2378000904670000323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/2378000904670000323'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/working-with-infopath-repeatable.html' title='Working with InfoPath Repeatable Table/Section in MOSS workflows'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8196314226417349409</id><published>2008-05-19T15:59:00.001+08:00</published><updated>2008-05-19T16:00:54.590+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Adding Workflow Task Link in Auto-generated Email</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sending Email is a common activity in MOSS workflows. When alerting the task assignee to finish the task, it is quite a normal thought to include the Workflow Task Link in the Email. Below is how to do this.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://suguk.org/forums/thread/4978.aspx"&gt;Task URL in workflows..&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; returnTaskUrls(&lt;span style="color: blue"&gt;string&lt;/span&gt; taskId)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//Use this to return the relevant URL's for use in e-mail of tasks.&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; weburl = workflowProperties.WebUrl;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; taskUrl = &lt;span style="color: maroon"&gt;&amp;quot;/_layouts/WrkTaskIP.aspx?List=&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; listId = workflowProperties.TaskListId.ToString();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; fulltaskUrl = weburl + taskUrl + listId + &lt;span style="color: maroon"&gt;&amp;quot;&amp;amp;ID=&amp;quot;&lt;/span&gt; + taskId;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; htmlTaskLink = &lt;span style="color: maroon"&gt;&amp;quot;&amp;lt;a href=&amp;quot;&lt;/span&gt; + &lt;span style="color: maroon"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt; + fulltaskUrl + &lt;span style="color: maroon"&gt;&amp;quot;\&amp;quot;&amp;quot;&lt;/span&gt; + &lt;span style="color: maroon"&gt;&amp;quot;&amp;gt;Click here to open the task directly in SharePoint&amp;lt;/A&amp;gt;&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; htmlTaskLink;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The above function will return the HTML code for task link given the &lt;font color="#ff0000"&gt;&amp;quot;taskId&amp;quot;&lt;/font&gt; parameter.&lt;/p&gt;  &lt;p&gt;The main idea here is to get the &lt;font color="#ff0000"&gt;&amp;quot;taskId&amp;quot;&lt;/font&gt; parameter, which is actually the &lt;font color="#ff0000"&gt;&amp;quot;ListItemId&amp;quot;&lt;/font&gt; of the task. In order to get its value, we can bind this task properties with a variable.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In your code, create a public &lt;u&gt;Int32&lt;/u&gt; variable&lt;/li&gt;    &lt;li&gt;Navigate to &lt;font color="#ff0000"&gt;&amp;quot;Workflow Designer&amp;quot;&lt;/font&gt; view&lt;/li&gt;    &lt;li&gt;Right Click on the &lt;font color="#ff0000"&gt;&amp;quot;Create Task&amp;quot;&lt;/font&gt; activity of the task you want to link, select &lt;font color="#ff0000"&gt;&amp;quot;Properties&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;In properties, select &lt;font color="#ff0000"&gt;&amp;quot;ListItemId&amp;quot;&lt;/font&gt;, then clicks the ellipsis (...) button that appears&lt;/li&gt;    &lt;li&gt;Select the variable created in &amp;quot;Step 1&amp;quot; and click &lt;font color="#ff0000"&gt;&amp;quot;OK&amp;quot;&lt;/font&gt; to bind it.&lt;/li&gt;    &lt;li&gt;Finish!&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8196314226417349409?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8196314226417349409/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8196314226417349409' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8196314226417349409'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8196314226417349409'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/adding-workflow-task-link-in-auto.html' title='Adding Workflow Task Link in Auto-generated Email'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-5319787599324422446</id><published>2008-05-15T11:30:00.001+08:00</published><updated>2008-05-15T11:30:38.818+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><title type='text'>Custom 'Save' Button in InfoPath Form to save into MOSS Document Library</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I always try to hide the Top and Bottom Toolbar (the one showing &amp;quot;Save&amp;quot;, &amp;quot;SaveAs&amp;quot;, &amp;quot;Close&amp;quot;) in my Browser-enabled InfoPath Forms. But how can I let the user to save the Form into a Document Library without showing the toolbar?. The answer is to submit the form to the destination MOSS Document Library.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2504264&amp;amp;SiteID=1" target="_blank"&gt;Create a custom Save Button in InfoPath&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Steps&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In InfoPath 2007, choose &lt;font color="#ff0000"&gt;'Tools'&lt;/font&gt; =&amp;gt; &lt;font color="#ff0000"&gt;'Submit Options'&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Check &lt;font color="#ff0000"&gt;'Allow users to submit this form'&lt;/font&gt;, choose &lt;font color="#ff0000"&gt;'Send form data to a single destination'&lt;/font&gt; radio button, select &lt;font color="#ff0000"&gt;'SharePoint document library'&lt;/font&gt; in the dropdown under the &lt;font color="#ff0000"&gt;'Send form...'&lt;/font&gt; radio button.&lt;/li&gt;    &lt;li&gt;Under the &lt;font color="#ff0000"&gt;'SharePoint document library'&lt;/font&gt; dropdown, click &lt;font color="#ff0000"&gt;'Add'&lt;/font&gt; button.&lt;/li&gt;    &lt;li&gt;In &lt;font color="#ff0000"&gt;'Data Connection Wizard'&lt;/font&gt;, enter the full URL of the Document Library (e.g. &lt;em&gt;&lt;font color="#ff8040"&gt;&amp;quot;http://localhost/Doc Lib/Forms/AllItems.aspx&amp;quot;&lt;/font&gt;&lt;/em&gt; ) in the &lt;font color="#ff0000"&gt;'Document Library'&lt;/font&gt; Text box.&lt;/li&gt;    &lt;li&gt;Enter File name for the saved Form, you can add function to dynamically create file name. (By clicking the &lt;em&gt;'fx'&lt;/em&gt; button on the right). Click &lt;font color="#ff0000"&gt;'Next'&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;Enter the name for this data connection.&lt;/li&gt;    &lt;li&gt;After you create the data connection, you should convert it into .udcx file and saved in inside the MOSS server for administrator approval. Check &lt;a href="http://acarieslee.blogspot.com/2008/05/moss-hosted-infopath-form-with-web.html"&gt;My Previous Post&lt;/a&gt; for detail steps.&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-5319787599324422446?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/5319787599324422446/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=5319787599324422446' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5319787599324422446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/5319787599324422446'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/custom-button-in-infopath-form-to-save.html' title='Custom &amp;#39;Save&amp;#39; Button in InfoPath Form to save into MOSS Document Library'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4447886243043474144</id><published>2008-05-13T00:42:00.001+08:00</published><updated>2008-05-13T00:44:46.161+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活'/><title type='text'>Banksy - 英國街頭藝術家</title><content type='html'>&lt;p&gt;Banksy 是一個英國的&amp;quot;塗鴉&amp;quot;藝術家, 他反戰, 反權威, 崇尚人權, 愛好和平... 不過目無法紀(隨處塗鴉可是犯法的東西, 大家不要亂學. 欣賞塗鴉則沒問題 :P). 不單英國街頭會出現他的&amp;quot;墨寶&amp;quot;, 連以色列, 法國 甚至倫敦國家藝術館裡 (他自己偷偷放入) 也能看到他的作品.&lt;/p&gt;  &lt;p&gt;他其中最為人津津樂道的系列是數幅塗在 &lt;a href="http://en.wikipedia.org/wiki/User:Palestine-info/Israeli_security_wall" target="_blank"&gt;&amp;quot;以巴圍牆&amp;quot;&lt;/a&gt; 上的作品 (註: &lt;a href="http://www.briansewell.com/artist/b-artist/banksy/banksy-palestinian-tag.html" target="_blank"&gt;2&lt;/a&gt;), 目的都是宣示反對以色列建圍牆及反戰的意想. 至於對他人指他 &amp;quot;破壞&amp;quot; 圍牆的指責, 他則認為 &lt;em&gt;&amp;quot;How illegal is it to vandalize a wall, if the wall itself has been deemed unlawful by the International Court of Justice?&amp;quot;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;本來都是在做著不見得光的勾當 (畫的時候不見得光), 想不到竟有人想出高價買他的 &amp;quot;塗鴉&amp;quot;. 不過看看我們香港已故的 &amp;quot;塗鴉宗師&amp;quot; 九龍皇帝, 寫的大字不也一樣有商業價值嗎？&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Banksy's 作品:&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.duncancumming.co.uk/photos/banksy-elephant.jpg" /&gt;&amp;#160; &lt;br /&gt;&lt;font color="#ff8040"&gt;大象也無力負起戰爭的沉重      &lt;br /&gt;&lt;img src="http://www.psfk.com/wp-content/uploads/2007/10/new-banksy.jpg" /&gt;       &lt;br /&gt;令人心情愉快的 &amp;quot;雙黃線&amp;quot;       &lt;br /&gt;&lt;img src="http://www.briansewell.com/images/banksy-balloongirl.jpg" /&gt;       &lt;br /&gt;唱著&amp;quot;盧冠庭 - 天鳥&amp;quot;的小女孩... &amp;quot;呀吓~ 我要飛往天上....&amp;quot;       &lt;br /&gt;&lt;img src="http://www.briansewell.com/images/banksy-beachboys.jpg" /&gt;&amp;#160; &lt;br /&gt;&amp;quot;Prison Break&amp;quot; for kids&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.banksy.co.uk/" target="_blank"&gt;http://www.banksy.co.uk/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.briansewell.com/artist/b-artist/banksy/banksy-palestinian-tag.html" target="_blank"&gt;Banksy - PALESTINIAN JOB&lt;/a&gt; 以巴圍牆塗鴉 &lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4447886243043474144?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4447886243043474144/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4447886243043474144' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4447886243043474144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4447886243043474144'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/banksy.html' title='Banksy - 英國街頭藝術家'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7519876560835404874</id><published>2008-05-11T14:43:00.001+08:00</published><updated>2008-05-15T11:38:42.501+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><title type='text'>How to embed browser-enabled InfoPath Forms into Webpart</title><content type='html'>&lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To have a browser-enabled InfoPath Form is nice, but to have an InfoPath Form embed webpart that can be put at anywhere in your page is even more nicer!!! The following PDF file by &lt;a href="http://www.nickgrattan.net/" target="_blank"&gt;Nick Grattan Consultancy Limited&lt;/a&gt; will shows you how to used out-of-the-box &lt;u&gt;&lt;em&gt;&amp;quot;XmlFormView&amp;quot;&lt;/em&gt;&lt;/u&gt; Library as a webpart container of browser-enabled InfoPath Forms.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.nickgrattan.net/Publications/How%20to%20Host%20Microsoft%20InfoPath%20Forms%20in%20SharePoint%20Pages.pdf" target="_blank"&gt;How to Host Microsoft InfoPath Forms in SharePoint 2007 Web Part Pages&lt;/a&gt; (PDF)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7519876560835404874?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7519876560835404874/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7519876560835404874' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7519876560835404874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7519876560835404874'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/how-to-embed-browser-enabled-infopath.html' title='How to embed browser-enabled InfoPath Forms into Webpart'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-1872264311127544857</id><published>2008-05-11T14:26:00.001+08:00</published><updated>2008-05-15T11:09:20.111+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Copying Files between Document Libraries in WSS 3.0 Workflow</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sometimes you would need to move/copy files to different Document Libraries during a workflow process, but when using &lt;em&gt;&lt;u&gt;'File.CopyTo'&lt;/u&gt;&lt;/em&gt; or &lt;u&gt;&lt;em&gt;'File.MoveTo'&lt;/em&gt;&lt;/u&gt; method there may be build errors. If this is the case, then you can use the following snippet (Copied from &lt;font color="#ff8040"&gt;'&lt;/font&gt;&lt;b&gt;&lt;font color="#ff8040"&gt;cwogle'&lt;/font&gt; &lt;/b&gt;) to manually 'copy' a file to the destination Document Library.&lt;/p&gt;  &lt;p&gt;On the other hand, if you want to copy the whole &lt;em&gt;SPListItem&lt;/em&gt; to another Document Library, then you can use &lt;u&gt;&lt;em&gt;'SPListItem.CopyTo()'&lt;/em&gt;&lt;/u&gt; method.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2019616&amp;amp;SiteID=1" target="_blank"&gt;moving sharepoint files to different folder&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Code Snippet&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 1&lt;/span&gt;&amp;#160;&lt;span style="color: green"&gt;// Get Destination Folder&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 2&lt;/span&gt;&amp;#160;&lt;span style="color: teal"&gt;SPWeb&lt;/span&gt; currWeb = workflowProperties.Web;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 3&lt;/span&gt;&amp;#160;&lt;span style="color: teal"&gt;SPFolder&lt;/span&gt; destnFolder = currWeb.GetFolder(&lt;span style="color: maroon"&gt;&amp;quot;http://host/DocLibrary/&amp;quot;&lt;/span&gt;);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 4&lt;/span&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 5&lt;/span&gt;&amp;#160;&lt;span style="color: green"&gt;// Copy the File to there&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 6&lt;/span&gt;&amp;#160;&lt;span style="color: teal"&gt;SPListItem&lt;/span&gt; item = workflowProperties.Item;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 7&lt;/span&gt;&amp;#160;&lt;span style="color: teal"&gt;Byte&lt;/span&gt;[] fileContents = item.File.OpenBinary();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 8&lt;/span&gt;&amp;#160;&lt;span style="color: teal"&gt;SPFile&lt;/span&gt; newFile = destnFolder.Files.Add(&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; 9&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; destnFolder.ServerRelativeUrl + &lt;span style="color: maroon"&gt;&amp;quot;/&amp;quot;&lt;/span&gt; + item.File.Name,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 10&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; fileContents,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 11&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.File.Author,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 12&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.File.ModifiedBy,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 13&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.File.TimeCreated,&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 14&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; item.File.TimeLastModified);&lt;/p&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-1872264311127544857?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/1872264311127544857/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=1872264311127544857' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1872264311127544857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/1872264311127544857'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/copying-files-between-document.html' title='Copying Files between Document Libraries in WSS 3.0 Workflow'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-726268484365242268</id><published>2008-05-11T00:10:00.001+08:00</published><updated>2008-05-11T10:37:19.171+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Update Workflow Task properties with 'UpdateTask Activity'</title><content type='html'>&lt;p&gt;&lt;font color="#0080ff"&gt;&lt;strong&gt;吹水&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;OK~ 之前幾個post打左咁多英文, 都係時候講下廣東話啦... :p    &lt;br /&gt;話說我今個星期接到單非常好玩既job, 就係無人做過既 WSS/MOSS Workflow 啦~ 個期仲要鬼咁急, 不過只係做demo啫~     &lt;br /&gt;由於我係用 Sequential Workflow + Looping&amp;#160; + Create / Update / Delete Tasks, 所以出現好多問題, 最後我用左個折衷方法就係只用一個task, 靠update佢既 &amp;quot;Title&amp;quot; 同 &amp;quot;AssignedTo&amp;quot; properties 黎 &amp;quot;扮&amp;quot; 不同既 tasks. 不過最後我發覺原來要 update 一個 task 既 properties 係幾煩既....&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1454736&amp;amp;SiteID=1" target="_blank"&gt;Task reassignments using UpdateTask Activity&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview / Steps (用返英文啦)&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In order to update the task properties, &lt;u&gt;&lt;em&gt;'UpdateTask'&lt;/em&gt;&lt;/u&gt; Activity should be used in VS2005 Workflow Designer. If you cannot find this in the Toolbox, try making a new Tab in Toolbox and then right-click and select &lt;font color="#ff0000"&gt;&amp;quot;Choose Items...&amp;quot;&lt;/font&gt;, then add &lt;font color="#ff0000"&gt;&amp;quot;Microsoft.SharePoint.WorkflowActions.dll&amp;quot;&lt;/font&gt;.&lt;/p&gt;  &lt;p&gt;After &lt;em&gt;&lt;u&gt;'UpdateTask'&lt;/u&gt;&lt;/em&gt; Activity is inserted, double click on it in Workflow Designer and use &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflowactions.updatetask.aspx" target="_blank"&gt;&amp;quot;UpdateTask&amp;quot;&lt;/a&gt; class to set new value for the task properties.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff8040"&gt;&lt;strong&gt;Code Snippet:&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 113&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;private&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; updateTask1_MethodInvoking(&lt;span style="color: blue"&gt;object&lt;/span&gt; sender, &lt;span style="color: teal"&gt;EventArgs&lt;/span&gt; e)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 114&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 115&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: teal"&gt;UpdateTask&lt;/span&gt; task = (&lt;span style="color: teal"&gt;UpdateTask&lt;/span&gt;)sender;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 116&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; task.TaskProperties.AssignedTo = &lt;span style="color: blue"&gt;this&lt;/span&gt;.assignee;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 117&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; task.TaskProperties.Title = &lt;span style="color: maroon"&gt;&amp;quot;Please update...&amp;quot;&lt;/span&gt;;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160; 118&lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;In the above snippet, the &lt;font color="#ff0000"&gt;&amp;quot;AssignedTo&amp;quot;&lt;/font&gt; and &lt;font color="#ff0000"&gt;&amp;quot;Title&amp;quot;&lt;/font&gt; properties are updated.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Key Point: Setting &lt;u&gt;&lt;em&gt;&amp;quot;AfterProperties&lt;/em&gt;&lt;/u&gt;&amp;quot; for &lt;u&gt;&lt;em&gt;&amp;quot;OnTaskChanged&amp;quot;&lt;/em&gt;&lt;/u&gt; Activity and &lt;u&gt;&lt;em&gt;&amp;quot;TaskProperties&amp;quot;&lt;/em&gt;&lt;/u&gt; for &lt;u&gt;&lt;em&gt;&amp;quot;UpdateTask&amp;quot;&lt;/em&gt;&lt;/u&gt; Activity&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Very often you will find that using the method state above could not update the task properties, this is because the &lt;u&gt;&lt;em&gt;&amp;quot;OnTaskChanged.AfterProperties&amp;quot;&lt;/em&gt;&lt;/u&gt; and &lt;u&gt;&lt;em&gt;&amp;quot;UpdateTask.TaskProperties&amp;quot;&lt;/em&gt;&lt;/u&gt; are both bound to the same &lt;u&gt;&lt;em&gt;&amp;quot;SPWorkflowTaskProperties&amp;quot;&lt;/em&gt;&lt;/u&gt; object. So make sure that they are NOT bound to the same Properties.&lt;/p&gt;  &lt;p&gt;I also found that if you have more that one &lt;u&gt;&lt;em&gt;&amp;quot;OnTaskChanged&amp;quot;&lt;/em&gt;&lt;/u&gt; Activities and &lt;u&gt;&lt;em&gt;&amp;quot;UpdateTask&amp;quot;&lt;/em&gt;&lt;/u&gt; Activities for a certain task, you only need two &lt;u&gt;&lt;em&gt;&amp;quot;SPWorkflowTaskProperties&amp;quot;&lt;/em&gt;&lt;/u&gt; objects. One for all &lt;u&gt;&lt;em&gt;&amp;quot;OnTaskChanged&amp;quot;&lt;/em&gt;&lt;/u&gt; Activities and the other for all &lt;u&gt;&lt;em&gt;&amp;quot;UpdateTask&amp;quot;&lt;/em&gt;&lt;/u&gt; Activities.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-726268484365242268?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/726268484365242268/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=726268484365242268' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/726268484365242268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/726268484365242268'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/update-workflow-task-properties-with.html' title='Update Workflow Task properties with &amp;#39;UpdateTask Activity&amp;#39;'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-8680530965087777870</id><published>2008-05-10T17:20:00.001+08:00</published><updated>2008-05-10T17:37:22.070+08:00</updated><title type='text'>Development/Deployment Steps of Workflow in MOSS 2007 and WSS 3.0</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Both MOSS 2007 &amp;amp; WSS 3.0 supports workflow features. However, the steps in developing and deploying workflow in them are quite different. This is because two different types of Visual Studio Project templates are provided for MOSS 2007 and WSS 3.0 separately.&lt;/p&gt;  &lt;p&gt;According to my experience, &lt;em&gt;&lt;u&gt;MOSS 2007 can use both types in development and deployment&lt;/u&gt;&lt;/em&gt;, yet &lt;em&gt;&lt;u&gt;WSS 3.0 can only use &amp;quot;SharePoint Services Workflow Template&amp;quot; in deployment&lt;/u&gt;&lt;/em&gt;, using &amp;quot;SharePoint Server Workflow Template&amp;quot; will result in error.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;font color="#ff8000"&gt;Typical Error:&lt;/font&gt;&lt;/em&gt;&lt;/strong&gt;     &lt;br /&gt;&amp;quot;System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Office.Workflow.Feature, assembly 'Microsoft.Office.Workflow.Feature&amp;quot;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Development Environment&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;font color="#ffcc66"&gt;IDE: Visual Studio 2005 (VSTS)        &lt;br /&gt;Others:         &lt;br /&gt;MOSS SDK v1.2 (For MOSS 2007)         &lt;br /&gt;VS extension for WSS (For WSS 3.0)         &lt;br /&gt;VS extension for Workflow&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;MOSS 2007&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Development&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In Visual Studio, &amp;quot;New&amp;quot; =&amp;gt; &amp;quot;Project&amp;quot; &lt;/li&gt;    &lt;li&gt;Expand &amp;quot;Visual C#&amp;quot; section, select &amp;quot;Share Point &lt;strong&gt;&lt;u&gt;Server&lt;/u&gt; (Sequential / State Machine) &lt;/strong&gt;Workflow Template&amp;quot; &lt;/li&gt;    &lt;li&gt;Develop Workflow, Forms (Association, Initiation, Modification or Task Form), and coding. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Deployment&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Setup &amp;quot;feature.xml&amp;quot;, &amp;quot;workflow.xml&amp;quot;&lt;/li&gt;    &lt;li&gt;Open &amp;quot;PostBuildActions.bat&amp;quot; inside &amp;quot;DeploymentFIles&amp;quot; and modify it according to instructions inside the .bat file.&lt;/li&gt;    &lt;li&gt;Right-click on Project Name in &amp;quot;Solution Explorer&amp;quot; and select &amp;quot;Properties&amp;quot; &lt;/li&gt;    &lt;li&gt;Select &amp;quot;Build Events&amp;quot; tab, at &amp;quot;Post-build event command line&amp;quot;, change parameter &lt;strong&gt;&lt;font color="#ff0000"&gt;UNDEPLOY&lt;/font&gt;&lt;/strong&gt; to &lt;strong&gt;&lt;font color="#ff0000"&gt;DEPLOY&lt;/font&gt;&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Build / Re-build the project &lt;/li&gt;    &lt;li&gt;Done! &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;WSS 3.0&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff8040"&gt;Development&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In Visual Studio, &amp;quot;New&amp;quot; =&amp;gt; &amp;quot;Project&amp;quot; &lt;/li&gt;    &lt;li&gt;Expand &amp;quot;Visual C#&amp;quot; section, select &amp;quot;Share Point &lt;strong&gt;&lt;u&gt;Services&lt;/u&gt; (Sequential / State Machine) &lt;/strong&gt;Workflow Template&amp;quot; &lt;/li&gt;    &lt;li&gt;Develop Workflow, Forms (Association, Initiation, Modification or Task Form), and coding. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;font color="#ff8000"&gt;Deployment&lt;/font&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Setup &amp;quot;feature.xml&amp;quot;, &amp;quot;workflow.xml&amp;quot; &lt;/li&gt;    &lt;li&gt;Open &amp;quot;Install.bat&amp;quot; and modify it according to instructions inside the .bat file.&lt;/li&gt;    &lt;li&gt;Build / Re-build the project &lt;/li&gt;    &lt;li&gt;In Command Prompt, navigate to your project folder. Run &amp;quot;Install.bat&amp;quot;&lt;/li&gt;    &lt;li&gt;Done! &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Solution for WSS 3.0 &lt;em&gt;'Microsoft.Office.Workflow.Feature NOT FOUND'&lt;/em&gt; Deployment Error&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Warning: This is only a small workaround when you develop the whole WSS 3.0 workflow based on MOSS 2007 Project Template and get error in deployment. This is not guarantee to work and the workflow might not run even after it is activated in WSS 3.0. &lt;u&gt;&lt;em&gt;Always use &amp;quot;SharePoint Services Workflow Template&amp;quot; for WSS 3.0 Projects.&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;To workaround this error is simple, just open the &lt;font color="#ff0000"&gt;&amp;quot;feature.xml&amp;quot;&lt;/font&gt; of your workflow project in Visual Studio and delete the two lines beginning with &lt;font color="#ff0000"&gt;&amp;quot;ReceiverAssembly=....&amp;quot;&lt;/font&gt; and &lt;font color="#ff0000"&gt;&amp;quot;ReceiverClass=.....&amp;quot;.&lt;/font&gt; After that, try re-build your project and you're done!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1692100&amp;amp;SiteID=1" target="_blank"&gt;WSS 3.0 - Microsoft.Office.Workflow.Feature file not found??&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-8680530965087777870?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/8680530965087777870/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=8680530965087777870' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8680530965087777870'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/8680530965087777870'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/developmentdeployment-steps-of-workflow.html' title='Development/Deployment Steps of Workflow in MOSS 2007 and WSS 3.0'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7799152047392904935</id><published>2008-05-09T16:37:00.001+08:00</published><updated>2008-05-09T16:37:45.687+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>Accessing Data from Workflow Association and Initiation Forms in Windows SharePoint Services 3.0</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc160835.aspx"&gt;Accessing Data from Workflow Association and Initiation Forms in Windows SharePoint Services 3.0&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It is often that a Workflow template would need some initial parameters when it is &lt;em&gt;first associated to a document library&lt;/em&gt; or &lt;em&gt;started by an event.&lt;/em&gt; In SharePoint Products, it is supported by adding Association and Initiation Forms to the Workflow template.&lt;/p&gt;  &lt;p&gt;However, WSS 3.0 does not support InfoPath Form Services (I remember only MOSS 2007 Enterprise Edition supports this). We are going to create the Assoc/Init Forms by ASP.NET Forms, and apply the form value into the Workflow instance.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7799152047392904935?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7799152047392904935/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7799152047392904935' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7799152047392904935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7799152047392904935'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/accessing-data-from-workflow.html' title='Accessing Data from Workflow Association and Initiation Forms in Windows SharePoint Services 3.0'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-6558488250893263198</id><published>2008-05-08T15:47:00.001+08:00</published><updated>2008-05-09T16:39:14.134+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Services 3.0'/><title type='text'>WSS 3.0 - "Value does not fall within expected range" after installing Workflow feature</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblog.vb-tech.com/nick/archive/2006/09/04/1760.aspx"&gt;Deploying a custom MOSS 2007 workflow&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Symptoms&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;After installing &amp;quot;Workflow Feature&amp;quot; (by modifying feature.xml, workflow.xml &amp;amp; install.bat and then run install.bat), Error &amp;quot;Value does not fall within expected range&amp;quot; returned when clicking &amp;quot;Document Library Settings&amp;quot; at ANY Document Libraries.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Results behind&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Corrupted feature.xml or workflow.xml (e.g. typing error, Type in wrong &amp;quot;TaskListContentTypeId&amp;quot;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Solution&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Run:    &lt;br /&gt;&lt;font color="#0080ff"&gt;&lt;em&gt;stsadm -o deactivatefeature -filename &lt;/em&gt;&lt;font color="#ff8040"&gt;%Path of the feature.xml (e.g. C:\XML\feature.xml)%&lt;/font&gt;&lt;font color="#0080ff"&gt; -url &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff8040"&gt;http://%YourServerURL%&lt;/font&gt;&lt;font color="#0080ff"&gt; -force&lt;/font&gt;&lt;/font&gt; &amp;lt;= to deactive the corrupted feature&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080ff"&gt;&lt;em&gt;stsadm -o uninstallfeature -filename &lt;/em&gt;&lt;font color="#ff8040"&gt;%Path of the feature.xml (e.g. C:\XML\feature.xml)%&lt;/font&gt; &lt;/font&gt;&lt;em&gt;&lt;font color="#0080ff"&gt;&lt;em&gt;-force&lt;/em&gt;&lt;/font&gt;&lt;/em&gt; &amp;lt;= to uninstall the corrupted feature&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Remarks&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This solution should be applicable to MOSS 2007&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-6558488250893263198?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/6558488250893263198/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=6558488250893263198' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6558488250893263198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/6558488250893263198'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/wss-30-does-not-fall-within-expected.html' title='WSS 3.0 - &amp;quot;Value does not fall within expected range&amp;quot; after installing Workflow feature'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-7551248498672493920</id><published>2008-05-06T16:31:00.001+08:00</published><updated>2008-05-06T16:56:04.208+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Server 2007'/><title type='text'>MOSS 2007 BDC - Action</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Overview&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Action 係 BDC 既一個 feature, 佢既功能係為每一個 record 加上 Custom Link, 而 Link 入面亦可以放入 parameters. 如果配合InfoPath Form / Web Services, 就可以實現用 BDC update / create / delete 既功能.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Reference&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms494979.aspx"&gt;MSDN - Action&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;Sample application definition XML&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;div class="vs"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 90&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Actions&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 91&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;Action&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Position&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;1&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;IsOpenedInNewWindow&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;false&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Url&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;http://localhost/edit.aspx?id={0}&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;ImageUrl&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;/_layouts/images/delete.gif&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Delete&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 92&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;ActionParameters&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 93&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;&lt;/span&gt;&lt;span style="color: maroon"&gt;ActionParameter&lt;/span&gt;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Index&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;0&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; &lt;/span&gt;&lt;span style="color: red"&gt;Name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Id&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt; /&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 94&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;ActionParameters&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 95&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Action&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160; 96&lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/&lt;/span&gt;&lt;span style="color: maroon"&gt;Actions&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;       &lt;br /&gt;於 Share Point Central Administration 為 Entity 加 Custom Actions&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;其實除了 definition file, 我們還可以在 Import 了 BDC Application 之後, 在 &amp;quot;Share Point 3.0 Central Administration&amp;quot; Web Page 那裏再加減 Custom Actions. 這樣做的好處不單是可以隨時更改 Actions, 不用每次都改動那個大得恐怖的 XML (之後還要 import...), 而且在 central administrationh 做錯的可能性幾乎是零 (錯了也可輕易改正).&lt;/p&gt;  &lt;p&gt;在 &lt;font color="#ff0000"&gt;&amp;quot;Share Point 3.0 Central Administration&amp;quot;&lt;/font&gt; 改 Actions 的 Steps:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;在左邊的 navigation bar 按 &lt;font color="#ff0000"&gt;&amp;quot;SharedServices&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;在 &lt;font color="#ff0000"&gt;&amp;quot;Business Data Catalog&amp;quot;&lt;/font&gt; Section 按 &lt;font color="#ff0000"&gt;&amp;quot;View entities&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;選擇想要加 Actions 的 Entity&lt;/li&gt;    &lt;li&gt;在 &lt;font color="#ff0000"&gt;&amp;quot;View Entity&amp;quot;&lt;/font&gt; 版面 scroll 到下面, 在 &lt;font color="#ff0000"&gt;&amp;quot;Actions&amp;quot;&lt;/font&gt; Section 選想要更改的 Action, 或按 &lt;font color="#ff0000"&gt;&amp;quot;Add Action&amp;quot;&lt;/font&gt; 增加 Action.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;&lt;font color="#0080ff"&gt;在 BDC Data List Web Part 裏面 display Actions dropdown list.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;要在 Data List 裏面 display Actions dropdown list, 方法是要於 web part 中選好title column. 而選 title column 的方法如下:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;去想要更改的 Web Part Page 選 &lt;font color="#ff0000"&gt;&amp;quot;Edit Page&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;在想要改的 Web Part 右上角 選 &lt;font color="#ff0000"&gt;&amp;quot;Edit View&amp;quot;&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;在 &lt;font color="#ff0000"&gt;&amp;quot;Edit View&amp;quot;&lt;/font&gt; Page, &lt;font color="#ff0000"&gt;&amp;quot;Column&amp;quot;&lt;/font&gt; Section, 選 Column Name 左邊的 Radio Button 來 set Title Column.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;效果如下︰&lt;/p&gt;  &lt;p&gt;&lt;img src="http://www.sharepointnick.com/blog/Lists/Photos/072907_2203_BusinessDat10.png" /&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-7551248498672493920?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/7551248498672493920/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=7551248498672493920' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7551248498672493920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/7551248498672493920'/><link rel='alternate' type='text/html' href='http://acarieslee.blogspot.com/2008/05/moss-2007-bdc-action.html' title='MOSS 2007 BDC - Action'/><author><name>Aries Lee</name><uri>http://www.blogger.com/profile/09531122688234150948</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://bp3.blogger.com/_Eyrb1Jl6aRc/SBazjWkq_wI/AAAAAAAAABA/mlliLmsHDr4/S220/myPhoto.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8461613856018617594.post-4013133611448157717</id><published>2008-05-03T22:44:00.001+08:00</published><updated>2008-05-03T22:44:00.088+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='生活'/><title type='text'>敗家癮之回歸....</title><content type='html'>&lt;p&gt;星期三同阿強佢地去左圓方Element 睇 &lt;a href="http://ironmanmovie.marvel.com/" target="_blank"&gt;Iron Man&lt;/a&gt;. 其實我之前已經0向 &lt;a href="http://www.nba.com" target="_blank"&gt;NBA&lt;/a&gt; 度見到佢既廣告, 去左official site 度睇 gallery 都頗為期待. 基本上而家我會入戲院睇既戲, 一係就係大製作大場面+特技, 另外就係我認為值得支持既港產片 (例如 &amp;quot;無當變幻時&amp;quot;, &amp;quot;門徒&amp;quot; 同埋 &amp;quot;投名狀&amp;quot;). 而要睇 Iron Man, 當然要入戲院睇啦~&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://ironmanmovie.marvel.com/" target="_blank"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/7/70/Ironmanposter.JPG" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;睇完之後覺得絕對值回票價, 特技交足功課 (我覺得逼真過 &amp;quot;Transformer&amp;quot; 好多, 雖然無咁靚), 而且成套戲都有笑料, 算係一個驚喜既地方! 至方劇情方面, 都預左唔會好有深度, 畢竟係改篇自美式英雄漫畫, d角色都係大忠大奸, 頂多出個一睇就知係奸扮忠既角色. 不過套戲一開始十分大美國主義 (d角色死都要死0向國旗旁邊.....), 之後其實都不時暗串美國賣軍火, 亦有反戰意識, 都算有教育意義ge~&lt;/p&gt;  &lt;p&gt;五一放假就出街勞動左成日, 晨早起身出去彩虹道打室內場. 大家都打得唔錯, 四場贏左三場~ 哈哈~ 我個人都每場有得分有籃板, 之後仲送出一個 block shot 同一次 fast break 添, yeah! 其實不嬲都唔識打全場, 無論係防守進攻都唔知想點咁, 又覺得進攻時好難, paint 位人馬疊疊. 今次得阿強提醒要點, 開始比較掌握到進攻方式.&lt;/p&gt;  &lt;p&gt;打完波就去左黃埔篤波, 篤左兩個鐘到就去左旺角join 埋 Ann 同 Emily 去第尾食飯. 由於做左大量運動 (全場比 3 on 3 更攰... ) + 無乜坐過既關係, 果晚胃口超好, 我都係第一次食完第尾既什扒餐+兩個雪糕後唔會有頂到上心口既感覺.&lt;/p&gt;  &lt;p&gt;去得旺角難免又會上 shooting 5 睇波衫, 呢排睇中左 &lt;a href="http://www.nba.com/playerfile/josh_smith/index.html" target="_blank"&gt;Josh Smith&lt;/a&gt;, 想買作客深籃色果件. (呢排鷹隊實在太勁~) 另外又想買過對波鞋, 因為而家呢對個低已經蝕左好多. 心目中想買 &lt;a href="http://www.nba.com/playerfile/dwight_howard/index.html" target="_blank"&gt;Dwight Howard&lt;/a&gt; 既 TS Lightspeed Howard. 睇黎又係一輸敗家既開始....&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8461613856018617594-4013133611448157717?l=acarieslee.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://acarieslee.blogspot.com/feeds/4013133611448157717/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8461613856018617594&amp;postID=4013133611448157717' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8461613856018617594/posts/default/4013133611448157717'/><link rel='self' type='application/atom+xml' href='http://www.blogger
