<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Nothing is final!!!</title><link>https://weblogs.asp.net:443/yonggangmeng/</link><description>Try what I want, do what I can!</description><item><title>The difference between Equals and ==</title><link>https://weblogs.asp.net:443/yonggangmeng/the-difference-between-equals-and</link><description>&lt;div class="csharpcode"&gt;   &lt;pre&gt;&lt;span class="lnum"&gt;Today, I saw an article about Equals and ==, something confuses me. &lt;a href="http://forums.asp.net/t/1511559.aspx"&gt;http://forums.asp.net/t/1511559.aspx&lt;/a&gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;So I do it myself.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    DoEQ();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    Console.ReadLine();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DoEQ()&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;For value datatype:&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; i = 6;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; j = 6;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; h = 8;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;6==6 {0}&amp;quot;&lt;/span&gt;,i==j);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;6.Equals(6) {0}&amp;quot;&lt;/span&gt;, i.Equals(j));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;6==8 {0}&amp;quot;&lt;/span&gt;, i == h);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;6.Equals(8) {0}&amp;quot;&lt;/span&gt;, i.Equals(h));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    Console.WriteLine();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;For reference datatype:&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    StringBuilder iC = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder(&lt;span class="str"&gt;&amp;quot;My&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    StringBuilder jC = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder(&lt;span class="str"&gt;&amp;quot;My&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    StringBuilder hC = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder(&lt;span class="str"&gt;&amp;quot;My Test&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;StringBuilder('My')==StringBuilder('My') {0}&amp;quot;&lt;/span&gt;, iC == jC);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;StringBuilder('My').Equals(StringBuilder('My')) {0}&amp;quot;&lt;/span&gt;, iC.Equals(jC));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;StringBuilder('My')==StringBuilder('My Test') {0}&amp;quot;&lt;/span&gt;, iC == hC);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;StringBuilder('My').Equals(StringBuilder('My Test')) {0}&amp;quot;&lt;/span&gt;, iC.Equals(hC));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;    Console.WriteLine();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;For special reference datatype(string):&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; iStr = &lt;span class="str"&gt;&amp;quot;Test&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; jStr = &lt;span class="str"&gt;&amp;quot;Test&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; hStr = &lt;span class="str"&gt;&amp;quot;Just a Test&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;\&amp;quot;Test\&amp;quot;==\&amp;quot;Test\&amp;quot; {0}&amp;quot;&lt;/span&gt;, iStr == jStr);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;\&amp;quot;Test\&amp;quot;.Equals(\&amp;quot;Test\&amp;quot;) {0}&amp;quot;&lt;/span&gt;, iStr.Equals(jStr));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;\&amp;quot;Test\&amp;quot;==\&amp;quot;Just a Test\&amp;quot; {0}&amp;quot;&lt;/span&gt;, iStr == hStr);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;\&amp;quot;Test\&amp;quot;.Equals(\&amp;quot;Just a Test\&amp;quot;) {0}&amp;quot;&lt;/span&gt;, iStr.Equals(hStr));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;    Console.WriteLine();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;For null and  reference datatype:&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; iN = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; jN = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; hN = &lt;span class="str"&gt;&amp;quot;Test&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Null==Null {0}&amp;quot;&lt;/span&gt;, iN == jN);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    &lt;span class="rem"&gt;//Console.WriteLine(&amp;quot;Null.Equals(Null) {0}&amp;quot;, iN.Equals(jN));&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;Null==\&amp;quot;Test\&amp;quot; {0}&amp;quot;&lt;/span&gt;, iN == hN);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;    &lt;span class="rem"&gt;//Console.WriteLine(&amp;quot;Null.Equals(\&amp;quot;Test\&amp;quot;) {0}&amp;quot;, iN.Equals(hN));&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;\&amp;quot;Test\&amp;quot;.Equals(Null) {0}&amp;quot;&lt;/span&gt;, hN.Equals(iN));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;    Console.WriteLine();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;For special value datatype(zero):&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; iZ = 0;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;    &lt;span class="kwrd"&gt;short&lt;/span&gt; jZ =0;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;0i==0s {0}&amp;quot;&lt;/span&gt;, iZ == jZ);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;    Console.WriteLine(&lt;span class="str"&gt;&amp;quot;0i.Equals(0s) {0}&amp;quot;&lt;/span&gt;, iZ.Equals(jZ));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;br /&gt;

