﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-goody9807</title><link>http://www.cnblogs.com/goody9807/</link><description>避风的港湾-云之宇~~~寻找.Net的精华

一个不错的P2P软件,里面肯定有你要的资源
</description><language>zh-cn</language><lastBuildDate>Thu, 28 Aug 2008 03:22:46 GMT</lastBuildDate><pubDate>Thu, 28 Aug 2008 03:22:46 GMT</pubDate><ttl>60</ttl><item><title>JavaScript的replace方法与正则表达式结合应用讲解</title><link>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277935.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Wed, 27 Aug 2008 10:00:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277935.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1277935.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277935.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1277935.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1277935.html</trackback:ping><description><![CDATA[<p><font face="Verdana">大家好！！今晚在华软G43*宿舍没什么事做，把javascript中replace方法讲解一下，如果讲得不对或不合理是情理之中的事，因为我不是老鸟，也不是菜鸟，我也不知道我当底是什么鸟？？呵~~</font></p>
<p><font face="Verdana">　　replace方法的语法是：stringObj.replace(rgExp, replaceText) 其中stringObj是字符串(string)，reExp可以是正则表达式对象(RegExp)也可以是字符串(string)，replaceText是替代查找到的字符串。。为了帮助大家更好的理解，下面举个简单例子说明一下</font></p>
<font face="Verdana">
<p><br />
&lt;script language="javascript"&gt;<br />
var stringObj="终古人民共和国，终古人民";</p>
<p>//替换错别字&#8220;终古&#8221;为&#8220;中国&#8221;<br />
//并返回替换后的新字符<br />
//原字符串stringObj的值没有改变<br />
var newstr=stringObj.replace("终古","中国"); <br />
alert(newstr);<br />
&lt;/script&gt;</p>
<p><br />
&nbsp;&nbsp;&nbsp; 比我聪明的你，看完上面的例子之后，会发现第二个错别字&#8220;终古&#8221;并没有被替换成&#8220;中国&#8221;，我们可以执行二次replace方法把第二个错别字&#8220;终古&#8221;也替换掉，程序经过改进之后如下：</p>
<p>&lt;script language="javascript"&gt;<br />
var stringObj="终古人民共和国，终古人民";</p>
<p>//替换错别字&#8220;终古&#8221;为&#8220;中国&#8221;<br />
//并返回替换后的新字符<br />
//原字符串stringObj的值没有改变<br />
var newstr=stringObj.replace("终古","中国"); </p>
<p>newstr=newstr.replace("终古","中国"); <br />
alert(newstr);<br />
&lt;/script&gt;</p>
<p><br />
&nbsp;&nbsp;&nbsp; 我们可以仔细的想一下，如果有N的N次方个错别字，是不是也要执行N的N次方replace方法来替换掉错别字呢？？呵，不用怕，有了正则表达式之后不用一个错别字要执行一次replace方法。。程序经过改进之后的代码如下</p>
<p>&lt;script language="javascript"&gt;<br />
var reg=new RegExp("终古","g"); //创建正则RegExp对象<br />
var stringObj="终古人民共和国，终古人民";<br />
var newstr=stringObj.replace(reg,"中国"); <br />
alert(newstr);<br />
&lt;/script&gt;</p>
<p>上面讲的是replace方法最简单的应用，不知道大家有没有看懂？？下面开始讲稍微复杂一点的应用。。</p>
<p><br />
&nbsp;&nbsp;&nbsp; 大家在一些网站上搜索文章的时候，会发现这么一个现象，就是搜索的关键字会高亮改变颜色显示出来？？这是怎么实现的呢？？其实我们可以用正则表达式来实现，具体怎么样实现呢？简单的原理请看下面的代码</p>
<p>&nbsp;</p>
<p>&lt;script language="javascript"&gt;<br />
var str="中华人民共和国，中华人民共和国";<br />
var newstr=str.replace(/(人)/g,"&lt;font color=red&gt;$1&lt;/font&gt;");<br />
document.write(newstr);<br />
&lt;/script&gt;</p>
<p><br />
上面的程序缺少互动性，我们再改进一下程序，实现可以自主输入要查找的字符</p>
<p><br />
&lt;script language="javascript"&gt;<br />
var s=prompt("请输入在查找的字符","人");<br />
var reg=new RegExp("("+s+")","g");<br />
var str="中华人民共和国，中华人民共和国";<br />
var newstr=str.replace(reg,"&lt;font color=red&gt;$1&lt;/font&gt;");<br />
document.write(newstr);<br />
&lt;/script&gt;</p>
<p>　　可能大家都会对$1这个特殊字符表示什么意思不是很理解，其实$1表示的就是左边表达式中括号内的字符，即第一个子匹配，同理可得$2表示第二个子匹配。。什么是子匹配呢？？通俗点讲，就是左边每一个括号是第一个字匹配，第二个括号是第二个子匹配。。</p>
<p><br />
　　 当我们要把查找到的字符进行运算的时候，怎么样实现呢？？在实现之前，我们先讲一下怎么样获取某一个函数的参数。。在函数Function的内部，有一个arguments集合，这个集合存储了当前函数的所有参数，通过arguments可以获取到函数的所有参数，为了大家理解，请看下面的代码</p>
<p><br />
&lt;script language="javascript"&gt;<br />
function test()<br />
{<br />
alert("参数个数："+arguments.length);<br />
alert("每一个参数的值："+arguments[0]);<br />
alert("第二个参数的值"+arguments[1]);<br />
//可以用for循环读取所有的参数<br />
}</p>
<p>test("aa","bb","cc"); <br />
&lt;/script&gt;</p>
<p><br />
看懂上面的程序之后，我们再来看下面一个有趣的程序</p>
<p>&lt;script language="javascript"&gt;<br />
var reg=new RegExp("\\d","g");<br />
var str="abd1afa4sdf";<br />
str.replace(reg,function(){alert(arguments.length);});<br />
&lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 我们惊奇的发现，匿名函数竟然被执行了二次，并且在函数里还带有三个参数，为什么会执行二次呢？？这个很容易想到，因为我们写的正则表达式是匹配单个数字的，而被检测的字符串刚好也有二个数字，故匿名函数被执行了二次。。在匿名函数内部的那三个参数到底是什么内容呢？？为了弄清这个问题，我们看下面的代码。</p>
<p>&lt;script language="javascript"&gt;<br />
function test()<br />
{<br />
for(var i=0;i&lt;arguments.length;i++)<br />
{<br />
alert("第"+(i+1)+"个参数的值："+arguments[i]);<br />
}</p>
<p>}<br />
var reg=new RegExp("\\d","g");<br />
var str="abd1afa4sdf";<br />
str.replace(reg,test);<br />
&lt;/script&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 经过观察我们发现，第一个参数表示匹配到的字符，第二个参数表示匹配时的字符最小索引位置(RegExp.index)，第三个参数表示被匹配的字符串(RegExp.input)。其实这些参数的个数，还会随着子匹配的变多而变多的。弄清这些问题之后，我们可以用另外的一种写法</p>
<p>&lt;script language="javascript"&gt;<br />
function test($1)<br />
{<br />
return "&lt;font color='red'&gt;"+$1+"&lt;/font&gt;"<br />
}<br />
var s=prompt("请输入在查找的字符","人");<br />
var reg=new RegExp("("+s+")","g");<br />
var str="中华人民共和国，中华人民共和国";<br />
var newstr=str.replace(reg,test);<br />
document.write(newstr);<br />
&lt;/script&gt;</p>
<p>看了上面的程序，原来可以对匹配到的字符为所欲为。下面简单举一个应用的例子</p>
<p>&lt;script language="javascript"&gt;<br />
var str="他今年22岁，她今年20岁，他的爸爸今年45岁，她的爸爸今年44岁，一共有4人"<br />
function test($1)<br />
{<br />
var gyear=(new Date()).getYear()-parseInt($1)+1;<br />
return $1+"("+gyear+"年出生)";<br />
}<br />
var reg=new RegExp("(\\d+)岁","g");<br />
var newstr=str.replace(reg,test);<br />
alert(str);<br />
alert(newstr);<br />
&lt;/script&gt;<br />
</font></p>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1277935.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41931/" target="_blank">[新闻]GC2008：星际争霸2进程报告 微调进程延续</a>]]></description></item><item><title>javascript中replace()</title><link>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277900.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Wed, 27 Aug 2008 09:38:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277900.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1277900.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1277900.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1277900.html</trackback:ping><description><![CDATA[&nbsp; 在javascript中，String的函数replace()简直太让人喜爱了。它灵活而强大的字符替换处理能力，让我不禁想向大家介绍它。<br />
<br />
　　replace()最简单的算是能力就是简单的字符替换。示例代码如下：<br />
<br />
&lt;script language="javascript"&gt;<br />
&nbsp;var strM = "javascript is a good script language";<br />
&nbsp;//在此我想将字母a替换成字母A<br />
&nbsp;alert(strM.replace("a","A"));<br />
&lt;/script&gt;<br />
<br />
　　我想大家运行后可以看到结果，它只替换了首字母。但如果加上正则表达式结果就不一样了！呵呵，没错。replace()支持正则表达式，它可以按照正则表达式的规则匹配字符或字符串，然后给予替换！<br />
<br />
&lt;script language="javascript"&gt;<br />
&nbsp;var strM = "javascript is a good script language";<br />
&nbsp;//在此我想将字母a替换成字母A<br />
alert(strM.replace(/a/,"A"));<br />
&nbsp;&lt;/script&gt;<br />
<br />
　　呵呵，您一定发现了。这样还是只替换了第一个字母a。如果您熟悉正则，那这就难不住您。稍加修改就OK了。<br />
<br />
&lt;script language="javascript"&gt;<br />
var strM = "javascript is a good script language";<br />
&nbsp;//在此将字母a全部替换成字母A<br />
alert(strM.replace(/a/g,"A"));<br />
&lt;/script&gt;<br />
<br />
　　还可以这样，看看效果！<br />
<br />
&lt;script language="javascript"&gt;<br />
&nbsp;var strM = "javascript is a good script language";<br />
&nbsp;alert(strM.replace(/(javascript)\s*(is)/g,"$1 $2 fun. it $2"));<br />
&lt;/script&gt;<br />
<br />
　　我这儿举的例子都是很简单的应用，replace()在此点上与您使用正则表达式的能力成正比。您正则表达式越强，呵呵，那您就会越疯狂的爱上它。<br />
<br />
　　当然，我这儿推荐replace()的原因并不因为它能与正则表达式合作，而在于它还能与函数进行合作，发挥出强大的功能。<br />
<br />
　　先看看简单例子：将所有单词首字母换成大写。<br />
<br />
&lt;script language="javascript"&gt;<br />
&nbsp;var strM = "javascript is a good script language";<br />
&nbsp;function change(word)<br />
{<br />
　return word.indexOf(0).toUpperCase()+word.substring(1);<br />
}<br />
&nbsp;alert(strM.replace(/\b\w+\b/g,change));<br />
&lt;/script&gt;<br />
<br />
　　由上可知，当正则表达式有"g"标志时，代表将处理整个字符串，即函数change的变换将应用于所有匹配的对象。而该函数有三个或更多参数，具体个数视正则表达式而定。<br />
<br />
　　有了函数与正则表达式的配合，replace()处理字符串的功能空前强大起来了！<br />
<br />
　　最后还举个例子，将字符串所有单词倒序，用replace()处理是如此简单。<br />
<br />
&lt;script language="javascript"&gt;<br />
var strM = "javascript is a good script language";<br />
function change(word)<br />
{<br />
　var result = word.match(/(\w)/g);<br />
&nbsp;if ( result )<br />
{<br />
　var str = "";<br />
　&nbsp;for ( var i=result.length-1; i&gt;=0; i-- )<br />
　{<br />
　　&nbsp;str += result<em>;<br />
　}<br />
　return str;<br />
}<br />
else<br />
{<br />
　&nbsp;return "null";<br />
}<br />
}<br />
alert(strM.replace(/\b(\w)+\b/g,change));<br />
&lt;/script&gt;<br />
<br />
</em>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1277900.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41931/" target="_blank">[新闻]GC2008：星际争霸2进程报告 微调进程延续</a>]]></description></item><item><title>javascript 数组Array对象</title><link>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277902.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Wed, 27 Aug 2008 09:38:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277902.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1277902.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/27/1277902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1277902.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1277902.html</trackback:ping><description><![CDATA[<div class="postText">
<p>new Array()<br />
new Array(len)<br />
new Array([item0,[item1,[item2,...]]]<br />
<br />
<font style="background-color: #ff0000">使用数组对象的方法：</font><br />
<br />
<font style="background-color: #ffffff" color="#0000ff"><font color="#006400">var objArray=new Array();</font><br />
</font><br />
<font color="#006400">objArray</font>.concact([item1[,item2[,....]]]-------------------将参数列表连接到objArray的后面形成一个新的数组并返回，原有数组不受影响。如：var arr=["a","b","c"];<br />
arr.concact("d","e");<br />
将返回包括从"a"到"e"字母元素的数组。而arr本身不受影响。<br />
<br />
<font color="#006400">objArray</font>.join(separator)-----------------以separator指定的字符作为分割符，将数组转换为字符串，当seperator 为逗号时，其作用和toString()相同。<br />
<br />
<font color="#006400">objArray</font>.pop()---------通俗的讲，就是弹出数组的最后一个元素。结合下面的push方法，使得将数组作为栈来使用成为可能。pop方法返回数组最后一个元素的值，并将length属性减１，即返回后立即丢失最后一个元素。<br />
<br />
<font color="#006400">objArray</font>.push([value1[,value2[,....]]])-------------将参数添加到数组的结尾。如：[1,2,3, 4].push("a","b")将得到[1,2,3,4,"a","b"]<br />
<br />
<font color="#006400">objArray</font>.reverse()将数组中的元素反转排列。如：[1,2,3].reverse()将得到[3,2,1]，这个操作是在原有数组上经行操作，同时也返回数组本身<br />
<font color="#006400">objArray</font>.shift()-----------移去数组的第一个元素，并返回这个元素的值。这个方法的性质和pop方法很类似，pop方法是移去最后一个元素。<br />
<br />
<font color="#006400">objArray</font><font color="#000000">.slice(start,end)-----------返回数组对象的一个子集，索引从start开始（包括 start），到end结束（不包括end),原有数组不受影响。如：[1,2,3,4,5,6].slice(1,4)将得到[2,3,4]。当start或者end为负数时，则使用他们加上length后地值。如：[1,2,3,4,5,6].slice(-4,-1)将得到[3,4,5]。如果end小于等于start，将返回空数组。<br />
<br />
<font color="#006400">objArray</font><font color="#000000">.sort(comparefn)-------根据comparefn定义的大小比较函数，对一个数组进行排序。函数comparefn必须接受两个参数element1,element2,如果需要需要element1排在element2之前，应该返回一个负数；如果需要element1排在element2之后，应该返回一个正数，如果两个数平等对待（即保持原有顺序）则返回０。当省略comparefn时，则元素按照字典顺序排列。如：对定义的比较函数cmp: function cmp(e1,e2){</font>return e1-e2;}则[3,4,2,7].sort(cmp)将得到[2,3,4,7].<br />
<font color="#000000"></font><font color="#006400">objArray</font><font color="#000000">.splice(start,deleteCount[,item1,item2[,...]]])这是一个复杂的函数，用于完成数组元素的删除　取代和插入操作。其中，start参数表示要进行操作的索引位置，deleteCount指从start开始要删除的元素的元素个数（包括了start位置），如果deleteCount省略，则表示从start开始要删除数组的剩余部分。[,item1[,item2[,...]]]则表示可选的插入到start之前的元素列表。如：<br />
</font><br />
var arr=[0,1,2,3,4,5,6];<br />
<br />
arr.splice(1,1);<br />
<br />
document.write(arr);//显示&#8220;０，２，３，４，５，６&#8221;<br />
<br />
arr=[0,1,2,3,4,5,6];<br />
<br />
arr.splice(0,0,"a","b");<br />
<br />
document.write(arr);//显示&#8220;a,b,0,1,2,3,4,5,6"<br />
<br />
arr=[0,1,2,3,4,5,6];<br />
<br />
arr.splice(3,2,"c","d");<br />
<br />
document.write(arr);//显示"0,1,2,c,d,5,6"<br />
<br />
<font color="#006400">objArray</font><font color="#000000">.unshift(item1[,item2[,...]]])-------------------将参数列表插入到数组的开头。其性质和push方法类型，但push方法是将元素添加到数组的结尾。如：[1,2,3,4].unshift("a","b")将得到["a","b",1,2,3,4]。</font><br />
<br />
<br />
<br />
从大到小冒泡排序法：<br />
</font></p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;HTML&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;HTML&nbsp;4.0&nbsp;Transitional//EN"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">&nbsp;New&nbsp;Document&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Generator"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">="EditPlus"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Author"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">=""</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Keywords"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">=""</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">meta&nbsp;</span><span style="color: #ff0000">name</span><span style="color: #0000ff">="Description"</span><span style="color: #ff0000">&nbsp;content</span><span style="color: #0000ff">=""</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">language</span><span style="color: #0000ff">="JavaScript"</span><span style="color: #ff0000">&nbsp;type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #000000; background-color: #f5f5f5">&lt;!--</span><span style="color: #000000; background-color: #f5f5f5"><br />
</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;bubbleSort(arr){<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">外层循环，共要进行arr.length次求最大值操作</span><span style="color: #008000; background-color: #f5f5f5"><br />
</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">for</span><span style="color: #000000; background-color: #f5f5f5">(</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">;i</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">arr.length;i</span><span style="color: #000000; background-color: #f5f5f5">++</span><span style="color: #000000; background-color: #f5f5f5">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">内层循环，找到第i大的元素，并将其和第i个元素交换</span><span style="color: #008000; background-color: #f5f5f5"><br />
</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">for</span><span style="color: #000000; background-color: #f5f5f5">(</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;j</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">i;j</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">arr.length;j</span><span style="color: #000000; background-color: #f5f5f5">++</span><span style="color: #000000; background-color: #f5f5f5">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">if</span><span style="color: #000000; background-color: #f5f5f5">(arr[i]</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">arr[j]){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">交换两个元素的位置</span><span style="color: #008000; background-color: #f5f5f5"><br />
</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;temp</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">arr[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i]</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">arr[j];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[j]</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">temp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
<br />
</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;arr</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">[</span><span style="color: #000000; background-color: #f5f5f5">32</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">55</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">78</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">43</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">78</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">10</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">45</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">20</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">9</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">89</span><span style="color: #000000; background-color: #f5f5f5">];<br />
bubbleSort(arr);<br />
<br />
</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">输出：89,78,78,55,45,43,32,20,10,9</span><span style="color: #008000; background-color: #f5f5f5"><br />
</span><span style="color: #0000ff; background-color: #f5f5f5">for</span><span style="color: #000000; background-color: #f5f5f5">(</span><span style="color: #0000ff; background-color: #f5f5f5">var</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;i</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">0</span><span style="color: #000000; background-color: #f5f5f5">;i</span><span style="color: #000000; background-color: #f5f5f5">&lt;</span><span style="color: #000000; background-color: #f5f5f5">arr.length;i</span><span style="color: #000000; background-color: #f5f5f5">++</span><span style="color: #000000; background-color: #f5f5f5">){<br />
&nbsp;&nbsp;&nbsp;&nbsp;document.write(arr[i]</span><span style="color: #000000; background-color: #f5f5f5">+</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">,</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">);<br />
}<br />
</span><span style="color: #008000; background-color: #f5f5f5">//</span><span style="color: #008000; background-color: #f5f5f5">--&gt;</span><span style="color: #008000; background-color: #f5f5f5"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span></div>
<br />
</div>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1277902.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41931/" target="_blank">[新闻]GC2008：星际争霸2进程报告 微调进程延续</a>]]></description></item><item><title>强大的模板引擎开源软件NVelocity</title><link>http://www.cnblogs.com/goody9807/archive/2008/08/26/1276436.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Tue, 26 Aug 2008 02:20:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/26/1276436.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1276436.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/26/1276436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1276436.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1276436.html</trackback:ping><description><![CDATA[<p>背景知识<br />
NVelocity(<a href="http://sourceforge.net/projects/nvelocity">http://sourceforge.net/projects/nvelocity</a> )是从java编写的Velocity移植的.net版本，是java界超强的模版系统，.net版本的NVelocity目前版本为0.42。<br />
NVelocity拥有完善的、丰富的模板语言（VTL，Velocity Template Language） ，几乎所有高级语言的特性都可以在模板引擎语言中找到。(如流程控制语句、数学运算、关系和逻辑操作符、函数定义、注释等等）</p>
<p>NVelocity可以做什么？<br />
能够快速生成所需的代码、SQL脚本、页面文件等基于文本内容的文件<br />
生成速度快、模板语言完善、灵活性好<br />
容易学习、开源，免费使用<br />
前身为Velocity（Java），使用者多，资料全<br />
</p>
<p>用途<br />
在编写代码的时候，我们可以发现很多内容都是不需要变化的，变化的只是一小部分内容，对不同的对象，这些内容不同。<br />
如果我们需要生成一个变化的文档，是否需要在代码拷贝这些不变化的内容么，或者把它剥离开放到其他的文件去么？还有我们是否能对这些内容有一些简单的控制和引用么？</p>
<p>简单例子(主要规则：引用以$开头用于取得什么东西，而指令以# 开始用于做什么事情)<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">#</span><span style="color: #008000">set($foo&nbsp;=&nbsp;false)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#if&nbsp;($foo)</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;is&nbsp;true<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">elseif&nbsp;($bar)</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;is&nbsp;false<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">elseif&nbsp;(true)</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;this&nbsp;should&nbsp;be&nbsp;followed&nbsp;by&nbsp;two&nbsp;blank&nbsp;lines<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">end<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />##&nbsp;this&nbsp;is&nbsp;a&nbsp;single&nbsp;line&nbsp;comment<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#*</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">this&nbsp;is&nbsp;a&nbsp;multi&nbsp;line&nbsp;comment<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">if&nbsp;(</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">*</span><span style="color: #008000">#</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#set($user&nbsp;=&nbsp;"jason")<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#set($login&nbsp;=&nbsp;false)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#set($count&nbsp;=&nbsp;5)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#if&nbsp;($user&nbsp;==&nbsp;"jason")</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;user&nbsp;</span><span style="color: #800080">$user</span><span style="color: #000000">&nbsp;is&nbsp;logged&nbsp;in</span><span style="color: #000000">!</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">end<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#if&nbsp;($count&nbsp;==&nbsp;5)</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;count&nbsp;is&nbsp;</span><span style="color: #800000">5</span><span style="color: #000000">!</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">#</span><span style="color: #008000">end<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#if&nbsp;($login&nbsp;==&nbsp;false)</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;user&nbsp;isn</span><span style="font-weight: bold; color: #000000">'</span><span style="font-weight: bold; color: #000000">t&nbsp;logged&nbsp;in.<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#end<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#if&nbsp;($count&nbsp;!=&nbsp;3)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;\$count&nbsp;is&nbsp;not&nbsp;equal&nbsp;to&nbsp;3<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />#end<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p><br />
<br />
变量说明<br />
在VTL中，所有变量标识符的开头要加上$字符，如$Name，也可以用一种更加明确的方法表示，例如${name}。<br />
变量标识符被映射到稍后即将介绍的VelocityContext对象。在模板引擎处理模板时，变量名称（如name）被替换成VelocityContext中提供的值 </p>
<p>C#代码</p>
<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">Velocity.Init(</span><span style="color: #000000">"</span><span style="color: #000000">nvelocity.properties</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />VelocityContext&nbsp;context&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;VelocityContext();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />context.Put(</span><span style="color: #000000">"</span><span style="color: #000000">list</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;Names);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />Template&nbsp;template&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="Codehighlighter1_148_200_Open_Image" onclick="this.style.display='none'; Codehighlighter1_148_200_Open_Text.style.display='none'; Codehighlighter1_148_200_Closed_Image.style.display='inline'; Codehighlighter1_148_200_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_148_200_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_148_200_Closed_Text.style.display='none'; Codehighlighter1_148_200_Open_Image.style.display='inline'; Codehighlighter1_148_200_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_148_200_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_148_200_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Velocity.GetTemplate(</span><span style="color: #000000">"</span><span style="color: #000000">test.cs.vm</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(ParseErrorException&nbsp;pee)<br />
<img id="Codehighlighter1_234_294_Open_Image" onclick="this.style.display='none'; Codehighlighter1_234_294_Open_Text.style.display='none'; Codehighlighter1_234_294_Closed_Image.style.display='inline'; Codehighlighter1_234_294_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_234_294_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_234_294_Closed_Text.style.display='none'; Codehighlighter1_234_294_Open_Image.style.display='inline'; Codehighlighter1_234_294_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_234_294_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_234_294_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;System.Console.Out.WriteLine(</span><span style="color: #000000">"</span><span style="color: #000000">Syntax&nbsp;error:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;&nbsp;pee);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(template&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_318_368_Open_Image" onclick="this.style.display='none'; Codehighlighter1_318_368_Open_Text.style.display='none'; Codehighlighter1_318_368_Closed_Image.style.display='inline'; Codehighlighter1_318_368_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_318_368_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_318_368_Closed_Text.style.display='none'; Codehighlighter1_318_368_Open_Image.style.display='inline'; Codehighlighter1_318_368_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_318_368_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_318_368_Open_Text"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;template.Merge(context,&nbsp;System.Console.Out);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<p>&nbsp;</p>
<p>注释<br />
单行注释<br />
## This is a single line comment </p>
<p><br />
多行注释 <br />
#*<br />
&nbsp;Thus begins a multi-line comment. Online visitors won't<br />
&nbsp;see this text because the Velocity Templating Engine will<br />
&nbsp;ignore it.<br />
*#</p>
<p><br />
属性或方法<br />
$customer.Address<br />
$purchase.Total</p>
<p>$page.SetTitle( "My Home Page" )<br />
$person.SetAttributes( ["Strange", "Weird", "Excited"] )</p>
<p><br />
指令 <br />
#set( $primate = "monkey" ) <br />
#set( $monkey.Friend = "monica" ) </p>
<p>#set( $criteria = ["name", "address"] )<br />
#foreach( $criterion in $criteria )</p>
<p>&nbsp;&nbsp;&nbsp; #set( $result = $query.criteria($criterion) )<br />
&nbsp;&nbsp;&nbsp; #if( $result )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Query was successful<br />
&nbsp;&nbsp;&nbsp; #end<br />
#end</p>
<p><br />
If / ElseIf / Else<br />
Foreach 循环</p>
<p>#if( $foo &lt; 10 )<br />
&nbsp;&nbsp;&nbsp; &lt;strong&gt;Go North&lt;/strong&gt;<br />
#elseif( $foo == 10 )<br />
&nbsp;&nbsp;&nbsp; &lt;strong&gt;Go East&lt;/strong&gt;<br />
#elseif( $bar == 6 )<br />
&nbsp;&nbsp;&nbsp; &lt;strong&gt;Go South&lt;/strong&gt;<br />
#else<br />
&nbsp;&nbsp;&nbsp; &lt;strong&gt;Go West&lt;/strong&gt;<br />
#end&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p><br />
&lt;ul&gt;<br />
#foreach( $product in $allProducts )<br />
&nbsp;&nbsp;&nbsp; &lt;li&gt;$product&lt;/li&gt;<br />
#end<br />
&lt;/ul&gt;</p>
<p>宏 （称为函数更合适）<br />
#macro 脚本元素允许模板设计者在VTL 模板中定义重复的段。 Velocimacros 不管是在复杂还是简单的场合都非常有用。下面这个Velocimacro，仅用来节省击键和减少排版错误，介绍了一些NVelocity宏的概念。 <br />
可以带参数，参数放在宏名称的后面，空格隔开</p>
<p>#macro( d )<br />
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;<br />
#end</p>
<p>#d()</p>
<p><br />
#macro( callme $a )<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $a $a $a<br />
#end<br />
&nbsp;<br />
#callme( $foo.bar() )</p>
<p>包含 <br />
#include 脚本元素允许模板设计人员包含（导入）本地文件， 这个文件将插入到#include 指令被定义的地方。文件的内容并不通过模板引擎来渲染。<br />
#include( "one.txt" ) </p>
<p>解析<br />
#parse 脚本元素允许页面设计员导入包含VTL的本地文件。 Velocity将解析和渲染指定的模板。<br />
#parse( "me.vm" )</p>
<p><br />
在根目录NVelocity-***\test\templates下有各种模板语言语法的实例，在NVelocity-***\ examples目录下有如何在C#中使用模板引擎的简单例子。<br />
在.NET中使用时候，需要应用两个程序集，NVelocity.dll 和 Commons.dll，这些文件在NVelocity-***\Build目录下。<br />
可以加入nvelocity.properties对模板引擎的一些参数进行配置。<br />
</p>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1276436.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41930/" target="_blank">[新闻]科学家在世界最大对撞机中观察到首批粒子</a>]]></description></item><item><title>IE对input元素onchange事件的支持BUG</title><link>http://www.cnblogs.com/goody9807/archive/2008/08/22/1273774.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Fri, 22 Aug 2008 01:41:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/22/1273774.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1273774.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/22/1273774.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1273774.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1273774.html</trackback:ping><description><![CDATA[<p>昨天发现VS的验证控件会造成IE出现一个超级搞笑的BUG（<a href="http://www.cnblogs.com/dingxue/archive/2007/03/22/683401.html" target="_blank" mce_href="http://www.cnblogs.com/dingxue/archive/2007/03/22/683401.html">由验证控件引起的IE的超级爆笑BUG </a>），因为VS生成的代码中有N多Javascript，当时也没空去看到底是哪里出的问题，今天早上醒得太早了，终于有时间看看到底是什么原因了。</p>
<p>经测试，最后发现是IE对input元素的onchange事件支持有问题，下面来看代码：</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">&lt;</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">IE对input列素onchange事件的支持BUG测试</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">script&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text/javascript"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000; background-color: #f5f5f5"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; background-color: #f5f5f5">function</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;showTip(){<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">Tip</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">).style.display</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">inline</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">script</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">style</span><span style="color: #0000ff">="width:400px;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="txt1"</span><span style="color: #ff0000">&nbsp;onchange</span><span style="color: #0000ff">="showTip()"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="Tip"</span><span style="color: #ff0000">&nbsp;style</span><span style="color: #0000ff">="display:none;"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">这里是提示信息，在页面加载时时是隐藏的</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这行字用来显示到页面上</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">input&nbsp;</span><span style="color: #ff0000">type</span><span style="color: #0000ff">="text"</span><span style="color: #ff0000">&nbsp;name</span><span style="color: #0000ff">="txt2"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
<p>运行上面的代码，在第一个文本框里随便输出些什么，然后用<strong>鼠标</strong>点击第二个文本框，看光标的位置，按下Backspace键试试，问题出现！然后重新打开页面，焦点移到第一个文本框里，不输入任何东西然后点击第二个文本框，问题没有出现。</p>
<p>按一般理解上的意义来说，onchange应该是在文本框里内容有变化时发现，就是每输入一个字符都应该触发一次，然而结果却表明IE是在输入时并没有触发，而是在input失去焦点时触发了onchange事件，&#8220;基本等同于&#8221;onblur事件，但onblur事件却没有这个BUG，说明IE对onchange支持有问题。</p>
<p>上面的代码现BUG后，光标停留在&#8220;这行字用来显示到页面上&#8221;这一行的后面，这一行的位置在触发事件前本是第二个文本框所在位置，难道IE只记住了位置？再试一下，把代码中的div宽度缩小为200px，再试一次，BUG重现，而且由于Tip出来的字折了两次行，所以光标停留在&#8220;这里是提示信息，在页面加载时时是隐藏的&#8221;这一行的后面，光标所在位置还是刚才第二个文本框所在的位置，看来，当onchange事件发生时，IE记住了鼠标点击的位置，而且记住了鼠标点击的元素将是一个input，而在这之后才执行了onchange事件指定的操作，很不幸，IE原来记住的位置已经不是原来的input了，但IE却没有理会，继续着它的操作，于是就出现了问题</p>
<p>虽然光标停留在那个位置，可以输入东西，可以用Backspace删除，但却不能够用方向键控制光标的移动，Backspace可以使光标向后移，但除了输入字符就再没办法让光标向前移。当提示文字折两行以上时，光标并不是停到整个提示文字的最后面，而是原来文本框所在的那一行，这时候用Backspace删除时，其实是实现的Del键操作，并没有删除前面的东西，而是删除了后面的<strong>字符</strong>，直到后面不再有<strong>字符</strong>才开始删除前面的<strong>元素</strong>，在任意位置打一个回车进去，当前位置都会出现一个空行，而这时，光标被移到了每二个文本框里</p>
<p>试过几个版本的IE和一些IE内核的其他浏览器，都存在这个问题，看来是历史遗留问题了，期待着强人出来研究一下onchange事件触发时，IE内部到底发生了什么才导致如此搞笑？</p>
<div id="MySignature">
<div style="color: #f60">版权声明：本文原创发表于<a href="http://www.cnblogs.com/" target="_blank">博客园</a>，作者为<a href="http://www.cnblogs.com/dingxue" target="_blank">丁学</a><br />
本文版权归作者和博客园共有，欢迎转载，但未经作者同意必须保留此段声明，且在文章页面明显位置给出原文连接，否则视为侵权。</div>
</div>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1273774.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41929/" target="_blank">[新闻]阿里巴巴利润增1.36倍</a>]]></description></item><item><title>C# 实现任务栏图标程序</title><link>http://www.cnblogs.com/goody9807/archive/2008/08/21/1273381.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Thu, 21 Aug 2008 09:05:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/21/1273381.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1273381.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/21/1273381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1273381.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1273381.html</trackback:ping><description><![CDATA[<div class="postbody">这是一个.Net平台上用C# 写的可以停放在任务栏上的图标程序，类似于SQL管理器、防病毒软件图标及OICQ图标等。 <br />
<br />
<strong>一、图标程序基本概念 </strong><br />
<br />
我们这里所指的图标程序是类似于在Windows中经常接触的停放在任务栏上，在后台运行的病毒监视，SQL服务管理器等程序。这些程序启动后形成一个图标停在任务栏上，具有以下的外观特征： <br />
双击图标可打开程序主窗口。 <br />
当鼠标停在图标上时显示提示信息。 <br />
在图标上点击鼠标右键可以弹出一个快捷菜单，通过点击快捷菜单上的菜单项可以运行相应的程序功能。 <br />
<br />
<strong>二、程序使用类简介 </strong><br />
<br />
.Net提供了非常多的类，我们在开发过程中只需要使用其提供的各种类就能够实现我们的大部份功能，.Net平台中的类有的是封装的，有的是虚拟的，大多数的都是一般的公共类。你可以直接构造这些公共类的实例，也可以通过继承而使用类的全部功能。在本程序中，我们使用了很多.Net类，下面，我将分别对主要的类作简单介绍！ <br />
<br />
*System.Windows.Fomrs.NotifyIcon类 <br />
<br />
这是本程序中最主要的类，其从Component类继承的一个封装类，不可继承，主要功能是产生一个可以停放在任务栏最右边的图标程序。下面是其主要成员介绍： <br />
构造函数(Constructor Function) <br />
public NotifyIcon(); 不带任何参数，直接构造一个NotifyIcon对象。 <br />
Public NotifyIcon(IContainer container); 带一个Icontainer参数，代表NotifyIcon容器控件。 <br />
<br />
属性(Properties) <br />
ContextMenu 对象的弹出式菜单。 <br />
Icon 对象的图标 <br />
Text 对象的ToolTip文本，也即是当鼠标停在对象上时显示的文本。 <br />
Visible 表示对象是否是可见的。 <br />
<br />
事件（Events） <br />
Clcik 当单击对象图标时引发。 <br />
DoubleClick 当双击对象图标时引发。 <br />
<br />
*System.Windows.Forms.Application类 <br />
<br />
Windows Forms应用程序启动类，提供表态的方法管理运用程序，如启动Windows Forms使用Application.Run(Form)，而退出程序使用Application.Exit()等。 <br />
<br />
*System.Windows.Forms.Form类 <br />
<br />
Windows Forms程序窗体类，视窗程序的窗体一般都是直接或间接了从该类产生，如产生一个简单的窗体使用new Forms()即可。在一般应用程序中，由于用户窗体上还要根据自己的需要添加更多的可视化元素及控件，如按钮、标签、文本框等；因此，大多数我们在使用Form类时都是从该类派生出用户自己的窗体类。 <br />
<br />
*System.Windows.Forms.Button类 <br />
<br />
按钮控件类，提供一个可视的按钮元素，一般情况下通过Text属性设置按钮的显示文本，再为按钮添加Click事件响应函数即可使用。 <br />
<br />
*System.Windows.Forms.Label类 <br />
<br />
文字标签类，可以通过设置其Text属性使其在窗体上显示一般的文字信息。 <br />
System.Windows.Forms.MenuItem类 <br />
<br />
Windows Forms菜单项类，可以生成一个简单的菜单项，菜单项是所有菜单的基本构成元素，通过该类可以设置菜单项的外观显示属性及事件响应方法等。该类提供了多种生成菜单项对象的构造函数，在实际应用中一般采用MenuItem(string Text)的方法生成一个显示文本为Text的菜单项。菜单项类提供Click事件使得用户点击菜单时可以响应。 <br />
<br />
*System.Windows.Forms.ContextMenu类 <br />
<br />
弹出菜单类，生成一个弹出式菜单对象。其包括了一个菜单项集合属性，使其可以非常方便的管理及存取弹出菜单的各项。生成弹出菜单对象使用其构造函数，有两种方法：一种是直接使用ContextMenu()，不带任何参数。另一种是使用ContextMenu(MenuItem[] menus)，代有一个菜单项数组作为参数。 <br />
<br />
<strong>三、程序设计及主要代码 </strong><br />
<em>程序设计</em> <br />
本程序使用Visual Studio .Net编写，首先通过新建Windows应用项目生成一个Windows Forms初始窗体，在窗体上添加一个文本为&#8220;隐藏窗体&#8221;的按钮，及一个说明演示程序的标签，并双击按钮，在其Click事件响应方法中添加隐藏窗休的代码。然后在工具栏面板中找到NotifyIcon控件，并把其拖到窗体上，然后设置其Text属性及Icon属性（Icon属性为图片，可以通过控件属性栏选择设置）。双击窗体为窗体的Load事件响应方法添加NotifyIcon类的初始化代码，完成后即可直接编译运行。如下图所示： <br />
<br />
<a href="http://www.ccw.com.cn/htm/app/aprog/01_12_6_3a.gif" target="_blank">http://www.ccw.com.cn/htm/app/aprog/01_12_6_3a.gif</a><br />
<br />
<em>程序主要代码及注释</em><br />
<br />
下面将列出本程序中部份主要代码及详细注释，以供大家加深对程序的理解。<br />
<br />
public class Form1 : System.Windows.Forms.Form <br />
<br />
{ <br />
<br />
//定义一个NotifyIcon对象 <br />
<br />
private System.Windows.Forms.NotifyIcon notifyIcon1; <br />
<br />
private void InitializeComponent()//Visual Studio .Net自动产生，窗体初始化时执行 <br />
<br />
{ <br />
<br />
//创建NotifyIcon对象并设置其基本的属性如Icon，Text及Visible等 <br />
<br />
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components); <br />
<br />
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon"))); <br />
<br />
this.notifyIcon1.Text = "这是我的测试程序，还Cool吧！"; <br />
<br />
this.notifyIcon1.Visible = true; <br />
<br />
} <br />
<br />
static void Main()&nbsp;&nbsp;<br />
<br />
{ <br />
<br />
Application.Run(new Form1());//启动运行程序 <br />
<br />
} <br />
<br />
<br />
<br />
private void Form1_Load(object sender, System.EventArgs e) <br />
<br />
{ <br />
<br />
//生成4个菜单项对象，显示文本分别为"显示窗口"、"隐藏窗口"、"执行程序"、"退出程序" <br />
<br />
MenuItem menuItem1=new MenuItem("显示窗口"); <br />
<br />
MenuItem menuItem2=new MenuItem("隐藏窗口"); <br />
<br />
MenuItem menuItem3=new MenuItem("执行程序"); <br />
<br />
MenuItem menuItem4=new MenuItem("退出程序"); <br />
<br />
//分别为4个菜单项添加Click事件响应函数 <br />
<br />
menuItem1.Click+=new System.EventHandler(this.menuItem1_Click); <br />
<br />
menuItem2.Click+=new System.EventHandler(this.menuItem2_Click); <br />
<br />
menuItem3.Click+=new System.EventHandler(this.menuItem3_Click); <br />
<br />
menuItem4.Click+=new System.EventHandler(this.menuItem4_Click); <br />
<br />
//设置NotifyIcon对象的ContextMenu属性为生面的弹出菜单对象 <br />
<br />
notifyIcon1.ContextMenu=new ContextMenu(new MenuItem[]{menuItem1,menuItem2,menuItem3,menuItem4}); <br />
<br />
//当用户双击程序图标时将执行相应的函数 <br />
<br />
notifyIcon1.DoubleClick+=new System.EventHandler(this.notifyIcon_DBClick); <br />
<br />
} <br />
<br />
private void menuItem1_Click(object sender,System.EventArgs e)//&#8220;显示窗口&#8221;菜单的响应方法 <br />
<br />
{ <br />
<br />
if(this.Visible==false)this.Visible=true;//假如当前窗口没显示则显示当前窗口 <br />
<br />
} <br />
<br />
private void menuItem2_Click(object sender,System.EventArgs e)//"隐藏窗口"菜单的响应方法 <br />
<br />
{ <br />
<br />
if(this.Visible==true)this.Visible=false;//假如当前窗口为显示的则隐藏窗口 <br />
<br />
} <br />
<br />
private void menuItem3_Click(object sender,System.EventArgs e)//"执行程序"菜单的响应方法 <br />
<br />
{ <br />
<br />
//显示一个提示信息框，表示事件已经得到响应 <br />
MessageBox.Show("演示程序已经执行，此处功能就是显示一个提示框！","提示信息",MessageBoxButtons.OK,MessageBoxIcon.Information); <br />
<br />
} <br />
<br />
private void menuItem4_Click(object sender,System.EventArgs e)//&#8220;退出程序&#8221;菜单的响应方法 <br />
<br />
{ <br />
<br />
this.Close();//关闭当前对象(即窗体) <br />
<br />
Application.Exit();//通过Application类的静态方法Exit()退出应用程序 <br />
<br />
} <br />
<br />
<br />
<br />
private void button1_Click(object sender, System.EventArgs e)//用户单击按钮时的响应方法 <br />
<br />
{ <br />
<br />
this.Visible=false;//隐藏当前主窗口 <br />
<br />
} <br />
<br />
private void notifyIcon_DBClick(object sender, System.EventArgs e)//用户双击应用程序图标进的响应方法 <br />
<br />
{ <br />
<br />
this.Visible=true;//显示当前主窗口 <br />
<br />
} <br />
<br />
} <br />
<br />
<br />
<strong>四、程序运行</strong><br />
<br />
运行程序，将显示一个主窗口，此时还可以看到在任务栏上面多了一个图标。当鼠标移到其上停留一下时，将显示一个简单的提示信息，点击窗口上的&#8220;隐藏窗口&#8221;按钮将隐藏主窗口，如下图所示： <br />
<a href="http://www.ccw.com.cn/htm/app/aprog/01_12_6_3b.gif" target="_blank">http://www.ccw.com.cn/htm/app/aprog/01_12_6_3b.gif</a><br />
在图标上点击鼠标右键将显示一个弹出菜单，此时可以选择相应的菜单执行相应的功能如&#8220;显示窗口&#8221;、&#8220;隐藏窗口&#8221;、&#8220;退出程序等&#8221;，如下图所示： <br />
<a href="http://www.ccw.com.cn/htm/app/aprog/01_12_6_3c.gif" target="_blank">http://www.ccw.com.cn/htm/app/aprog/01_12_6_3c.gif</a><br />
例如，在弹出的菜单中点击&#8220;执行程序&#8221;将信息一个信息提示框，如下图所示： <br />
<a href="http://www.ccw.com.cn/htm/app/aprog/01_12_6_3d.gif" target="_blank">http://www.ccw.com.cn/htm/app/aprog/01_12_6_3d.gif</a> <br />
</div>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1273381.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41928/" target="_blank">[新闻]Google Gears覆盖四大浏览器 Safari版推出</a>]]></description></item><item><title>GridView控件修改、删除示例（修改含有DropDownList控件） </title><link>http://www.cnblogs.com/goody9807/archive/2008/08/05/1261455.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Tue, 05 Aug 2008 13:18:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/05/1261455.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1261455.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/05/1261455.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1261455.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1261455.html</trackback:ping><description><![CDATA[摘要: GridViewUp.aspx文件代码：&lt;%@PageLanguage="C#"AutoEventWireup="true"CodeFile="GridViewUp.aspx.cs"Inherits="gridview_GridViewUp"%&gt;&lt;!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.&nbsp;&nbsp;<a href='http://www.cnblogs.com/goody9807/archive/2008/08/05/1261455.html'>阅读全文</a><img src ="http://www.cnblogs.com/goody9807/aggbug/1261455.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41927/" target="_blank">[新闻]Internet Explorer 8 Beta 2 发布</a>]]></description></item><item><title>为GridView-Delete列添加确认对话框（2种方法）</title><link>http://www.cnblogs.com/goody9807/archive/2008/08/05/1261147.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Tue, 05 Aug 2008 09:03:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/08/05/1261147.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1261147.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/08/05/1261147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1261147.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1261147.html</trackback:ping><description><![CDATA[<p>方法一：</p>
<p>给Delete列添加确认对话框最简单的方法是把CommandField的DeleteText属性设置为：</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">div&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="JavaScript:return&nbsp;confirm('Are&nbsp;you&nbsp;sure&nbsp;to&nbsp;delete?')"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Delete</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>加入div后会产生换行效果，若不想要换行效果可以使用span：</p>
<p>&nbsp;</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">&lt;</span><span style="color: #800000">span&nbsp;</span><span style="color: #ff0000">onclick</span><span style="color: #0000ff">="JavaScript:return&nbsp;confirm('Are&nbsp;you&nbsp;sure&nbsp;to&nbsp;delete?')"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000">Delete</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">span</span><span style="color: #0000ff">&gt;</span></div>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>方法二：</p>
<p>&nbsp;</p>
<p>这种方法窃记住要判断状态，否则在有编辑按钮的时候找不到删除按钮的</p>
<div style="border-right: windowtext 0.5pt solid; padding-right: 5.4pt; border-top: windowtext 0.5pt solid; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; border-left: windowtext 0.5pt solid; width: 95%; word-break: break-all; padding-top: 4px; border-bottom: windowtext 0.5pt solid">
<div><img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;GridView1_RowDataBound(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;GridViewRowEventArgs&nbsp;e)<br />
<img id="_82_498_Open_Image" onclick="this.style.display='none'; document.getElementById('_82_498_Open_Text').style.display='none'; document.getElementById('_82_498_Closed_Image').style.display='inline'; document.getElementById('_82_498_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="_82_498_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_82_498_Closed_Text').style.display='none'; document.getElementById('_82_498_Open_Image').style.display='inline'; document.getElementById('_82_498_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_82_498_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_82_498_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">如果是绑定数据行</span><span style="color: #008000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(e.Row.RowType&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;DataControlRowType.DataRow)<br />
<img id="_173_490_Open_Image" onclick="this.style.display='none'; document.getElementById('_173_490_Open_Text').style.display='none'; document.getElementById('_173_490_Closed_Image').style.display='inline'; document.getElementById('_173_490_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_173_490_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_173_490_Closed_Text').style.display='none'; document.getElementById('_173_490_Open_Image').style.display='inline'; document.getElementById('_173_490_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_173_490_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_173_490_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(e.Row.RowState&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;DataControlRowState.Normal&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;e.Row.RowState&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;DataControlRowState.Alternate)<br />
<img id="_305_480_Open_Image" onclick="this.style.display='none'; document.getElementById('_305_480_Open_Text').style.display='none'; document.getElementById('_305_480_Closed_Image').style.display='inline'; document.getElementById('_305_480_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="_305_480_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_305_480_Closed_Text').style.display='none'; document.getElementById('_305_480_Open_Image').style.display='inline'; document.getElementById('_305_480_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_305_480_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">...</span><span id="_305_480_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((LinkButton)e.Row.Cells[</span><span style="color: #000000">6</span><span style="color: #000000">].Controls[</span><span style="color: #000000">0</span><span style="color: #000000">]).Attributes.Add(</span><span style="color: #000000">"</span><span style="color: #000000">onclick</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">javascript:return&nbsp;confirm('你确认要删除："</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;e.Row.Cells[</span><span style="color: #000000">1</span><span style="color: #000000">].Text&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">"吗?')</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
</div>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1261147.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41927/" target="_blank">[新闻]Internet Explorer 8 Beta 2 发布</a>]]></description></item><item><title>Asp.Net GridView點擊標題排序方法</title><link>http://www.cnblogs.com/goody9807/archive/2008/07/31/1257458.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Thu, 31 Jul 2008 09:17:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/07/31/1257458.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1257458.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/07/31/1257458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1257458.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1257458.html</trackback:ping><description><![CDATA[今天需要用到在GridView中點擊標題排序，琢磨了半天，終於成功了。在看代碼之前需要說明一點：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView本身有一个Sort()函数：public virtual void Sort ( string sortExpression,&nbsp;&nbsp;&nbsp; SortDirection sortDirection)使用上相当方便。但在实际使用中，常用的是点击每一列的标题来排序，点击标题会触发：protected void GridView_Sorting(object sender, GridViewSortEventArgs e)事件。从GridViewSortEventArgs中可以拿到SortDirection和SortExpression。但是GridView.Sort()本身也会触发GridView_Sorting()，如果在GridView_Sorting()中调用GridView.Sort()会无限的循环，直到堆栈溢出。這里使用DataView.Sort属性来排序，(Sort方法會觸發<span style="color: #000000">Sorting 事件</span>)，再重新綁定到GridView上。<br />
<br />
代碼如下：<br />
<br />
1、在源碼中給GridView中加入AllowSorting屬性<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">1、在源碼的GridView中加入AllowSorting="true"&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">asp:GridView&nbsp;ID</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">gvData</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;runat</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">server</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;&nbsp;AllowSorting</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">true</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">&lt;/</span><span style="color: #000000">asp:GridView</span><span style="color: #000000">&gt;</span></div>
<br />
2、&nbsp;&nbsp;&nbsp; ClbComunication.clsComunication類中定義了一個屬性，用於暫存從數據庫得到的資料：<br />
&nbsp;&nbsp;&nbsp; 注：定義此屬性是因為頁面顯示后，剛才得的資料表（mdatatable）的資料會被清空。所以將得到的資料暫存於類中，便於調用。<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;存放資料DataView屬性的變量<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;DataView&nbsp;dvValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataView();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;存放資料DataView屬性<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;DataView&nbsp;dv<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000">&nbsp;{&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;dvValue;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;{&nbsp;dvValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;value;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span></div>
<br />
3、將資料放入類的DataView屬性中保存<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">得到資料(BOFactory.bofactory.GetOracleDataTable(mSQL_Selection)為從數據庫得到資料)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DataTable&nbsp;mdatatable&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;BOFactory.bofactory.GetOracleDataTable(mSQL_Selection);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">將需要排序的資料放入DataView中(主要用到此句)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClbComunication.clsComunication.dv&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataView(mdatatable);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">資料與界面上的GridView綁定</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gvData.DataBind();<br />
</span></div>
<br />
4、訂閱GridView的Sorting事件<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">GridView的Sorting事件</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;gvData.Sorting&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;GridViewSortEventHandler(gvData_Sorting);</span></div>
<br />
5、編輯GridView的Sorting事件方法，其中用到的GridViewSortDirection屬性的定義如"6"所示<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;GridView的Sorting事件方法<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="sender"&gt;&lt;/param&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="e"&gt;&lt;/param&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;gvData_Sorting(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;GridViewSortEventArgs&nbsp;e)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;sortExpression&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;e.SortExpression.ToUpper();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(GridViewSortDirection&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">SortDirection.Ascending)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GridViewSortDirection&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SortDirection.Descending;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">排序並重新綁定</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindData(sortExpression,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">DESC</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(GridViewSortDirection&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;SortDirection.Descending)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GridViewSortDirection&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SortDirection.Ascending;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">排序並重新綁定</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bindData(sortExpression,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">ASC</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
6、定義排序方向屬性，此属性用viewstate保存每次排序的方向：<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;排序方向屬性<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;SortDirection&nbsp;GridViewSortDirection<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(ViewState[</span><span style="color: #800000">"</span><span style="color: #800000">sortDirection</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewState[</span><span style="color: #800000">"</span><span style="color: #800000">sortDirection</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SortDirection.Ascending;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;(SortDirection)ViewState[</span><span style="color: #800000">"</span><span style="color: #800000">sortDirection</span><span style="color: #800000">"</span><span style="color: #000000">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ViewState[</span><span style="color: #800000">"</span><span style="color: #800000">sortDirection</span><span style="color: #800000">"</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
7、排序並綁定數據<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;排序並綁定數據<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;/summary&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="sortExpression"&gt;&lt;/param&gt;</span><span style="color: #008000"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #008000">&nbsp;</span><span style="color: #808080">&lt;param&nbsp;name="sortDirection"&gt;&lt;/param&gt;</span><span style="color: #808080"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;bindData(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;sortExpression,&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;sortDirection)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClbComunication.clsComunication.dv.Sort&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sortExpression;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(sortDirection&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;String.Empty)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ClbComunication.clsComunication.dv.Sort&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sortExpression</span><span style="color: #000000">+</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;sortDirection;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gvData.DataSource&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ClbComunication.clsComunication.dv;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gvData.DataBind();<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
</span></div>
<br />
<br />
其它參考：<br />
http://www.cnblogs.com/jackyrong/archive/2006/05/26/409788.html<br />
http://stlh.blogspot.com/2008/02/gridview-sort.html<br />
<img src ="http://www.cnblogs.com/goody9807/aggbug/1257458.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41924/" target="_blank">[新闻]中国软件协会：SAP羞辱国产软件是不正当竞争</a>]]></description></item><item><title>Sample Code: Bidirectional Sorting in ASP.NET Repeater control</title><link>http://www.cnblogs.com/goody9807/archive/2008/07/31/1257460.html</link><dc:creator>PointNet</dc:creator><author>PointNet</author><pubDate>Thu, 31 Jul 2008 09:17:00 GMT</pubDate><guid>http://www.cnblogs.com/goody9807/archive/2008/07/31/1257460.html</guid><wfw:comment>http://www.cnblogs.com/goody9807/comments/1257460.html</wfw:comment><comments>http://www.cnblogs.com/goody9807/archive/2008/07/31/1257460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/goody9807/comments/commentRss/1257460.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/goody9807/services/trackbacks/1257460.html</trackback:ping><description><![CDATA[<p><font face="Verdana" size="2"><strong>.aspx</strong></font></p>
<p><font face="Verdana" size="1">&lt;asp:Repeater ID="Repeater1" Runat="server" EnableViewState="False"&gt;<br />
&nbsp;&lt;ItemTemplate&gt;<br />
&nbsp;&lt;table width="100%" cellspacing="0" cellpadding="0"&gt;<br />
&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&lt;td&nbsp; width=25%&gt;&lt;%# DataBinder.Eval(Container.DataItem, "Employeeid") %&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;td width=25% &gt;&lt;%# DataBinder.Eval(Container.DataItem, "FirstName") %&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;td width=25% &gt;&lt;%# DataBinder.Eval(Container.DataItem, "LastName") %&gt;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;td width=25% &gt;&lt;%# DataBinder.Eval(Container.DataItem, "Title") %&gt;&lt;/td&gt;<br />
&nbsp;&lt;/tr&gt;<br />
&nbsp;&lt;/table&gt;<br />
&nbsp;&lt;/ItemTemplate&gt;<br />
&nbsp;&lt;HeaderTemplate&gt;<br />
&nbsp;&lt;table width="100%" cellspacing="0" cellpadding="0"&gt;<br />
&nbsp;&lt;tr&gt;<br />
&nbsp;&nbsp;&lt;td width=25%&gt;<br />
&nbsp;&nbsp;&lt;asp:LinkButton ID="lnkEmployeeid" Runat="server" OnClick="SortEmployeeIdClick"&gt;Employeeid&lt;/asp:LinkButton&gt;<br />
&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;td width=25%&gt;<br />
&nbsp;&nbsp;&lt;asp:LinkButton ID="lnkFirstName" Runat="server" OnClick="SortFirstNameClick"&gt;FirstName&lt;/asp:LinkButton&gt;<br />
&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;td width=25%&gt;<br />
&nbsp;&nbsp;&lt;asp:LinkButton ID="lnkLastName" Runat="server" OnClick="SortLastNameClick"&gt;LastName&lt;/asp:LinkButton&gt;<br />
&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&nbsp;&lt;td width=25% &gt;<br />
&nbsp;&nbsp;&lt;asp:LinkButton ID="lnkTitle" Runat="server" OnClick="SortTitleClick"&gt;Title&lt;/asp:LinkButton&gt;<br />
&nbsp;&nbsp;&lt;/td&gt;<br />
&nbsp;&lt;/tr&gt;<br />
&nbsp;&lt;/table&gt;<br />
&nbsp;&lt;/HeaderTemplate&gt;<br />
&lt;/asp:Repeater&gt;<br />
</p>
</font>
<p><font face="Verdana" size="2"><strong>VB.NET</strong><br />
<br />
<font size="1">Dim SortField As String<br />
Dim myconnection As SqlConnection<br />
Dim myda As SqlDataAdapter<br />
Dim ds As DataSet<br />
Dim strConn As String<br />
Dim SQLStmt As String = "Select * from Employees&nbsp; "</font></font></p>
<p><font face="Verdana" size="1">Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&#8217; Put user code to initialize the page here<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;BindData()<br />
End Sub &#8217;Page_Load</font></p>
<p><font face="Verdana" size="1">Sub BindData()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;strConn = "Server=localhost;uid=sa;password=;database=northwind;"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;myconnection = New SqlConnection(strConn)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;myda = New SqlDataAdapter(SQLStmt, myconnection)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;ds = New DataSet<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;myda.Fill(ds, "AllTables")<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Repeater1.DataSource = ds<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Repeater1.DataBind()<br />
End Sub &#8217;BindData</font></p>
<p><font face="Verdana" size="1">Sub SortData(ByVal SortExpression As String)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;If ViewState("SortOrder") Is Nothing Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ViewState("SortOrder") = " ASC"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;If ViewState("SortOrder").ToString() = " ASC" Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ViewState("SortOrder") = " DESC"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;ViewState("SortOrder") = " ASC"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;End If<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;End If<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SQLStmt = SQLStmt + " ORDER BY " + SortExpression.ToString() + " " + ViewState("SortOrder")<br />
&nbsp;BindData()<br />
End Sub &#8217;SortData</font></p>
<p><font face="Verdana" size="1">Protected Sub SortEmployeeIdClick(ByVal sender As Object, ByVal e As EventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortField = "EmployeeId"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortData(SortField)<br />
End Sub &#8217;SortEmployeeIdClick</font></p>
<p><font face="Verdana" size="1">Protected Sub SortFirstNameClick(ByVal sender As Object, ByVal e As EventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortField = "FirstName"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortData(SortField)<br />
End Sub &#8217;SortFirstNameClick</font></p>
<p><font face="Verdana" size="1">Protected Sub SortLastNameClick(ByVal sender As Object, ByVal e As EventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortField = "LastName"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortData(SortField)<br />
End Sub &#8217;SortLastNameClick</font></p>
<p><font face="Verdana" size="2"><font size="1">Protected Sub SortTitleClick(ByVal sender As Object, ByVal e As EventArgs)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortField = "Title"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;SortData(SortField)<br />
End Sub &#8217;SortTitleClick</font><br />
</font><font face="Verdana" size="2"></font></p>
<p><font face="Verdana" size="2"><strong>C#</strong><br />
<font size="1">string SortField;<br />
SqlConnection myconnection ; <br />
SqlDataAdapter myda ; <br />
DataSet ds ; <br />
String strConn ;<br />
string SQLStmt= "Select * from Employees&nbsp; ";</font></font></p>
<p><font face="Verdana" size="1">private void Page_Load(object sender, System.EventArgs e)<br />
{<br />
&nbsp;// Put user code to initialize the page here<br />
&nbsp;BindData();<br />
}</font></p>
<p><font face="Verdana" size="1">void BindData()<br />
{&nbsp; <br />
&nbsp;strConn = "Server=localhost;uid=sa;password=;database=northwind;";<br />
&nbsp;myconnection =new SqlConnection(strConn);<br />
&nbsp;myda = new SqlDataAdapter(SQLStmt, myconnection);<br />
&nbsp;ds = new DataSet();<br />
&nbsp;myda.Fill(ds, "AllTables");<br />
&nbsp;Repeater1.DataSource = ds;<br />
&nbsp;Repeater1.DataBind();<br />
}</font></p>
<p><font face="Verdana" size="1">void SortData(string SortExpression)<br />
{<br />
&nbsp;if (ViewState["SortOrder"] ==null)<br />
&nbsp;{<br />
&nbsp;&nbsp;ViewState["SortOrder"] = " ASC";<br />
&nbsp;}<br />
&nbsp;else if (ViewState["SortOrder"].ToString () == " ASC" )<br />
&nbsp;{<br />
&nbsp;&nbsp;ViewState["SortOrder"] = " DESC";<br />
&nbsp;}<br />
&nbsp;else<br />
&nbsp;{<br />
&nbsp;&nbsp;ViewState["SortOrder"] = " ASC";<br />
&nbsp;}<br />
&nbsp;SQLStmt = SQLStmt + " ORDER BY " + SortExpression.ToString () + " " + ViewState["SortOrder"];<br />
&nbsp;BindData();<br />
}</font></p>
<p><font face="Verdana" size="1">protected void SortEmployeeIdClick(object&nbsp; sender&nbsp; ,EventArgs&nbsp;&nbsp; e&nbsp;&nbsp; ) <br />
{<br />
&nbsp;SortField = "EmployeeId";<br />
&nbsp;SortData&nbsp; (SortField);<br />
} </font></p>
<p><font face="Verdana" size="1">protected void SortFirstNameClick(object&nbsp; sender&nbsp; ,EventArgs&nbsp;&nbsp; e&nbsp;&nbsp; ) <br />
{<br />
&nbsp;SortField = "FirstName";<br />
&nbsp;SortData&nbsp; (SortField);<br />
} </font></p>
<p><font face="Verdana" size="1">protected void SortLastNameClick(object&nbsp; sender&nbsp; ,EventArgs&nbsp;&nbsp; e&nbsp;&nbsp; ) <br />
{<br />
&nbsp;SortField = "LastName";<br />
&nbsp;SortData&nbsp; (SortField);<br />
} </font></p>
<p><font face="Verdana" size="2"><font size="1">protected void SortTitleClick(object&nbsp; sender&nbsp; ,EventArgs&nbsp;&nbsp; e&nbsp;&nbsp; ) <br />
{<br />
&nbsp;SortField = "Title";<br />
&nbsp;SortData&nbsp; (SortField);<br />
} <br />
</font></font></p>
<img src ="http://www.cnblogs.com/goody9807/aggbug/1257460.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41924/" target="_blank">[新闻]中国软件协会：SAP羞辱国产软件是不正当竞争</a>]]></description></item></channel></rss>