&lt;p&gt;&lt;a href="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ThedifferencebetweenEqualsand_F162/image_2.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ThedifferencebetweenEqualsand_F162/image_thumb.png" width="644" height="434" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;By value type, there’s no difference between Equals and == &lt;/li&gt;

  &lt;li&gt;By reference type, Equals compare the value of the two objects, the == compare whether the two objects point the same address. &lt;/li&gt;

  &lt;li&gt;For different value type, Equals and == work the same way. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Functions disassembled by &lt;a href="http://www.red-gate.com" target="_blank"&gt;Reflector&lt;/a&gt;:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[TargetedPatchingOptOut(&lt;span class="str"&gt;&amp;quot;Performance critical to inline across NGen image boundaries&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;virtual&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Equals(&lt;span class="kwrd"&gt;object&lt;/span&gt; obj)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; RuntimeHelpers.Equals(&lt;span class="kwrd"&gt;this&lt;/span&gt;, obj);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  &lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[TargetedPatchingOptOut(&lt;span class="str"&gt;&amp;quot;Performance critical to inline across NGen image boundaries&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; Equals(&lt;span class="kwrd"&gt;object&lt;/span&gt; objA, &lt;span class="kwrd"&gt;object&lt;/span&gt; objB)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; ((objA == objB) || (((objA != &lt;span class="kwrd"&gt;null&lt;/span&gt;) &amp;amp;&amp;amp; (objB != &lt;span class="kwrd"&gt;null&lt;/span&gt;)) &amp;amp;&amp;amp; objA.Equals(objB)));&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  &lt;/span&gt; &lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success), TargetedPatchingOptOut(&lt;span class="str"&gt;&amp;quot;Performance critical to inline across NGen image boundaries&amp;quot;&lt;/span&gt;)]&lt;/font&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; ReferenceEquals(&lt;span class="kwrd"&gt;object&lt;/span&gt; objA, &lt;span class="kwrd"&gt;object&lt;/span&gt; objB)&lt;/font&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;{&lt;/font&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; (objA == objB);&lt;/font&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;font style="background-color: #cccccc"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;}&lt;/font&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;
&lt;/div&gt;</description><pubDate>Fri, 06 Aug 2010 00:23:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/the-difference-between-equals-and</guid><category>.Net</category><category>C#</category><category>Notes</category></item><item><title>Two ways to make CommandArgument have value in GridView</title><link>https://weblogs.asp.net:443/yonggangmeng/two-ways-to-make-commandargument-have-value-in-gridview</link><description>We all know that CommandArgument Property can remember value or index, but sometimes, there's nothing in it, do you know why?&lt;br /&gt;Today, i study for a while, and i find the following two ways.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use &amp;lt;asp:ButtonField CommandName="CMD" /&amp;gt;, the CommandArgument will memory the RowIndex of the GridView automatically.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use &amp;lt;asp:TemplateField&amp;gt;&amp;lt;ItemTemplate&amp;gt;&amp;lt;asp:Button CommandName="MCMD" CommandArgument="Value"&amp;nbsp; /&amp;gt;&amp;lt;/ItemTemplate&amp;gt;&amp;lt;/asp:TemplateField&amp;gt;, the Argument value is Value&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;</description><pubDate>Mon, 12 Jul 2010 10:08:04 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/two-ways-to-make-commandargument-have-value-in-gridview</guid><category>.Net</category><category>Asp.net</category><category>C#</category><category>Questions</category><category>Web</category></item><item><title>Know more about Assembly</title><link>https://weblogs.asp.net:443/yonggangmeng/know-more-about-assembly</link><description>If you want to know what an assembly does, you can use &lt;a href="http://www.red-gate.com/products/reflector/" target="_blank" mce_href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt; to refactor the assembly and check the codes.&lt;br&gt;&lt;br&gt;If you want to know why binding assembly failed, you can use &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfFusionLogViewerFuslogvwexe.asp" target="_blank" mce_href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpgrfFusionLogViewerFuslogvwexe.asp"&gt;Assembly Binding Log Viewer&lt;/a&gt; to check it. Also you should set &lt;b&gt;HKLM\Software\Microsoft\Fusion\ForceLog &lt;/b&gt;registry value to &lt;b&gt;1&lt;/b&gt;.&lt;br&gt;&lt;br&gt;When the assembly is used, you want to know what the assembly uses, you can use &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx" target="_blank" mce_href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt;.&lt;img src="http://img.zemanta.com/pixy.gif?x-id=6f82130c-88ad-81a5-b6aa-09806da3434c" class="zemanta-pixie-img" alt="" mce_src="http://img.zemanta.com/pixy.gif?x-id=6f82130c-88ad-81a5-b6aa-09806da3434c"&gt;</description><pubDate>Tue, 09 Mar 2010 07:19:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/know-more-about-assembly</guid><category>.Net</category><category>Notes</category></item><item><title>Get the last day of the month use javascript in VS2008</title><link>https://weblogs.asp.net:443/yonggangmeng/get-the-last-day-of-the-month-use-javascript-in-vs2008</link><description>
&lt;p&gt;I have a function which returns the last day of a month. The function is like this:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/Media/111109_0347_Getthelastd1.png" alt="" height="296" width="563"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/Media/111109_0347_Getthelastd2.png" alt="" height="364" width="812"/&gt;&lt;/p&gt;
&lt;p&gt;In &lt;a href="http://www.yaldex.com"&gt;Javascript Editor&lt;/a&gt;, it works like the above picture.&lt;/p&gt;
&lt;p&gt;But in VS2008, it's strange.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/Media/111109_0347_Getthelastd3.png" alt="" height="373" width="569"/&gt;&lt;/p&gt;
&lt;p&gt;I am very strange for this, then I &lt;a href="http://www.bing.com"&gt;Bing&lt;/a&gt;,&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.w3schools.com/jsref/jsref_parseInt.asp"&gt;http://www.w3schools.com/jsref/jsref_parseInt.asp&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;See the fuction parseInt(string, radix)&lt;/p&gt;
&lt;p&gt;String: the value you want to convert to number.&lt;/p&gt;
&lt;p&gt;Rules:&lt;/p&gt;
&lt;p&gt;&lt;span style="BACKGROUND-COLOR: yellow"&gt;If the string begins with "0x", the radix is 16 (hexadecimal)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="BACKGROUND-COLOR: yellow"&gt;If the string begins with "0", the radix is 8 (octal). This feature is deprecated&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="BACKGROUND-COLOR: yellow"&gt;If the string begins with any other value, the radix is 10 (decimal)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Then, I change my codes&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9pt"&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; month = parseInt(strs[1]);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9pt"&gt;to&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-FAMILY: Consolas; FONT-SIZE: 9pt"&gt;&lt;span style="COLOR: blue"&gt;var&lt;/span&gt; month = parseInt(strs[1],10);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;It functions.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.yaldex.com"&gt;Javascript Editor&lt;/a&gt; seems not function well.&lt;/p&gt;
&lt;p&gt;====================================================================
&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;The JS codes have something wrong. I change it to this:
&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;var strs = p_InputMonth.split("/");
&lt;br/&gt;
var year = parseInt(strs[0]);
&lt;br/&gt;
var month = parseInt(strs[1], 10);
&lt;br/&gt;
&lt;span style="FONT-STYLE: italic"&gt;var date = new Date(year,month,&lt;/span&gt; &lt;span style="FONT-STYLE: italic; FONT-WEIGHT: bold"&gt;0&lt;/span&gt; &lt;span style="FONT-STYLE: italic"&gt;);&lt;/span&gt; &lt;span style="FONT-WEIGHT: bold; TEXT-DECORATION: underline"&gt;0: the last day of the month. (Month Index: 0...11)&lt;/span&gt;
&lt;br/&gt;
var lastDay = date.getDate();&lt;/p&gt;
&lt;p&gt;When i use new Date(2009,9,iDay) or Date.setDate(iDay) in &lt;a href="http://www.yaldex.com/"&gt;Javascript Editor&lt;/a&gt;, if iDay is not in (1...31) , it will pop an error message "It's a not valid parameter."&lt;/p&gt;
&lt;p&gt;but in IE, the js codes work well.
&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;====================================================================&lt;/p&gt;
&lt;p&gt;date.setFullYear(year, month+1,1);
&lt;br/&gt;
date = new Date(date/86400000);
&lt;br/&gt;
var lastDay =date.getDate();
&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;In Javascript Editor, i must use "/", but in IE i should use "-"&lt;/p&gt;
&lt;p&gt;====================================================================&lt;/p&gt;
&lt;p&gt;&lt;span style="FONT-STYLE: italic; FONT-WEIGHT: bold; TEXT-DECORATION: underline"&gt;Why Javascript Editor is different with IE? is it just because my JS Editor is free version???&lt;/span&gt;
&lt;br/&gt;&lt;/p&gt;
</description><pubDate>Wed, 11 Nov 2009 03:47:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/get-the-last-day-of-the-month-use-javascript-in-vs2008</guid><category>Javascript</category><category>Notes</category><category>WinForms</category><category>Xml</category></item><item><title>Use UdpClient to send and receive message</title><link>https://weblogs.asp.net:443/yonggangmeng/use-udpclient-to-send-and-receive-message</link><description>&lt;DIV class=csharpcode&gt;
&lt;DIV class=csharpcode&gt;Client to receive message sent by server:&lt;/DIV&gt;
&lt;DIV class=csharpcode&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   1:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   2:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Collections.Generic;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   3:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.ComponentModel;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   4:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Data;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   5:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Drawing;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   6:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Linq;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   7:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Text;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   8:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Windows.Forms;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   9:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Net.Sockets;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  10:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Threading;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  11:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Net;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  12:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  13:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;namespace&lt;/SPAN&gt; NoticeSystemClient&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  14:  &lt;/SPAN&gt;{&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  15:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;partial&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; MainForm : Form&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  16:  &lt;/SPAN&gt;    {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  17:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;delegate&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; ShowMessage(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; message);&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  18:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; ShowMessage myDelegate;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  19:  &lt;/SPAN&gt;        Int32 port = 11000;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  20:  &lt;/SPAN&gt;        &lt;FONT color=#ff0000&gt;UdpClient udpClient = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; UdpClient(11000);&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  21:  &lt;/SPAN&gt;        Thread thread;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  22:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; MainForm()&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  23:  &lt;/SPAN&gt;        {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  24:  &lt;/SPAN&gt;            &lt;SPAN class=rem&gt;//CheckForIllegalCrossThreadCalls = false;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  25:  &lt;/SPAN&gt;            InitializeComponent();&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  26:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  27:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  28:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; MainForm_KeyDown(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, KeyEventArgs e)&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  29:  &lt;/SPAN&gt;        {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  30:  &lt;/SPAN&gt;            &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (e.KeyCode == Keys.Escape)&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  31:  &lt;/SPAN&gt;            {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  32:  &lt;/SPAN&gt;                thread.Abort();&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  33:  &lt;/SPAN&gt;                udpClient.Close();&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  34:  &lt;/SPAN&gt;                Close();&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  35:  &lt;/SPAN&gt;            }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  36:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  37:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  38:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; ReceiveMessage()&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  39:  &lt;/SPAN&gt;        {                      &lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  40:  &lt;/SPAN&gt;            &lt;SPAN class=kwrd&gt;while&lt;/SPAN&gt; (&lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  41:  &lt;/SPAN&gt;            {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  42:  &lt;/SPAN&gt;                IPEndPoint remoteIPEndPoint = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; IPEndPoint(IPAddress.Any, port);&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  43:  &lt;/SPAN&gt;                &lt;SPAN class=kwrd&gt;byte&lt;/SPAN&gt;[] content = udpClient.Receive(&lt;SPAN class=kwrd&gt;ref&lt;/SPAN&gt; remoteIPEndPoint);&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  44:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  45:  &lt;/SPAN&gt;                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (content.Length &amp;gt; 0)&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  46:  &lt;/SPAN&gt;                {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  47:  &lt;/SPAN&gt;                    &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; message = Encoding.ASCII.GetString(content);&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  48:  &lt;/SPAN&gt;                    &lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  49:  &lt;/SPAN&gt;                    &lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.Invoke(myDelegate, &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt;[] { message });&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  50:  &lt;/SPAN&gt;                }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  51:  &lt;/SPAN&gt;            }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  52:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  53:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  54:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  55:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; ShowMessageMethod(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; message)&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  56:  &lt;/SPAN&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  57:  &lt;/SPAN&gt;            richText.Text = message;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  58:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  59:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  60:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; MainForm_Load(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, EventArgs e)&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  61:  &lt;/SPAN&gt;        {            &lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  62:  &lt;/SPAN&gt;            myDelegate = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; ShowMessage(ShowMessageMethod);&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  63:  &lt;/SPAN&gt;            thread = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Thread(&lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; ThreadStart(ReceiveMessage));&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  64:  &lt;/SPAN&gt;            thread.IsBackground = &lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  65:  &lt;/SPAN&gt;            thread.Start();&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  66:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  67:  &lt;/SPAN&gt;    }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  68:  &lt;/SPAN&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;
&lt;/DIV&gt;
&lt;P&gt;Server:&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   1:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   2:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Collections.Generic;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   3:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.ComponentModel;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   4:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Data;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   5:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Drawing;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   6:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Linq;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   7:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Text;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   8:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Windows.Forms;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   9:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Net.Sockets;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  10:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Net;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  11:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  12:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;namespace&lt;/SPAN&gt; NoticeSystem&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  13:  &lt;/SPAN&gt;{&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  14:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;partial&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; MainForm : Form&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  15:  &lt;/SPAN&gt;    {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  16:  &lt;/SPAN&gt;        UdpClient udpClient = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; UdpClient();&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  17:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; MainForm()&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  18:  &lt;/SPAN&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  19:  &lt;/SPAN&gt;            InitializeComponent();&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  20:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  21:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  22:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; btnClose_Click(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, EventArgs e)&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  23:  &lt;/SPAN&gt;        {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  24:  &lt;/SPAN&gt;            udpClient.Close();&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  25:  &lt;/SPAN&gt;            Close();&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  26:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  27:  &lt;/SPAN&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  28:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; btnSend_Click(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; sender, EventArgs e)&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  29:  &lt;/SPAN&gt;        {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  30:  &lt;/SPAN&gt;            Int32 port = 11000;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  31:  &lt;/SPAN&gt;            IPAddress ip = IPAddress.Parse(txtStartIP.Text.Trim());&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  32:  &lt;/SPAN&gt;            IPEndPoint ipEndPoint = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; IPEndPoint(ip,port);&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  33:  &lt;/SPAN&gt;            &lt;SPAN class=kwrd&gt;byte&lt;/SPAN&gt;[] content = Encoding.ASCII.GetBytes(richText.Text);&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  34:  &lt;/SPAN&gt;            &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  35:  &lt;/SPAN&gt;            {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  36:  &lt;/SPAN&gt;                &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; count = udpClient.Send(content, content.Length, ipEndPoint);&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  37:  &lt;/SPAN&gt;                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (count &amp;gt; 0)&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  38:  &lt;/SPAN&gt;                {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  39:  &lt;/SPAN&gt;                    MessageBox.Show(&lt;SPAN class=str&gt;"Message has been sent."&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"Information"&lt;/SPAN&gt;, MessageBoxButtons.OK, MessageBoxIcon.Information);&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  40:  &lt;/SPAN&gt;                }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  41:  &lt;/SPAN&gt;            }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  42:  &lt;/SPAN&gt;            &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  43:  &lt;/SPAN&gt;            {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  44:  &lt;/SPAN&gt;                MessageBox.Show(&lt;SPAN class=str&gt;"Error occurs."&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"Exclamation"&lt;/SPAN&gt;, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  45:  &lt;/SPAN&gt;            }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  46:  &lt;/SPAN&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  47:  &lt;/SPAN&gt;    }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  48:  &lt;/SPAN&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P&gt;There’s no more to say but the Client source code, red words.&lt;/P&gt;
&lt;P&gt;We must indicate the port of the UdpClient, otherwise, it will pop errors.&lt;/P&gt;
&lt;P&gt;code:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;UdpClient udpClient = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; UdpClient(11000);&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;At the outset, i don’t indicate the port, so when i debug the code, there’s nothing happen on client side.&lt;/P&gt;
&lt;P&gt;Source code disassembled by &lt;A href="http://www.red-gate.com/products/reflector/" target=_blank mce_href="http://www.red-gate.com/products/reflector/"&gt;Red Gate’s .Net Reflector&lt;/A&gt; of the UdpClient:&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   1:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; UdpClient(&lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; port) : &lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;(port, AddressFamily.InterNetwork)&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   2:  &lt;/SPAN&gt;{&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   3:  &lt;/SPAN&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;

&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   1:  &lt;/SPAN&gt;&lt;SPAN class=kwrd&gt;public&lt;/SPAN&gt; UdpClient(&lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; port, AddressFamily family)&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   2:  &lt;/SPAN&gt;{&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   3:  &lt;/SPAN&gt;    IPEndPoint point;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   4:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.m_Buffer = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;byte&lt;/SPAN&gt;[0x10000];&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   5:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.m_Family = AddressFamily.InterNetwork;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   6:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (!ValidationHelper.ValidateTcpPort(port))&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   7:  &lt;/SPAN&gt;    {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;   8:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;throw&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; ArgumentOutOfRangeException(&lt;SPAN class=str&gt;"port"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;   9:  &lt;/SPAN&gt;    }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  10:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; ((family != AddressFamily.InterNetwork) &amp;amp;&amp;amp; (family != AddressFamily.InterNetworkV6))&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  11:  &lt;/SPAN&gt;    {&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  12:  &lt;/SPAN&gt;        &lt;SPAN class=kwrd&gt;throw&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; ArgumentException(SR.GetString(&lt;SPAN class=str&gt;"net_protocol_invalid_family"&lt;/SPAN&gt;), &lt;SPAN class=str&gt;"family"&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  13:  &lt;/SPAN&gt;    }&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  14:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.m_Family = family;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  15:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (&lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.m_Family == AddressFamily.InterNetwork)&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  16:  &lt;/SPAN&gt;    {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  17:  &lt;/SPAN&gt;        point = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; IPEndPoint(IPAddress.Any, port);&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  18:  &lt;/SPAN&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  19:  &lt;/SPAN&gt;    &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  20:  &lt;/SPAN&gt;    {&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  21:  &lt;/SPAN&gt;        point = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; IPEndPoint(IPAddress.IPv6Any, port);&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  22:  &lt;/SPAN&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  23:  &lt;/SPAN&gt;    &lt;FONT color=#ff0000&gt;&lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.createClientSocket();&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=lnum&gt;  24:  &lt;/SPAN&gt;    &lt;FONT color=#ff0000&gt;&lt;SPAN class=kwrd&gt;this&lt;/SPAN&gt;.Client.Bind(point);&lt;/FONT&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=lnum&gt;  25:  &lt;/SPAN&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;DIV class=csharpcode&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=csharpcode&gt;You will find that the UdpClient need a port to bind to to listen the IPENDPOINT.&lt;/DIV&gt;
&lt;STYLE type=text/css&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/STYLE&gt;</description><pubDate>Thu, 21 May 2009 23:05:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/use-udpclient-to-send-and-receive-message</guid><category>.Net</category><category>C#</category><category>UdpClient</category><category>WinForms</category></item><item><title>Excel data type seems strange when use ado.net to select</title><link>https://weblogs.asp.net:443/yonggangmeng/excel-data-type-seems-strange-when-use-ado-net-to-select</link><description>&lt;p&gt;Recently, we need import some data from excel to&amp;#160; Oracle database. A strange thing confused me.&lt;/p&gt;  &lt;p&gt;The excel file has a column, for example PhoneNumber, the format is 999999, &lt;/p&gt;  &lt;p&gt;here are some example data:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;123456 &lt;/li&gt;    &lt;li&gt;234561 &lt;/li&gt;    &lt;li&gt;345612 &lt;/li&gt;    &lt;li&gt;456123 &lt;/li&gt;    &lt;li&gt;561234 &lt;/li&gt;    &lt;li&gt;612345 &lt;/li&gt;    &lt;li&gt;000123 &lt;/li&gt;    &lt;li&gt;000231 &lt;/li&gt;    &lt;li&gt;000312 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;When i use the following code to select data, something is strange.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; strConn = &lt;span class="str"&gt;&amp;quot;Provider=Microsoft.Jet.OLEDB.4.0;&amp;quot;&lt;/span&gt; + &lt;span class="str"&gt;&amp;quot;Data Source=&amp;quot;&lt;/span&gt; + ftpFile.PostedFile.FileName + &lt;span class="str"&gt;&amp;quot;;&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;                 + &lt;span class="str"&gt;&amp;quot;Extended Properties=\&amp;quot;Excel 8.0;IMEX=1\&amp;quot;&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;DataSet ds = &lt;span class="kwrd"&gt;new&lt;/span&gt; DataSet();&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;string&lt;/span&gt; strSql = &lt;span class="str"&gt;&amp;quot;select * from [Sheet1$]&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; (OleDbDataAdapter adp = &lt;span class="kwrd"&gt;new&lt;/span&gt; OleDbDataAdapter(strSql, strConn))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;      adp.Fill(ds, &lt;span class="str"&gt;&amp;quot;Phone&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;view the ds data, you will find this:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;123456 &lt;/li&gt;

  &lt;li&gt;234561 &lt;/li&gt;

  &lt;li&gt;345612 &lt;/li&gt;

  &lt;li&gt;456123 &lt;/li&gt;

  &lt;li&gt;561234 &lt;/li&gt;

  &lt;li&gt;612345 &lt;/li&gt;

  &lt;li&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;/li&gt;

  &lt;li&gt;&lt;/li&gt;

  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;if i change the number format to text, i still can not retrieve the number start with 000.&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;I don’t know why, finally i change every number to string in excel file. for example: 123456---&amp;gt; ‘123456 and 000123---&amp;gt;’000123. it works.&lt;/p&gt;

&lt;p&gt;anyone who has a good solution for this?&lt;/p&gt;</description><pubDate>Thu, 21 May 2009 21:59:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/excel-data-type-seems-strange-when-use-ado-net-to-select</guid><category>.Net</category><category>C#</category><category>Excel</category><category>Questions</category></item><item><title>Problem about SQLite and Linq to Entities</title><link>https://weblogs.asp.net:443/yonggangmeng/problem-about-sqlite-and-linq-to-entities</link><description>&lt;P&gt;I have a web project developed in VS2008, which use System.Data.SQLite for .Net 2.0 and Linq to Entities to access data.&lt;/P&gt;
&lt;P&gt;Here is the source layout:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_2.png" mce_href="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; BORDER-LEFT: 0px; MARGIN-RIGHT: 0px; BORDER-BOTTOM: 0px" height=484 alt=image src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_thumb.png" width=251 align=left border=0 mce_src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_4.png" mce_href="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; BORDER-LEFT: 0px; MARGIN-RIGHT: auto; BORDER-BOTTOM: 0px" height=484 alt=image src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_thumb_1.png" width=298 border=0 mce_src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_12.png" mce_href="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_12.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=484 alt=image src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_thumb_5.png" width=317 border=0 mce_src="https://aspblogs.blob.core.windows.net/media/yonggangmeng/WindowsLiveWriter/ProblemaboutSQLiteandLinqtoEntities_14A74/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;You can see that i have a SQLite database Test_DB.db3 in SQLite folder. In my develop machine, i use connectiongstring created by Linq to Entities named “Test_DBEntities”, and don’t have the DBProviderFactories section, it run well. The Default.aspx page display data and the pages in Admin folder manage the data.&lt;/P&gt;
&lt;P&gt;I publish the website in my product machine, it can not run, the error is “Could not load the assembly System.Data.SQLite”,&lt;/P&gt;
&lt;P&gt;I search a solution, which ask me add the DBProviderFactories to the web.config file and add new reference to System.Data.SQLite.Linq.ddl. After do this, i can view the Default.aspx which display data. But i can not manage my data through the pages in Admin folder. I get error “Can not open the database file”, some people said the database can not in App_Data, but my file is not in App_Data, i still get the error.&lt;/P&gt;
&lt;P&gt;I feel strange when i view the default.aspx, Test.edmx get data successfully, but when i view pages in Admin, for example, Manage.aspx, it will get the error “Can not open the database file”, The Manage.aspx get data only, no else. Following is my code to access data:&lt;/P&gt;
&lt;P&gt;using (Test_DBEntities osDataContext = new Test_DBEntities(Common.GetConnString())) &lt;BR&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OS_Module module = osDataContext.OS_Module.First&amp;lt;OS_Module&amp;gt;(m =&amp;gt; m.Status == "Y" &amp;amp;&amp;amp; m.ModuleValue == this.ModuleValue); &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.modelTitle.InnerHtml = module.ModuleTitle; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.modelDetail.InnerHtml = Server.HtmlDecode(module.ModuleDetail); &lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;I can use Default.aspx display different data, which get data successfully each time, but when display data use Manage.aspx in Admin folder, i will get the error “Can not open the database file”.&lt;/P&gt;
&lt;P&gt;Any one who gets a solution, please comment here. Thanks very much!&lt;/P&gt;</description><pubDate>Mon, 30 Mar 2009 06:29:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/problem-about-sqlite-and-linq-to-entities</guid><category>Asp.net</category><category>Linq to Entities</category><category>SQLite</category></item><item><title>Export data to excel or word</title><link>https://weblogs.asp.net:443/yonggangmeng/export-data-to-excel-or-word</link><description>&lt;P&gt;In the actual develpment, we offen encounter such a problem about exporting data to excel or word, especially excel.&lt;/P&gt;
&lt;P&gt;I can export data to excel from gridview, but i can not apply styles to the excel cell. Last week, i found how to set the style.&lt;/P&gt;
&lt;P&gt;For example:&lt;/P&gt;
&lt;P&gt;the following is from:&lt;A title=http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats href="http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats" mce_href="http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats"&gt;http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;?xml version="1.0"?&amp;gt; &lt;BR&gt;&amp;lt;?mso-application progid="Excel.Sheet"?&amp;gt; &lt;BR&gt;&amp;lt;Workbook &lt;BR&gt;&amp;nbsp;&amp;nbsp; xmlns="urn:schemas-microsoft-com:office:spreadsheet" &lt;BR&gt;&amp;nbsp;&amp;nbsp; xmlns:o="urn:schemas-microsoft-com:office:office" &lt;BR&gt;&amp;nbsp;&amp;nbsp; xmlns:x="urn:schemas-microsoft-com:office:excel" &lt;BR&gt;&amp;nbsp;&amp;nbsp; xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" &lt;BR&gt;&amp;nbsp;&amp;nbsp; xmlns:html="http://www.w3.org/TR/REC-html40"&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Author&amp;gt;Darl McBride&amp;lt;/Author&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LastAuthor&amp;gt;Bill Gates&amp;lt;/LastAuthor&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Created&amp;gt;2007-03-15T23:04:04Z&amp;lt;/Created&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Company&amp;gt;SCO Group, Inc.&amp;lt;/Company&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Version&amp;gt;11.8036&amp;lt;/Version&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/DocumentProperties&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WindowHeight&amp;gt;6795&amp;lt;/WindowHeight&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WindowWidth&amp;gt;8460&amp;lt;/WindowWidth&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WindowTopX&amp;gt;120&amp;lt;/WindowTopX&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WindowTopY&amp;gt;15&amp;lt;/WindowTopY&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProtectStructure&amp;gt;False&amp;lt;/ProtectStructure&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProtectWindows&amp;gt;False&amp;lt;/ProtectWindows&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/ExcelWorkbook&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;Styles&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#151eb7&gt;&amp;lt;Style &lt;FONT color=#ff0000&gt;ss:ID="Default"&lt;/FONT&gt; ss:Name="Normal"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Alignment ss:Vertical="Bottom" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Borders /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Font /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Interior /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;NumberFormat /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Protection /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Style&amp;gt; &lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Style &lt;FONT color=#ff0000&gt;ss:ID="s21"&lt;/FONT&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Font x:Family="Swiss" ss:Bold="1" /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Style&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/Styles&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;Worksheet ss:Name="Sheet1"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Table ss:ExpandedColumnCount="2" ss:ExpandedRowCount="5" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; x:FullColumns="1" x:FullRows="1"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Row&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Cell&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data ss:Type="String"&amp;gt;Text in cell A1&amp;lt;/Data&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Cell&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Row&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Row&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Cell &lt;FONT color=#ff0000&gt;ss:StyleID="s21"&lt;/FONT&gt;&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data ss:Type="String"&amp;gt;Bold text in A2&amp;lt;/Data&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Cell&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Row&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Row ss:Index="4"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Cell ss:Index="2"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data ss:Type="Number"&amp;gt;43&amp;lt;/Data&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Cell&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Row&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Row&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Cell ss:Index="2" ss:Formula="=R[-1]C/2"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Data ss:Type="Number"&amp;gt;21.5&amp;lt;/Data&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Cell&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Row&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Table&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Print&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ValidPrinterInfo /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;HorizontalResolution&amp;gt;600&amp;lt;/HorizontalResolution&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;VerticalResolution&amp;gt;600&amp;lt;/VerticalResolution&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Print&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Selected /&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Panes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Pane&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Number&amp;gt;3&amp;lt;/Number&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ActiveRow&amp;gt;5&amp;lt;/ActiveRow&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ActiveCol&amp;gt;1&amp;lt;/ActiveCol&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Pane&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Panes&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProtectObjects&amp;gt;False&amp;lt;/ProtectObjects&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProtectScenarios&amp;gt;False&amp;lt;/ProtectScenarios&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/WorksheetOptions&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/Worksheet&amp;gt; &lt;BR&gt;&amp;lt;/Workbook&amp;gt; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;And i found a open source project &lt;/STRONG&gt;&lt;A title=http://excelpackage.codeplex.com/ href="http://excelpackage.codeplex.com/" mce_href="http://excelpackage.codeplex.com/"&gt;&lt;STRONG&gt;http://excelpackage.codeplex.com/&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; which can easily create ooxml.&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;The same as excel, we can export data to word:&lt;/P&gt;&lt;PRE&gt;&amp;lt;?xml version="1.0" encoding="utf-8" standalone="yes"?&amp;gt;
&amp;lt;?mso-application progid="Word.Document"?&amp;gt;
&amp;lt;w:wordDocument
   xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
   xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
   xmlns:o="urn:schemas-microsoft-com:office:office"
   w:macrosPresent="no"
   w:embeddedObjPresent="no"
   w:ocxPresent="no"
   xml:space="preserve"&amp;gt;
  &amp;lt;o:DocumentProperties&amp;gt;
    &amp;lt;o:Title&amp;gt;This is the title&amp;lt;/o:Title&amp;gt;
    &amp;lt;o:Author&amp;gt;Darl McBride&amp;lt;/o:Author&amp;gt;
    &amp;lt;o:LastAuthor&amp;gt;Bill Gates&amp;lt;/o:LastAuthor&amp;gt;
    &amp;lt;o:Revision&amp;gt;1&amp;lt;/o:Revision&amp;gt;
    &amp;lt;o:TotalTime&amp;gt;0&amp;lt;/o:TotalTime&amp;gt;
    &amp;lt;o:Created&amp;gt;2007-03-15T23:05:00Z&amp;lt;/o:Created&amp;gt;
    &amp;lt;o:LastSaved&amp;gt;2007-03-15T23:05:00Z&amp;lt;/o:LastSaved&amp;gt;
    &amp;lt;o:Pages&amp;gt;1&amp;lt;/o:Pages&amp;gt;
    &amp;lt;o:Words&amp;gt;6&amp;lt;/o:Words&amp;gt;
    &amp;lt;o:Characters&amp;gt;40&amp;lt;/o:Characters&amp;gt;
    &amp;lt;o:Company&amp;gt;SCO Group, Inc.&amp;lt;/o:Company&amp;gt;
    &amp;lt;o:Lines&amp;gt;1&amp;lt;/o:Lines&amp;gt;
    &amp;lt;o:Paragraphs&amp;gt;1&amp;lt;/o:Paragraphs&amp;gt;
    &amp;lt;o:CharactersWithSpaces&amp;gt;45&amp;lt;/o:CharactersWithSpaces&amp;gt;
    &amp;lt;o:Version&amp;gt;11.6359&amp;lt;/o:Version&amp;gt;
  &amp;lt;/o:DocumentProperties&amp;gt;
  &amp;lt;w:fonts&amp;gt;
    &amp;lt;w:defaultFonts
       w:ascii="Times New Roman"
       w:fareast="Times New Roman"
       w:h-ansi="Times New Roman"
       w:cs="Times New Roman" /&amp;gt;
  &amp;lt;/w:fonts&amp;gt;
  &amp;lt;w:styles&amp;gt;
    &amp;lt;w:versionOfBuiltInStylenames w:val="4" /&amp;gt;
    &amp;lt;w:latentStyles w:defLockedState="off" w:latentStyleCount="156" /&amp;gt;
    &amp;lt;w:style w:type="paragraph" w:default="on" w:styleId="Normal"&amp;gt;
      &amp;lt;w:name w:val="Normal" /&amp;gt;
      &amp;lt;w:rPr&amp;gt;
        &amp;lt;wx:font wx:val="Times New Roman" /&amp;gt;
        &amp;lt;w:sz w:val="24" /&amp;gt;
        &amp;lt;w:sz-cs w:val="24" /&amp;gt;
        &amp;lt;w:lang w:val="EN-US" w:fareast="EN-US" w:bidi="AR-SA" /&amp;gt;
      &amp;lt;/w:rPr&amp;gt;
    &amp;lt;/w:style&amp;gt;
    &amp;lt;w:style w:type="paragraph" w:styleId="Heading1"&amp;gt;
      &amp;lt;w:name w:val="heading 1" /&amp;gt;
      &amp;lt;wx:uiName wx:val="Heading 1" /&amp;gt;
      &amp;lt;w:basedOn w:val="Normal" /&amp;gt;
      &amp;lt;w:next w:val="Normal" /&amp;gt;
      &amp;lt;w:rsid w:val="00D93B94" /&amp;gt;
      &amp;lt;w:pPr&amp;gt;
        &amp;lt;w:pStyle w:val="Heading1" /&amp;gt;
        &amp;lt;w:keepNext /&amp;gt;
        &amp;lt;w:spacing w:before="240" w:after="60" /&amp;gt;
        &amp;lt;w:outlineLvl w:val="0" /&amp;gt;
      &amp;lt;/w:pPr&amp;gt;
      &amp;lt;w:rPr&amp;gt;
        &amp;lt;w:rFonts w:ascii="Arial" w:h-ansi="Arial" w:cs="Arial" /&amp;gt;
        &amp;lt;wx:font wx:val="Arial" /&amp;gt;
        &amp;lt;w:b /&amp;gt;
        &amp;lt;w:b-cs /&amp;gt;
        &amp;lt;w:kern w:val="32" /&amp;gt;
        &amp;lt;w:sz w:val="32" /&amp;gt;
        &amp;lt;w:sz-cs w:val="32" /&amp;gt;
      &amp;lt;/w:rPr&amp;gt;
    &amp;lt;/w:style&amp;gt;
    &amp;lt;w:style w:type="character" w:default="on" w:styleId="DefaultParagraphFont"&amp;gt;
      &amp;lt;w:name w:val="Default Paragraph Font" /&amp;gt;
      &amp;lt;w:semiHidden /&amp;gt;
    &amp;lt;/w:style&amp;gt;
    &amp;lt;w:style w:type="table" w:default="on" w:styleId="TableNormal"&amp;gt;
      &amp;lt;w:name w:val="Normal Table" /&amp;gt;
      &amp;lt;wx:uiName wx:val="Table Normal" /&amp;gt;
      &amp;lt;w:semiHidden /&amp;gt;
      &amp;lt;w:rPr&amp;gt;
        &amp;lt;wx:font wx:val="Times New Roman" /&amp;gt;
      &amp;lt;/w:rPr&amp;gt;
      &amp;lt;w:tblPr&amp;gt;
        &amp;lt;w:tblInd w:w="0" w:type="dxa" /&amp;gt;
        &amp;lt;w:tblCellMar&amp;gt;
          &amp;lt;w:top w:w="0" w:type="dxa" /&amp;gt;
          &amp;lt;w:left w:w="108" w:type="dxa" /&amp;gt;
          &amp;lt;w:bottom w:w="0" w:type="dxa" /&amp;gt;
          &amp;lt;w:right w:w="108" w:type="dxa" /&amp;gt;
        &amp;lt;/w:tblCellMar&amp;gt;
      &amp;lt;/w:tblPr&amp;gt;
    &amp;lt;/w:style&amp;gt;
    &amp;lt;w:style w:type="list" w:default="on" w:styleId="NoList"&amp;gt;
      &amp;lt;w:name w:val="No List" /&amp;gt;
      &amp;lt;w:semiHidden /&amp;gt;
    &amp;lt;/w:style&amp;gt;
  &amp;lt;/w:styles&amp;gt;
  &amp;lt;w:docPr&amp;gt;
    &amp;lt;w:view w:val="print" /&amp;gt;
    &amp;lt;w:zoom w:percent="100" /&amp;gt;
    &amp;lt;w:doNotEmbedSystemFonts /&amp;gt;
    &amp;lt;w:proofState w:spelling="clean" w:grammar="clean" /&amp;gt;
    &amp;lt;w:attachedTemplate w:val="" /&amp;gt;
    &amp;lt;w:defaultTabStop w:val="720" /&amp;gt;
    &amp;lt;w:punctuationKerning /&amp;gt;
    &amp;lt;w:characterSpacingControl w:val="DontCompress" /&amp;gt;
    &amp;lt;w:optimizeForBrowser /&amp;gt;
    &amp;lt;w:validateAgainstSchema /&amp;gt;
    &amp;lt;w:saveInvalidXML w:val="off" /&amp;gt;
    &amp;lt;w:ignoreMixedContent w:val="off" /&amp;gt;
    &amp;lt;w:alwaysShowPlaceholderText w:val="off" /&amp;gt;
    &amp;lt;w:compat&amp;gt;
      &amp;lt;w:breakWrappedTables /&amp;gt;
      &amp;lt;w:snapToGridInCell /&amp;gt;
      &amp;lt;w:wrapTextWithPunct /&amp;gt;
      &amp;lt;w:useAsianBreakRules /&amp;gt;
      &amp;lt;w:dontGrowAutofit /&amp;gt;
    &amp;lt;/w:compat&amp;gt;
  &amp;lt;/w:docPr&amp;gt;
  &amp;lt;w:body&amp;gt;
    &amp;lt;wx:sect&amp;gt;
      &amp;lt;w:p&amp;gt;
        &amp;lt;w:r&amp;gt;
          &amp;lt;w:t&amp;gt;This is the first paragraph&amp;lt;/w:t&amp;gt;
        &amp;lt;/w:r&amp;gt;
      &amp;lt;/w:p&amp;gt;
      &amp;lt;wx:sub-section&amp;gt;
        &amp;lt;w:p&amp;gt;
          &amp;lt;w:pPr&amp;gt;
            &amp;lt;w:pStyle w:val="Heading1" /&amp;gt;
          &amp;lt;/w:pPr&amp;gt;
          &amp;lt;w:r&amp;gt;
            &amp;lt;w:t&amp;gt;This is a heading&amp;lt;/w:t&amp;gt;
          &amp;lt;/w:r&amp;gt;
        &amp;lt;/w:p&amp;gt;
        &amp;lt;w:sectPr&amp;gt;
          &amp;lt;w:pgSz w:w="12240" w:h="15840" /&amp;gt;
          &amp;lt;w:pgMar w:top="1440"
		   w:right="1800"
		   w:bottom="1440"
		   w:left="1800"
		   w:header="720"
		   w:footer="720"
		   w:gutter="0" /&amp;gt;
          &amp;lt;w:cols w:space="720" /&amp;gt;
          &amp;lt;w:docGrid w:line-pitch="360" /&amp;gt;
        &amp;lt;/w:sectPr&amp;gt;
      &amp;lt;/wx:sub-section&amp;gt;
    &amp;lt;/wx:sect&amp;gt;
  &amp;lt;/w:body&amp;gt;
&amp;lt;/w:wordDocument&amp;gt;&lt;/PRE&gt;
&lt;P&gt;If we want to export some complex data to excel, we can create the xml manually, apply every style we like we want&lt;/P&gt;</description><pubDate>Wed, 04 Mar 2009 06:14:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/export-data-to-excel-or-word</guid><category>.Net</category><category>Asp.net</category><category>Excel</category><category>Xml</category></item><item><title>SQL 表信息问题</title><link>https://weblogs.asp.net:443/yonggangmeng/sql</link><description>&lt;P mce_keep="true"&gt;若要查看表的列名，可以使用 sp_help 或下列查询之一：SELECT name FROM sys.columns WHERE OBJECT_ID IN (SELECT OBJECT_ID ('table_name')) 或 SELECT TOP 0 * FROM table_name。 &lt;BR&gt;1.&amp;nbsp;&amp;nbsp; Execute sp_help tablename&amp;nbsp; 如: Execute sp_help 'Schedule'&lt;BR&gt;2.&amp;nbsp;&amp;nbsp; Select Top 0 * From tablename 如：Select Top 0 * From 'Schedule'&lt;BR&gt;3.&amp;nbsp;&amp;nbsp; Select name From sys.columns where Object_Id In (Select Object_Id(tablename)) 如： Select name From sys.columns where Object_Id In (Select Object_Id('Schedule'))&lt;BR&gt;三种的区别如下： &lt;BR&gt;1.&amp;nbsp;&amp;nbsp; 可以得到table的详细信息，可以得到五个表&lt;BR&gt;2.&amp;nbsp;&amp;nbsp; 一个无记录行的表结构&lt;BR&gt;3.&amp;nbsp;&amp;nbsp; 一个单列表，列名name，内容是表的列名称&lt;/P&gt;</description><pubDate>Fri, 28 Nov 2008 11:54:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/sql</guid><category>SQL</category><category>SQLServer</category></item><item><title>How to invoke PageMethods in MasterPage</title><link>https://weblogs.asp.net:443/yonggangmeng/how-to-invoke-pagemethods-in-masterpage</link><description>&lt;DIV&gt;&lt;FONT size=2 face=Arial&gt;&lt;SPAN class=271272805-12112008&gt;I&amp;nbsp;have a web project, in the project, there is a MasterPage&amp;nbsp;and some WebContentPages.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Arial&gt;&lt;SPAN class=271272805-12112008&gt;In the MasterPage, there is a function, when you click a button, show or hide&amp;nbsp;the left content.When you refresh&amp;nbsp;or navigate other WebContentPage, the left content keeps its display style.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT size=2 face=Arial&gt;&lt;SPAN class=271272805-12112008&gt;Here is my first solution:&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff00ff size=2 face=Arial&gt;&lt;SPAN class=271272805-12112008&gt;&lt;STRONG&gt;MasterPage.Master:&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT color=#ff00ff size=2 face=Arial&gt;&lt;SPAN class=271272805-12112008&gt;
&lt;HR&gt;
&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;FONT face=Arial&gt;&lt;SPAN class=271272805-12112008&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;div&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt; &lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="left"&lt;/SPAN&gt; &lt;SPAN style="COLOR: red"&gt;style&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;='&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/SPAN&gt;=string.Format("display:{0}",GetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag())&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;'&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;div&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: #a31515; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;div&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: red"&gt;id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="buttons_left"&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;img&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: red"&gt;alt&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="Move Left"&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: red"&gt;onclick&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;="switchView('left',this);"&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: red"&gt;src&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;='&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;&amp;lt;%&lt;/SPAN&gt;=GetImgSrc()&lt;SPAN style="BACKGROUND: yellow; mso-highlight: yellow"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;'&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;div&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;Remember to set the EnablePageMethods = "True"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT color=#000000 face=Arial&gt;
&lt;DIV&gt;
&lt;HR&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;FONT face=Arial&gt;&lt;FONT color=#ff00ff&gt;&lt;STRONG&gt;&lt;SPAN class=271272805-12112008&gt;MasterPage.Master.&lt;/SPAN&gt;CS:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;/DIV&gt;
&lt;DIV&gt;
&lt;HR&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; GetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt; &lt;/DIV&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;FONT color=#000000 face=Arial&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;return&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;HttpContext&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Current.Session[&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"ToolbarDisplay"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;] == &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;&lt;FONT color=#000000&gt; ? &lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"block"&lt;/SPAN&gt;&lt;FONT color=#000000&gt; : &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;HttpContext&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Current.Session[&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"ToolbarDisplay"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;].ToString();&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; GetImgSrc()&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(GetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag() == &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Empty || GetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag() == &lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"block"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"../App_Themes/images/s_left.gif"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"../App_Themes/images/s_right.gif"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;[&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;WebMethod&lt;/SPAN&gt;&lt;FONT color=#000000&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; SetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; flag)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;HttpContext&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Current.Session[&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"ToolbarDisplay"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;]&amp;nbsp;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;= flag;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;
&lt;DIV&gt;
&lt;HR&gt;
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;STRONG&gt;&lt;FONT color=#ff00ff&gt;JS:&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;
&lt;DIV&gt;
&lt;HR&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt; switchView(objname,current)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;var&lt;/SPAN&gt;&lt;FONT color=#000000&gt; obj = $get(objname);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(obj.style.display==&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"block"&lt;/SPAN&gt;&lt;FONT color=#000000&gt; || obj.style.display==&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;""&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;obj.style.display=&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"none"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;current.src =&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;'../App_Themes/images/s_right.gif'&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;PageMethods.SetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"none"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;,OnSucceeded,OnFailed);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;else&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;obj.style.display=&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"block"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;current.src =&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;'../App_Themes/images/s_left.gif'&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;PageMethods.SetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag(&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"block"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;,OnSucceeded,OnFailed);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: green; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: green; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt; OnSucceeded(result, userContext, methodName)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: green; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: green; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;function&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt; OnFailed(error, userContext, methodName)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; COLOR: blue; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;if&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(Sys) !== &lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"undefined"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;) Sys.Application.notifyScriptLoaded();&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;FONT color=#000000 face=Arial&gt;
&lt;DIV&gt;
&lt;HR&gt;
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=271272805-12112008&gt;&lt;FONT color=#000000 face=Arial&gt;When you click the button, it will cause exception: PageMethods not defined.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN class=271272805-12112008&gt;&lt;FONT color=#000000 face=Arial&gt;This is because the method "&lt;FONT face="Lucida Console"&gt;SetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag&lt;/FONT&gt;"&amp;nbsp;Js invoke is in MasterPage, it seems PageMethods donot contain MasterPage methods.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN class=271272805-12112008&gt;&lt;FONT color=#000000 face=Arial&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN class=271272805-12112008&gt;&lt;FONT color=#000000 face=Arial&gt;So, my solution is move the method "&lt;FONT face="Lucida Console"&gt;SetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag&lt;/FONT&gt;" from MasterPage to a base page called "PageBase" which inherited from System.Web.UI.Page, and each WebContentPage derived from PageBase.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN: 0cm 0cm 0pt" class=MsoNormal&gt;&lt;SPAN class=271272805-12112008&gt;&lt;FONT color=#ff00ff face=Arial&gt;&lt;STRONG&gt;PageBase.cs:&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN class=271272805-12112008&gt;&lt;/SPAN&gt;&lt;SPAN class=271272805-12112008&gt;
&lt;DIV&gt;
&lt;HR&gt;
&lt;/SPAN&gt;&lt;SPAN class=271272805-12112008&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;PageBase&lt;/SPAN&gt;&lt;FONT color=#000000&gt; : &lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Page&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P style="TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;SPAN class=271272805-12112008&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;[&lt;/FONT&gt;&lt;SPAN style="COLOR: #2b91af"&gt;WebMethod&lt;/SPAN&gt;&lt;FONT color=#000000&gt;]&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; SetToolbar&lt;SPAN class=271272805-12112008&gt;Display&lt;/SPAN&gt;Flag(&lt;/FONT&gt;&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; flag)&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;&lt;SPAN style="COLOR: #2b91af"&gt;HttpContext&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.Current.Session[&lt;/FONT&gt;&lt;SPAN style="COLOR: #a31515"&gt;"ToolbarDisplay"&lt;/SPAN&gt;&lt;FONT color=#000000&gt;] &lt;/FONT&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;= flag;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P style="TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; mso-layout-grid-align: none" class=MsoNormal align=left&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;
&lt;DIV&gt;
&lt;HR&gt;
&lt;/SPAN&gt;&lt;SPAN style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 10pt; mso-font-kerning: 0pt; mso-no-proof: yes" lang=EN-US&gt;&lt;SPAN class=271272805-12112008&gt;&lt;FONT color=#000000&gt;Now, you can invoke methods in MasterPage.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;</description><pubDate>Thu, 13 Nov 2008 11:51:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/how-to-invoke-pagemethods-in-masterpage</guid><category>Ajax</category><category>Asp.net</category><category>C#</category><category>PageMethods</category><category>Web</category></item><item><title>ModelPopupExtender的一个问题解决方案</title><link>https://weblogs.asp.net:443/yonggangmeng/modelpopupextender</link><description>&lt;P mce_keep="true"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最近用ModelPopupExtender时，总是提示我有 &lt;STRONG&gt;Sys.InvalidOperationException 未通过 Sys.UI.DomEvent.addHandler&lt;/STRONG&gt; 的错误，后来发现是我设置了CancellControlID，而没有设置相应的事件，我是通过在服务器端Show和Hide来控制的，这样脚本在寻找CancellControlID的时候就找不到了，就为null，在脚本中就会抛出以上错误。所以，如果我们要在服务器端控制ModelPopupExtender，不要设置ControlId就可以了！&lt;/P&gt;</description><pubDate>Fri, 07 Nov 2008 15:22:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/modelpopupextender</guid><category>.Net</category><category>Ajax</category><category>Asp.net</category><category>ModelPopup</category><category>Web</category></item><item><title>Asp.Net Web开发需要了解的知识</title><link>https://weblogs.asp.net:443/yonggangmeng/asp-net-web</link><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 很久没有做Web开发了，本以为有以前的基础加上WinForm的开发经验，Web应该不是什么问题的，应该很Easy。但是现在我发现我错了，Web开发已经不是简单的事情了。现在Web开发出来的一些优秀产品已经比较接近WinForm了，这就提高了Web开发的门槛。所以，现在如果我们想做好Web的开发，至少应该了解以下几方面的开发知识： &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Asp.Net&lt;/LI&gt;
&lt;LI&gt;Asp.Net Ajax &lt;/LI&gt;
&lt;LI&gt;Asp.Net Ajax Client Library &lt;/LI&gt;
&lt;LI&gt;Asp.Net Ajax Future Controls and Ajax Controls Toolkit &lt;/LI&gt;
&lt;LI&gt;Javascript &lt;/LI&gt;
&lt;LI&gt;Css &lt;/LI&gt;
&lt;LI&gt;WebStandard &lt;/LI&gt;
&lt;LI&gt;XML/XHTML/HTML &lt;/LI&gt;
&lt;LI&gt;Regular Expression &lt;/LI&gt;
&lt;LI&gt;JSON Service(Soap) &lt;/LI&gt;
&lt;LI&gt;Silverlight &lt;/LI&gt;
&lt;LI&gt;Third party product, for example JQuery, Ajax Pro &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;了解以上东西也并不代表就能做好Web开发，怎么灵活运用这些知识，深入发掘他们之间的交互才是最重要的东西。看来Web开发的路，我还要学习很久啊！&lt;/P&gt;</description><pubDate>Thu, 06 Nov 2008 12:45:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/asp-net-web</guid><category>.Net</category><category>Asp.net</category><category>Web</category></item><item><title>A question about Page Header</title><link>https://weblogs.asp.net:443/yonggangmeng/a-question-about-page-header</link><description>&lt;p&gt;When you add a Literal control to Page Header, for example:&lt;/p&gt;&lt;p&gt;&amp;lt;head runat="server"&amp;gt;
&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;lt;asp:Literal runat="server" ID ="literal" &amp;gt;Literal Test!&amp;lt;/asp:Literal&amp;gt;
&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;title&amp;gt;Untitled Page&amp;lt;/title&amp;gt;
&lt;br&gt; &amp;lt;/head&amp;gt;
&lt;/p&gt;&lt;p&gt;When you browser the page, you will find "Literal Test!" was displayed.&lt;/p&gt;&lt;p&gt;View the source code:&lt;br&gt; &amp;lt;head&amp;gt;
&lt;br&gt; &amp;nbsp; &amp;nbsp; Literal Test!&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;title&amp;gt;
&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Untitled Page
&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;lt;/title&amp;gt;
&lt;br&gt; &amp;lt;/head&amp;gt;
&lt;br&gt; &lt;/p&gt;&lt;p&gt;but if you use Developer Toolbar or Doc Inspector of FF, the source code is different:
&lt;br&gt; &amp;lt;head&amp;gt;
&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;lt;title&amp;gt;
&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Untitled Page
&lt;br&gt; &amp;nbsp; &amp;nbsp; &amp;lt;/title&amp;gt;
&lt;br&gt; &amp;lt;/head&amp;gt;
&lt;br&gt; &amp;lt;body&amp;gt;
&lt;br&gt; &amp;nbsp;&amp;nbsp; Literal Test!&lt;/p&gt;&lt;p&gt;&amp;nbsp; ......&lt;/p&gt;&lt;p&gt;&amp;lt;/body&amp;gt; &lt;br&gt;&lt;/p&gt;I don't understand, anyone can tell me which is right and why they are different? thanks!</description><pubDate>Thu, 02 Oct 2008 07:45:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/a-question-about-page-header</guid><category>Asp.net</category><category>Questions</category></item><item><title>单例模式 </title><link>https://weblogs.asp.net:443/yonggangmeng/6745983</link><description>&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;从今天开始，我每周会写一个关于设计模式的文章，还是用自己的语言，从自己的角度来阐述设计模式的用途，好处，以及怎么用。 &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;首先，最简单的也就是单例了，我就用他作为自己的第一篇设计模式的文章吧。 &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&lt;STRONG&gt;1. 单例的目的是什么？&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;这个应该很明显，保证一个类只有单一的实例，也就是说你无法通过New或CreateInstance来创建这个类的一个新实例。&lt;BR&gt;&lt;STRONG&gt;2. 单例的好处在哪里？&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;当一个对象在程序内部只能有一个实例的时候，它可以保证我们不会重复创建，而是始终指向同一个对象。&lt;STRONG&gt;&lt;BR&gt;3. 怎么用？&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单例模式的实现代码如下：&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;namespace SinglePattern&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class SingleClass&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static SingleClass instance; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected SingleClass(){} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SingleClass GetInstance()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(instance == null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instance = new SingleClass();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return instance;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;}&lt;BR&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;上面的代码，可以说是一个标准的单例的代码，但是上述代码在多线程的时候有可能会产生多个实例，为了避免这个情况的发生，我们需要限制同一时间，只能有一个线程访问。 &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&lt;STRONG&gt;利用lock可以实现我们的目的：&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;namespace SinglePattern&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class SingleClass&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 静态变量&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static SingleClass instance; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // "锁"变量&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static object lockObject = new objest(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 受保护的构造函数&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected SingleClass(){} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 静态获取对象的方法&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SingleClass GetInstance()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; lock (lockObject)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (instance == null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instance = new SingleClass();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return instance;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&lt;STRONG&gt;另一个方法：&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;这个方法经过调整之后，也可以用于限制一个窗体只能启动一个实例。 &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;using System.Threading;&lt;BR&gt;namespace SinglePattern&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class SingleClass&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 静态变量&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static SingleClass instance; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 受保护的构造函数&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected SingleClass(){} &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 36pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;// 静态获取对象的方法&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static SingleClass GetInstance()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;Mutex mutex = new Mutex();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mutex.WaitOne(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (instance == null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; instance = new SingleClass();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mutex.Close(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return instance;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 33pt"&gt;&lt;SPAN style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;} &lt;/SPAN&gt;&lt;/P&gt;</description><pubDate>Sun, 03 Feb 2008 07:12:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/6745983</guid><category>Design Patterns</category></item><item><title>对IOC和DI的理解 </title><link>https://weblogs.asp.net:443/yonggangmeng/ioc-di</link><description>&lt;P mce_keep="true"&gt;首先说一下什么是IOC和DI，IOC是Inversion of Control（控制反转）的简写，DI是Dependency Injection（依赖注入）的简写，martinfowler对IOC的解释为：“&lt;A href="http://martinfowler.com/bliki/InversionOfControl.html"&gt;&lt;FONT color=#78afd3&gt;Inversion of control&lt;/FONT&gt;&lt;/A&gt; is a common characteristic of frameworks, so saying that these lightweight containers are special because they use inversion of control is like saying my car is special because it has wheels.”&lt;BR&gt;我想对这一概念进行一个个人的阐述，以方便我的理解。控制反转，从字面意思来看，就是控制权由被动变主动又变为被动，或被动变主动又变为被动。从这个角度来说，IOC就变得非常容易理解了。&lt;BR&gt;举个例子：你的主管要求你做一件事情，这个时候就存在这么几个过程，&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="MARGIN-LEFT: 40px"&gt;
&lt;OL&gt;
&lt;LI&gt;主管命令你做事情（这个时候主动权在主管，你是被动的） 
&lt;LI&gt;你接到命令做事情（这个时候主题是你，你是主动的，控制权在你手里） 
&lt;LI&gt;你完成事情（这个时候主题依然是你，控制权在你手里） 
&lt;LI&gt;报告主管做完事情（主动权又叫交到主管手里了） &lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;上面的整个过程就完成了一次IOC，从上面可以看出，IOC的基本思想是控制权的转换过程。&lt;BR&gt;举个代码的例子：&lt;BR&gt;假如有Class A，Class B，在A内部会初始化一个B，调用B的一个方法DoMethod&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;public Class B&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;{&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void DoMethod()&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// do somthing;&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;}&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;public Class A&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;{&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp; public void Excute()&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; B b = new B();&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;/SPAN&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b.DoMethod();&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;BR style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;&lt;SPAN style="BACKGROUND-COLOR: rgb(255,255,255)"&gt;}&lt;/SPAN&gt;&lt;BR&gt;假如在Main函数中如下执行：&lt;BR&gt;A a = new A();&lt;BR&gt;a.Excute();&lt;BR&gt;从这两行代码来看，事实上也存在一个IOC的过程，a---&amp;gt;b---&amp;gt;a，理解的关键点就在在A的内部调用Excute的时候，方法b.DoMethod的执行。&lt;BR&gt;&lt;BR&gt;理解了IOC，我们再看一下DI，从上面A调用B我们可以看出，在初始化一个A的实例时，也必须实例化一个B，也就是说如果没有B或者B出了问题，A就无法实例化，这就产生了一种依赖，就是A依赖B，这种依赖从设计的角度来说就是耦合，显然它是无法满足高内聚低耦合的要求的。这个时候就需要解耦，当然解耦有很多种方法，而DI就是其中一种。不管任何一种解耦方法，都不是说使A和B完全没有关系，而是把这种关系的实现变得隐晦，不那么直接，但是又很容易实现，而且易于扩展，不像上面的代码那样，直接new一个B出来。那为什么我们总是把IOC和DI联系到一起呢？是因为DI的基本思想就是IOC，而体现IOC 思想的方法还有另外一个，那就是Service Locator,这个方法好像涉及到的很少。&lt;BR&gt;&lt;BR&gt;DI,依赖注入，从字面意思就可以看出，依赖是通过外接注入的方式来实现的。这就实现了解耦，而DI的方式通常有三种，&lt;BR&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;构造器注入 
&lt;LI&gt;属性设置器注入 
&lt;LI&gt;接口注入（我感觉接口注入是同时存在于上两种注入方式的，而不应该独立出来）&lt;BR&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P mce_keep="true"&gt;&lt;BR&gt;以上的阐述只是为了先让我们能对IOC和DI有一个感性的理解，那么IOC他真正解决的问题是什么呢？我们讲了那么多主动被动的问题，那我们是从什么视角来看待这个问题的呢？所谓为什么你是主动，而我不是主动呢？这就需要一个参照物，那这个参照物是什么呢？就是容器，在容器中来体现主动和被动。“&lt;SPAN style="FONT-FAMILY: 宋体"&gt;用白话来讲，就是由容器控制程序之间的关系，而非传统实现中，由程序代码直接操控。这也就是所谓“控制反转”的概念所在：控制权由应用代码中转到了外部容器，控制权的转移，是所谓反转",这是通常对IOC的一个解释。从容器的角度来看主动和被动，和由容器来控制程序之间的关系，应该是相通的，是一个意思。到这里我们就应该基本明白了，IOC要解决的就是程序之间调用的一个问题，它应该是一个思想层面的东西，是一个中心，就像一支乐队的指挥，而程序就是乐器，通过指挥来协调各种乐器，来演奏出美好的音乐来。&lt;BR&gt;&lt;BR&gt;以上是我对IOC和DI的理解，希望各位批评指正！&lt;BR&gt;&lt;/SPAN&gt;&lt;/P&gt;</description><pubDate>Mon, 28 Jan 2008 07:07:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/ioc-di</guid><category>DI</category><category>IOC</category></item><item><title>Today, 1/24/2008</title><link>https://weblogs.asp.net:443/yonggangmeng/today-1-24-2008</link><description>&lt;p&gt;I will keep this day in mind. The day my asp.net blog was created.&lt;br&gt;&lt;/p&gt;</description><pubDate>Thu, 24 Jan 2008 14:34:00 GMT</pubDate><guid isPermaLink="true">https://weblogs.asp.net:443/yonggangmeng/today-1-24-2008</guid><category>Notes</category></item></channel></rss>