﻿<?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>博客园-diction</title><link>http://www.cnblogs.com/diction/</link><description>程序人生</description><language>zh-cn</language><lastBuildDate>Tue, 02 Dec 2008 09:52:07 GMT</lastBuildDate><pubDate>Tue, 02 Dec 2008 09:52:07 GMT</pubDate><ttl>60</ttl><item><title>和老外吵架必备的108句英语!</title><link>http://www.cnblogs.com/diction/archive/2008/04/14/1152599.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Mon, 14 Apr 2008 04:59:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/04/14/1152599.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1152599.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/04/14/1152599.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1152599.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1152599.html</trackback:ping><description><![CDATA[1. Stop complaining! 别发牢骚！ <br />
<p>　　2. You make me sick! 你真让我恶心！ <br />
</p>
<p>　　3. What&#8217;s wrong with you? 你怎么回事？ <br />
</p>
<p>　　4. You shouldn&#8217;t have done that! 你真不应该那样做! <br />
</p>
<p>　　5. You&#8217;re a jerk! 你是个废物/混球！ <br />
</p>
<p>　　6. Don&#8217;t talk to me like that! 别那样和我说话! <br />
</p>
<p>　　7. Who do you think you are? 你以为你是谁？ <br />
</p>
<p>　 8. What&#8217;s your problem? 你怎么回事啊？ <br />
</p>
<p>　　9. I hate you! 我讨厌你！ <br />
</p>
<p>　　10. I don&#8217;t want to see your face! 我不愿再见到你！ <br />
</p>
<p>　　11. You&#8217;re crazy! 你疯了! <br />
</p>
<p>　　12. Are you insane/crazy/out of your mind? 你疯了吗？（美国人绝对常用！） <br />
</p>
<p>　　13. Don&#8217;t bother me. 别烦我。 <br />
</p>
<p>　　14. Knock it off. 少来这一套。 </p>
<p>　　15. Get out of my face. 从我面前消失！ <br />
</p>
<p>　　16. Leave me alone. 走开。 <br />
</p>
<p>　　17. Get lost.滚开！ <br />
</p>
<p>　　18. Take a hike! 哪儿凉快哪儿歇着去吧。 <br />
</p>
<p>　　19. You piss me off. 你气死我了。 <br />
</p>
<p>　　20. It&#8217;s none of your business. 关你屁事！ <br />
</p>
<p>　　21. What&#8217;s the meaning of this? 这是什么意思？ <br />
</p>
<p>　　22. How dare you! 你敢！ <br />
</p>
<p>　　23. Cut it out. 省省吧。 <br />
</p>
<p>　　24. You stupid jerk! 你这蠢猪！ </p>
<p>　　25. You have a lot of nerve. 脸皮真厚。 <br />
</p>
<p>　　26. I&#8217;m fed up. 我厌倦了。 <br />
</p>
<p>　　27. I can&#8217;t take it anymore. 我受不了了！（李阳老师常用） <br />
</p>
<p>　　28. I&#8217;ve had enough of your garbage. 我听腻了你的废话。 <br />
</p>
<p>　　29. Shut up! 闭嘴！ <br />
</p>
<p>　　30. What do you want? 你想怎么样？ <br />
</p>
<p>　　31. Do you know what time it is? 你知道现在都几点吗？ <br />
</p>
<p>　　32. What were you thinking? 你脑子进水啊？ <br />
</p>
<p>　　33. How can you say that? 你怎么可以这样说？ <br />
</p>
<p>　　34. Who says? 谁说的？ <br />
</p>
<p>　　35. That&#8217;s what you think! 那才是你脑子里想的！ <br />
</p>
<p>　　36. Don&#8217;t look at me like that. 别那样看着我。 <br />
</p>
<p>　　37. What did you say? 你说什么？ <br />
</p>
<p>　　38. You are out of your mind. 你脑子有毛病！ <br />
</p>
<p>　　39. You make me so mad.你气死我了啦。 <br />
</p>
<p>　　40. Drop dead. 去死吧！ <br />
</p>
<p>　　41. F*** off. 滚蛋。 <br />
</p>
<p>　　42. Don&#8217;t give me your shit. 别跟我胡扯。 <br />
</p>
<p>　　43. Don&#8217;t give me your excuses/ No more excuses. 别找借口。 　 <br />
</p>
<p>　　44. You&#8217;re a pain in the ass. 你这讨厌鬼。 <br />
</p>
<p>　　45. You&#8217;re an asshole. 你这缺德鬼。 <br />
</p>
<p>　　46. You bastard! 你这杂种！ <br />
</p>
<p>　　47. Get over yourself. 别自以为是。 <br />
</p>
<p>　　48. You&#8217;re nothing to me. 你对我什么都不是。 <br />
</p>
<p>　　49. It&#8217;s not my fault. 不是我的错。 <br />
</p>
<p>　　50. You look guilty. 你看上去心虚。 <br />
</p>
<p>　　51. I can&#8217;t help it. 我没办法。 <br />
</p>
<p>　　52. That&#8217;s your problem. 那是你的问题。 <br />
</p>
<p>　　53. I don&#8217;t want to hear it. 我不想听！ <br />
</p>
<p>　　54. Get off my back. 少跟我罗嗦。 <br />
</p>
<p>　　55. Give me a break. 饶了我吧。 <br />
</p>
<p>　　56. Who do you think you&#8217;re talking to? 你以为你在跟谁说话？ <br />
</p>
<p>　　57. Look at this mess! 看看这烂摊子！ <br />
</p>
<p>　　58. You&#8217;re so careless. 你真粗心。 <br />
</p>
<p>　　59. Why on earth didn&#8217;t you tell me the truth? 你到底为什么不跟我说实话？ <br />
</p>
<p>　　60. I&#8217;m about to explode! 我肺都快要气炸了！ <br />
</p>
<p>　　61. What a stupid idiot! 真是白痴一个！ <br />
</p>
<p>　　62. I&#8217;m not going to put up with this! 我再也受不了啦！ <br />
</p>
<p>　　63. I never want to see your face again! 我再也不要见到你！ <br />
</p>
<p>　　64. That&#8217;s terrible. 真糟糕！ <br />
</p>
<p>　　65. Just look at what you&#8217;ve done! 看看你都做了些什么！ <br />
</p>
<p>　　66. I wish I had never met you. 我真后悔这辈子遇到你！ <br />
</p>
<p>　　67. You&#8217;re a disgrace. 你真丢人！ <br />
</p>
<p>　　68. I&#8217;ll never forgive you! 我永远都不会饶恕你！ <br />
</p>
<p>　　69. Don&#8217;t nag me! 别在我面前唠叨！ <br />
</p>
<p>　　70. I&#8217;m sick of it. 我都腻了。 <br />
</p>
<p>　　71. You&#8217;re such a *****! 你这个,,婊,,子! <br />
</p>
<p>　　72. Stop screwing/ fooling/ messing around! 别鬼混了！ <br />
</p>
<p>　　73. Mind your own business! 管好你自己的事！ <br />
</p>
<p>　　74. You&#8217;re just a good for nothing bum! 你真是一个废物！/ 你一无是处！ <br />
</p>
<p>　　75. You&#8217;ve gone too far! 你太过分了！ <br />
</p>
<p>　　76. I loathe you! 我讨厌你！ <br />
</p>
<p>　　77. I detest you! 我恨你！ <br />
</p>
<p>　　78. Get the hell out of here! 滚开! <br />
</p>
<p>　　79. Don&#8217;t be that way! 别那样！ <br />
</p>
<p>　　80. Can&#8217;t you do anything right? 成事不足，败事有余。 <br />
</p>
<p>　　81. You&#8217;re impossible. 你真不可救药。 <br />
</p>
<p>　　82. Don&#8217;t touch me! 别碰我！ <br />
</p>
<p>　　83. Get away from me! 离我远一点儿！ <br />
</p>
<p>　　84. Get out of my life. 我不愿再见到你。/ 从我的生活中消失吧。 <br />
</p>
<p>　　85. You&#8217;re a joke! 你真是一个小丑！ <br />
</p>
<p>　　86. Don&#8217;t give me your attitude. 别跟我摆架子。 <br />
</p>
<p>　　87. You&#8217;ll be sorry. 你会后悔的。 <br />
</p>
<p>　　88. We&#8217;re through. 我们完了！ <br />
</p>
<p>　　89. Look at the mess you&#8217;ve made! 你搞得一团糟！ <br />
</p>
<p>　　90. You&#8217;ve ruined everything. 全都让你搞砸了。 <br />
</p>
<p>　　91. I can&#8217;t believe your never. 你好大的胆子！ <br />
</p>
<p>　　92. You&#8217;re away too far. 你太过分了。 <br />
</p>
<p>　　93. I can&#8217;t take you any more! 我再也受不了你啦！ <br />
</p>
<p>　　94. I&#8217;m telling you for the last time! 我最后再告诉你一次！ <br />
</p>
<p>　　95. I could kill you! 我宰了你！ <br />
</p>
<p>　　96. That&#8217;s the stupidest thing I&#8217;ve ever heard! 那是我听到的最愚蠢的事！ <br />
　　(比尔&#183;盖茨常用) <br />
</p>
<p>　　97. I can&#8217;t believe a word you say. 我才不信你呢! <br />
</p>
<p>　　98. You never tell the truth！ 你从来就不说实话！ <br />
</p>
<p>　　99. Don&#8217;t push me ! 别逼我！ <br />
</p>
<p>　　100. Enough is enough! 够了够了！ <br />
</p>
<p>　　101. Don&#8217;t waste my time anymore. 别再浪费我的时间了！ <br />
</p>
<p>　　102. Don&#8217;t make so much noise. I&#8217;m working. 别吵，我在干活。 <br />
</p>
<p>　　103. It&#8217;s unfair. 太不公平了。 <br />
</p>
<p>　　104. I&#8217;m very disappointed. 真让我失望。 <br />
</p>
<p>　　105. Don&#8217;t panic! 别怕! <br />
</p>
<p>　　106. What do you think you are doing? 你知道你在做什么吗？ <br />
</p>
<p>　　107. Don&#8217;t you dare come back again! 你敢再回来！ <br />
</p>
<p>　　108. You asked for it. 你自找的。 <br />
</p>
<p>　 最后再送一句：Nonsense! 鬼话！<br />
</p>
<img src ="http://www.cnblogs.com/diction/aggbug/1152599.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43760/" target="_blank">[新闻]谷歌李开复:我的传奇人生源于十句箴言</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Sql server常见性能问题的总结</title><link>http://www.cnblogs.com/diction/archive/2008/03/25/1121515.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Tue, 25 Mar 2008 08:43:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/03/25/1121515.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1121515.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/03/25/1121515.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1121515.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1121515.html</trackback:ping><description><![CDATA[<font face="Verdana">
<p><font face="Verdana">1.对查询进行优化，应尽量避免全表扫描，首先应考虑在 where 及 order by 涉及的列上建立索引。&nbsp; </font></p>
<p><font face="Verdana">2.应尽量避免在 where 子句中对字段进行 null 值判断，否则将导致引擎放弃使用索引而进行全表扫描，如： <br />
select id from t where num is null<br />
可以在num上设置默认值0，确保表中num列没有null值，然后这样查询： <br />
select id from t where num=0<br />
3.应尽量避免在 where 子句中使用!=或&lt;&gt;操作符，否则将引擎放弃使用索引而进行全表扫描。 </font></p>
<p><font face="Verdana">4.应尽量避免在 where 子句中使用 or 来连接条件，否则将导致引擎放弃使用索引而进行全表扫描，如： <br />
select id from t where num=10 or num=20<br />
可以这样查询： <br />
select id from t where num=10<br />
union all<br />
select id from t where num=20<br />
5.in 和 not in 也要慎用，否则会导致全表扫描，如： <br />
select id from t where num in(1,2,3)<br />
对于连续的数值，能用 between 就不要用 in 了： <br />
select id from t where num between 1 and 3<br />
6.下面的查询也将导致全表扫描： <br />
select id from t where name like '%abc%'<br />
若要提高效率，可以考虑全文检索。 </font></p>
<p><font face="Verdana">7.如果在 where 子句中使用参数，也会导致全表扫描。因为SQL只有在运行时才会解析局部变量，但优化程序不能将访问计划的选择推迟到运行时；它必须在编译时进行选择。然而，如果在编译时建立访问计划，变量的值还是未知的，因而无法作为索引选择的输入项。如下面语句将进行全表扫描： <br />
select id from t where num=@num<br />
可以改为强制查询使用索引： <br />
select id from t with(index(索引名)) where num=@num<br />
8.应尽量避免在 where 子句中对字段进行表达式操作，这将导致引擎放弃使用索引而进行全表扫描。如： <br />
select id from t where num/2=100<br />
应改为:&nbsp; <br />
select id from t where num=100*2<br />
9.应尽量避免在where子句中对字段进行函数操作，这将导致引擎放弃使用索引而进行全表扫描。如： <br />
select id from t where substring(name,1,3)='abc'--name以abc开头的id</font></p>
<p><font face="Verdana">select id from t where datediff(day,createdate,'2005-11-30')=0--&#8216;2005-11-30&#8217;生成的id<br />
应改为: <br />
select id from t where name like 'abc%'</font></p>
<p><font face="Verdana">select id from t where createdate&gt;='2005-11-30' and createdate&lt;'2005-12-1'<br />
10.不要在 where 子句中的&#8220;=&#8221;左边进行函数、算术运算或其他表达式运算，否则系统将可能无法正确使用索引。 </font></p>
<p><font face="Verdana">11.在使用索引字段作为条件时，如果该索引是复合索引，那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引，否则该索引将不会被使用，并且应尽可能的让字段顺序与索引顺序相一致。 </font></p>
<p><font face="Verdana">12.不要写一些没有意义的查询，如需要生成一个空表结构： <br />
select col1,col2 into #t from t where 1=0<br />
这类代码不会返回任何结果集，但是会消耗系统资源的，应改成这样： <br />
create table #t(...)<br />
13.很多时候用 exists 代替 in 是一个好的选择： <br />
select num from a where num in(select num from b)<br />
用下面的语句替换： <br />
select num from a where exists(select 1 from b where num=a.num)<br />
14.并不是所有索引对查询都有效，SQL是根据表中数据来进行查询优化的，当索引列有大量数据重复时，SQL查询可能不会去利用索引，如一表中有字段sex，male、female几乎各一半，那么即使在sex上建了索引也对查询效率起不了作用。 </font></p>
<p><font face="Verdana">15.索引并不是越多越好，索引固然可以提高相应的 select 的效率，但同时也降低了 insert 及 update 的效率，因为 insert 或 update 时有可能会重建索引，所以怎样建索引需要慎重考虑，视具体情况而定。一个表的索引数最好不要超过6个，若太多则应考虑一些不常使用到的列上建的索引是否有必要。 </font></p>
<p><font face="Verdana">16.应尽可能的避免更新 clustered 索引数据列，因为 clustered 索引数据列的顺序就是表记录的物理存储顺序，一旦该列值改变将导致整个表记录的顺序的调整，会耗费相当大的资源。若应用系统需要频繁更新 clustered 索引数据列，那么需要考虑是否应将该索引建为 clustered 索引。 </font></p>
<p><font face="Verdana">17.尽量使用数字型字段，若只含数值信息的字段尽量不要设计为字符型，这会降低查询和连接的性能，并会增加存储开销。这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符，而对于数字型而言只需要比较一次就够了。 </font></p>
<p><font face="Verdana">18.尽可能的使用 varchar/nvarchar 代替 char/nchar ，因为首先变长字段存储空间小，可以节省存储空间，其次对于查询来说，在一个相对较小的字段内搜索效率显然要高些。 </font></p>
<p><font face="Verdana">19.任何地方都不要使用 select * from t ，用具体的字段列表代替&#8220;*&#8221;，不要返回用不到的任何字段。 </font></p>
<p><font face="Verdana">20.尽量使用表变量来代替临时表。如果表变量包含大量数据，请注意索引非常有限（只有主键索引）。 </font></p>
<p><font face="Verdana">21.避免频繁创建和删除临时表，以减少系统表资源的消耗。 </font></p>
<p><font face="Verdana">22.临时表并不是不可使用，适当地使用它们可以使某些例程更有效，例如，当需要重复引用大型表或常用表中的某个数据集时。但是，对于一次性事件，最好使用导出表。 </font></p>
<p><font face="Verdana">23.在新建临时表时，如果一次性插入数据量很大，那么可以使用 select into 代替 create table，避免造成大量 log ，以提高速度；如果数据量不大，为了缓和系统表的资源，应先create table，然后insert。 </font></p>
<p><font face="Verdana">24.如果使用到了临时表，在存储过程的最后务必将所有的临时表显式删除，先 truncate table ，然后 drop table ，这样可以避免系统表的较长时间锁定。 </font></p>
<p><font face="Verdana">25.尽量避免使用游标，因为游标的效率较差，如果游标操作的数据超过1万行，那么就应该考虑改写。 </font></p>
<p><font face="Verdana">26.使用基于游标的方法或临时表方法之前，应先寻找基于集的解决方案来解决问题，基于集的方法通常更有效。 </font></p>
<p><font face="Verdana">27.与临时表一样，游标并不是不可使用。对小型数据集使用 FAST_FORWARD 游标通常要优于其他逐行处理方法，尤其是在必须引用几个表才能获得所需的数据时。在结果集中包括&#8220;合计&#8221;的例程通常要比使用游标执行的速度快。如果开发时间允许，基于游标的方法和基于集的方法都可以尝试一下，看哪一种方法的效果更好。 </font></p>
<p><font face="Verdana">28.在所有的存储过程和触发器的开始处设置 SET NOCOUNT ON ，在结束时设置 SET NOCOUNT OFF 。无需在执行存储过程和触发器的每个语句后向客户端发送 DONE_IN_PROC 消息。 </font></p>
<p><font face="Verdana">29.尽量避免大事务操作，提高系统并发能力。 </font></p>
<p><font face="Verdana">30.尽量避免向客户端返回大数据量，若数据量过大，应该考虑相应需求是否合理。 </font></p>
<p><font face="Verdana">具体的SQL语句在很多情况下需要结合实际的应用情况来写，这里不作叙述。</font></p>
</font>
<img src ="http://www.cnblogs.com/diction/aggbug/1121515.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43759/" target="_blank">[新闻]Twitter杀手Pownce被收购 两周内关闭服务</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>asp.net2.0导出pdf文件完美解决方案(转载) </title><link>http://www.cnblogs.com/diction/archive/2008/03/25/1120940.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Tue, 25 Mar 2008 03:16:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/03/25/1120940.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1120940.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/03/25/1120940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1120940.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1120940.html</trackback:ping><description><![CDATA[<div class="postText">
<p align="left"><font size="3"><font size="2"><strong>PDF简介</strong>：PDF（Portable Document Format）文件格式是Adobe公司开发的电子文件格式。这种文件格式与操作系统平台无关，也就是说，PDF文件不管是在Windows，Unix还是在苹果公司的Mac OS操作系统中都是通用的。这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来越多的电子图书、产品说明、公司文告、网络资料、电子邮件开始使用PDF格式文件。PDF格式文件目前已成为数字化信息事实上的一个工业标准。</font></font></p>
<p align="left"><font size="2">Adobe公司设计PDF文件格式的目的是为了支持跨平台上的，多媒体集成的信息出版和发布，尤其是提供对网络信息发布的支持。为了达到此目的， PDF具有许多其他电子文档格式无法相比的优点。PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。该格式文件还可以包含超文本链接、声音和动态影像等电子信息，支持特长文件，集成度和安全可靠性都较高。<br />
</font></p>
<p align="left"><font size="2">日常工作中经常遇到想把报表和网页导出到PDF的需求。<font color="#ff0000">本文提供完美的解决方案</font>：</font></p>
<p align="left"><font size="3"><font size="2"><font color="#0000ff">ASP.NET导出到PDF</font>的<strong>最终效果图</strong>（其实winform和控制台程序都一样可以做）。</font></font></p>
<p align="left"><font size="3"><font size="2">本文实现 <strong>文字</strong>，<strong>图片</strong>，<strong>数据表</strong>的导出<br />
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/21aspnet/20075284.gif" /></font></font><strong><font color="#ff0000">&nbsp;核心技术方案：使用itextsharp.dll</font></strong></p>
<p>&nbsp;</p>
<p><strong><font color="#ff0000">1.下载itextsharp.dll和ICSharpCode.SharpZipLib.dll<br />
<a href="http://sourceforge.net/project/showfiles.php?group_id=72954">http://sourceforge.net/project/showfiles.php?group_id=72954</a></font></strong></p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/21aspnet/200752855.gif" /></p>
<p><a onclick="window.location='/project/downloading.php?group_id=72954&amp;use_mirror=nchc&amp;filename=iTextSharp.tutorial.01.zip&amp;'+Math.floor(Math.random()*100000000); return false;" href="http://downloads.sourceforge.net/itextsharp/iTextSharp.tutorial.01.zip?modtime=1129139556&amp;big_mirror=0"><font color="#0033cc">iTextSharp.tutorial.01.zip</font></a>&nbsp;&nbsp;&nbsp; <strong>示例文件</strong> 提供了<strong>各种解决方案</strong>本文由于时间问题仅做抛砖引玉，希望大家自己研究其他需求</p>
<p><strong><font color="#000000">itextsharp.dll</font></strong>&nbsp; <a onclick="window.location='/project/downloading.php?group_id=72954&amp;use_mirror=nchc&amp;filename=itextsharp-4.0.3-dll.zip&amp;'+Math.floor(Math.random()*100000000); return false;" href="http://downloads.sourceforge.net/itextsharp/itextsharp-4.0.3-dll.zip?modtime=1176738754&amp;big_mirror=0">itextsharp-4.0.3-dll.zip</a>&nbsp;&nbsp; </p>
<p><strong>ICSharpCode.SharpZipLib.dll&nbsp;&nbsp;&nbsp; <a href="http://download.csdn.net/down/135897">http://download.csdn.net/down/135897</a>&nbsp; ICSharpCode.SharpZipLib.dll&nbsp;&nbsp;&nbsp; </strong></p>
<p><font size="2"><font color="#c60a00">SharpZipLib</font>.dll类库中的内容实现的压缩与解压功能，它是<strong>开源</strong>的</font></p>
<p><font size="2"><strong>2.引用<font color="#ff0000">itextsharp.dll和ICSharpCode.SharpZipLib.dll</font></strong></font></p>
<p><img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/21aspnet/20075282.gif" /></p>
<p><strong>3.后台代码：</strong></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">using</span><span style="color: #000000">&nbsp;System;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Data;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Configuration;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Web;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Web.Security;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Web.UI;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Web.UI.WebControls;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Web.UI.WebControls.WebParts;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.Web.UI.HtmlControls;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;iTextSharp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;iTextSharp.text;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;iTextSharp.text.pdf;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;System.IO;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">partial</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;_Default&nbsp;:&nbsp;System.Web.UI.Page&nbsp;<br />
<img id="_373_2270_Open_Image" onclick="this.style.display='none'; document.getElementById('_373_2270_Open_Text').style.display='none'; document.getElementById('_373_2270_Closed_Image').style.display='inline'; document.getElementById('_373_2270_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_373_2270_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_373_2270_Closed_Text').style.display='none'; document.getElementById('_373_2270_Open_Image').style.display='inline'; document.getElementById('_373_2270_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="_373_2270_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="_373_2270_Open_Text"><span style="color: #000000">{<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;DataTable&nbsp;datatable&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataTable(</span><span style="color: #000000">"</span><span style="color: #000000">testpdf</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&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;Page_Load(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img id="_495_996_Open_Image" onclick="this.style.display='none'; document.getElementById('_495_996_Open_Text').style.display='none'; document.getElementById('_495_996_Closed_Image').style.display='inline'; document.getElementById('_495_996_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_495_996_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_495_996_Closed_Text').style.display='none'; document.getElementById('_495_996_Open_Image').style.display='inline'; document.getElementById('_495_996_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_495_996_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="_495_996_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">判断是否是回发页面http://blog.csdn.net/21aspnet</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;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">Page.IsPostBack)<br />
<img id="_556_972_Open_Image" onclick="this.style.display='none'; document.getElementById('_556_972_Open_Text').style.display='none'; document.getElementById('_556_972_Closed_Image').style.display='inline'; document.getElementById('_556_972_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_556_972_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_556_972_Closed_Text').style.display='none'; document.getElementById('_556_972_Open_Image').style.display='inline'; document.getElementById('_556_972_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;</span><span id="_556_972_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="_556_972_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;DataRow&nbsp;dr;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">建立Column例，可以指明例的类型,这里用的是默认的string</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;datatable.Columns.Add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataColumn(</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/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;datatable.Columns.Add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DataColumn(</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/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
<img id="_774_962_Open_Image" onclick="this.style.display='none'; document.getElementById('_774_962_Open_Text').style.display='none'; document.getElementById('_774_962_Closed_Image').style.display='inline'; document.getElementById('_774_962_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_774_962_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_774_962_Closed_Text').style.display='none'; document.getElementById('_774_962_Open_Image').style.display='inline'; document.getElementById('_774_962_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;</span><span id="_774_962_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="_774_962_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;dr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;datatable.NewRow();<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;dr[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;System.Convert.ToString(i);<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;dr[</span><span style="color: #000000">1</span><span style="color: #000000">]&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">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;System.Convert.ToString(i);<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;datatable.Rows.Add(dr);<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/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" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&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;Button1_Click(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img id="_1063_2268_Open_Image" onclick="this.style.display='none'; document.getElementById('_1063_2268_Open_Text').style.display='none'; document.getElementById('_1063_2268_Closed_Image').style.display='inline'; document.getElementById('_1063_2268_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1063_2268_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1063_2268_Closed_Text').style.display='none'; document.getElementById('_1063_2268_Open_Image').style.display='inline'; document.getElementById('_1063_2268_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedSubBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="_1063_2268_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="_1063_2268_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;<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
<img id="_1094_2161_Open_Image" onclick="this.style.display='none'; document.getElementById('_1094_2161_Open_Text').style.display='none'; document.getElementById('_1094_2161_Closed_Image').style.display='inline'; document.getElementById('_1094_2161_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1094_2161_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1094_2161_Closed_Text').style.display='none'; document.getElementById('_1094_2161_Open_Image').style.display='inline'; document.getElementById('_1094_2161_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;</span><span id="_1094_2161_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="_1094_2161_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;Document&nbsp;document&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Document();<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;PdfWriter.getInstance(document,&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;FileStream(Server.MapPath(</span><span style="color: #000000">"</span><span style="color: #000000">Chap0101.pdf</span><span style="color: #000000">"</span><span style="color: #000000">),&nbsp;FileMode.Create));<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.Open();<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;BaseFont&nbsp;bfChinese&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;BaseFont.createFont(</span><span style="color: #000000">"</span><span style="color: #000000">C:\\WINDOWS\\Fonts\\simsun.ttc,1</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;BaseFont.IDENTITY_H,&nbsp;BaseFont.NOT_EMBEDDED);<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;Font&nbsp;fontChinese&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Font(bfChinese,&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">,&nbsp;Font.NORMAL,new Color(0, 0, 0)); <br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.Add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Paragraph(</span><span style="color: #0000ff">this</span><span style="color: #000000">.TextBox1.Text.ToString(),&nbsp;fontChinese));<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><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;iTextSharp.text.Image&nbsp;jpeg&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;iTextSharp.text.Image.getInstance(Server.MapPath(</span><span style="color: #000000">"</span><span style="color: #000000">pic015.jpg</span><span style="color: #000000">"</span><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;document.Add(jpeg);<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;PdfPTable&nbsp;table&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PdfPTable(datatable.Columns.Count);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><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;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;datatable.Rows.Count;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
<img id="_1878_2087_Open_Image" onclick="this.style.display='none'; document.getElementById('_1878_2087_Open_Text').style.display='none'; document.getElementById('_1878_2087_Closed_Image').style.display='inline'; document.getElementById('_1878_2087_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1878_2087_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1878_2087_Closed_Text').style.display='none'; document.getElementById('_1878_2087_Open_Image').style.display='inline'; document.getElementById('_1878_2087_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;</span><span id="_1878_2087_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="_1878_2087_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;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;j&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;datatable.Columns.Count;&nbsp;j</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
<img id="_1962_2073_Open_Image" onclick="this.style.display='none'; document.getElementById('_1962_2073_Open_Text').style.display='none'; document.getElementById('_1962_2073_Closed_Image').style.display='inline'; document.getElementById('_1962_2073_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_1962_2073_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_1962_2073_Closed_Text').style.display='none'; document.getElementById('_1962_2073_Open_Image').style.display='inline'; document.getElementById('_1962_2073_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;&nbsp;&nbsp;</span><span id="_1962_2073_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="_1962_2073_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;&nbsp;&nbsp;table.addCell(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Phrase(datatable.Rows[i][j].ToString(),&nbsp;fontChinese));<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;&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;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><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;document.Add(table);<br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" align="top" /><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;document.Close();<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" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(DocumentException&nbsp;de)<br />
<img id="_2208_2262_Open_Image" onclick="this.style.display='none'; document.getElementById('_2208_2262_Open_Text').style.display='none'; document.getElementById('_2208_2262_Closed_Image').style.display='inline'; document.getElementById('_2208_2262_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="_2208_2262_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_2208_2262_Closed_Text').style.display='none'; document.getElementById('_2208_2262_Open_Image').style.display='inline'; document.getElementById('_2208_2262_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;</span><span id="_2208_2262_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="_2208_2262_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;Response.Write(de.ToString());<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/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span></div>
</div>
<p>&nbsp;</p>
<p><strong>4.前台代码：<br />
</strong></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 id="_2_93_Open_Image" onclick="this.style.display='none'; document.getElementById('_2_93_Open_Text').style.display='none'; document.getElementById('_2_93_Closed_Image').style.display='inline'; document.getElementById('_2_93_Closed_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="_2_93_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('_2_93_Closed_Text').style.display='none'; document.getElementById('_2_93_Open_Image').style.display='inline'; document.getElementById('_2_93_Open_Text').style.display='inline';" alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="color: #000000; background-color: #ffff00">&lt;%</span><span id="_2_93_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="_2_93_Open_Text"><span style="color: #000000; background-color: #f5f5f5">@&nbsp;Page&nbsp;Language</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">C#</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;AutoEventWireup</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">true</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;&nbsp;CodeFile</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">Default.aspx.cs</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;Inherits</span><span style="color: #000000; background-color: #f5f5f5">=</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">_Default</span><span style="color: #000000; background-color: #f5f5f5">"</span><span style="color: #000000; background-color: #f5f5f5">&nbsp;</span></span><span style="color: #000000; background-color: #ffff00">%&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;!</span><span style="color: #ff00ff">DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Transitional//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">html&nbsp;</span><span style="color: #ff0000">xmlns</span><span style="color: #0000ff">="http://www.w3.org/1999/xhtml"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">head&nbsp;</span><span style="color: #ff0000">runat</span><span style="color: #0000ff">="server"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&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">清清月儿&nbsp;制作导出PDF&nbsp;http://blog.csdn.net/21aspnet</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">head</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">form&nbsp;</span><span style="color: #ff0000">id</span><span style="color: #0000ff">="form1"</span><span style="color: #ff0000">&nbsp;runat</span><span style="color: #0000ff">="server"</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&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 />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">asp:TextBox&nbsp;</span><span style="color: #ff0000">ID</span><span style="color: #0000ff">="TextBox1"</span><span style="color: #ff0000">&nbsp;runat</span><span style="color: #0000ff">="server"</span><span style="color: #0000ff">&gt;&lt;/</span><span style="color: #800000">asp:TextBox</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;</span><span style="color: #800000">asp:Button&nbsp;</span><span style="color: #ff0000">ID</span><span style="color: #0000ff">="Button1"</span><span style="color: #ff0000">&nbsp;runat</span><span style="color: #0000ff">="server"</span><span style="color: #ff0000">&nbsp;OnClick</span><span style="color: #0000ff">="Button1_Click"</span><span style="color: #ff0000">&nbsp;Text</span><span style="color: #0000ff">="导出"</span><span style="color: #ff0000">&nbsp;</span><span style="color: #0000ff">/&gt;&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">form</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">body</span><span style="color: #0000ff">&gt;</span><span style="color: #000000"><br />
<img alt="" src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">&lt;/</span><span style="color: #800000">html</span><span style="color: #0000ff">&gt;</span></div>
</div>
<p><strong>5.前台操作：<br />
<img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/21aspnet/20075283.jpg" /></strong></p>
<p><strong>&nbsp;6.属性说明：</strong></p>
<p><a onclick="window.location='/project/downloading.php?group_id=72954&amp;use_mirror=nchc&amp;filename=itextsharp-4.0.3-dll.zip&amp;'+Math.floor(Math.random()*100000000); return false;" href="http://downloads.sourceforge.net/itextsharp/itextsharp-4.0.3-dll.zip?modtime=1176738754&amp;big_mirror=0">itextsharp-4.0.3-dll.zip</a>&nbsp;&nbsp; <strong>示例文件包含几乎所有的PDF处理需求</strong></p>
<p><strong>颜色：</strong></p>
</div>
<img src ="http://www.cnblogs.com/diction/aggbug/1120940.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43759/" target="_blank">[新闻]Twitter杀手Pownce被收购 两周内关闭服务</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>c#.net在WEB页中设置COOKIES </title><link>http://www.cnblogs.com/diction/archive/2008/03/21/1116742.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Fri, 21 Mar 2008 09:00:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/03/21/1116742.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1116742.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/03/21/1116742.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1116742.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1116742.html</trackback:ping><description><![CDATA[一、设置cookies的方法很简单，有以下两种方法： <br />
<br />
1、直接添加Cookie值： <br />
<br />
Response.Cookies["userName"]&nbsp;=&nbsp;"Tom";&nbsp; <br />
Response.Cookies["userName"].Expires&nbsp;=&nbsp;DateTime.Now.AddDays(1)&nbsp;;&nbsp;\\过期时间，在Cookies文件中无法查看，也不能调用. <br />
<br />
2、创建Cookie对象的一个实例： <br />
<br />
HttpCookie&nbsp;cookie=new&nbsp;HttpCookie("userName");&nbsp; <br />
cookie.Value&nbsp;=&nbsp;"Tom";&nbsp; <br />
cookie.Expires&nbsp;=&nbsp;DateTime.Now.AddDays(1)&nbsp;;&nbsp; <br />
Response.Cookies.Add(aCookie) <br />
<br />
用以上任一方法都可以生成一个有&#8220;userName&#8221;项的文件，&nbsp;在你的Internet临时文件夹中你可以查看它。 <br />
<br />
也可以创建和添加有子键的Cookies，如： <br />
<br />
Response.Cookies["userInfo"]["userName"]&nbsp;=&nbsp;"Tom";&nbsp; <br />
<br />
或： <br />
<br />
HttpCookie&nbsp;cookie=new&nbsp;HttpCookie("userInfo");&nbsp; <br />
cookie.Values["userName"]&nbsp;=&nbsp;"Tom";&nbsp; <br />
aCookie.Expires&nbsp;=&nbsp;DateTime.Now.AddDays(1);&nbsp; <br />
Response.Cookies.Add(aCookie) <br />
<br />
二、检索Cookies: <br />
<br />
Cookies某一键的值为： <br />
<br />
Server.HtmlEncode(Request.Cookies["userInfo"]["userName"]) <br />
<br />
你可以用Response.Write()方法输出它到页面，如： <br />
<br />
Response.Write(Server.HtmlEncode(Request.Cookies["userInfo"]["userName"]))； <br />
<br />
或赋值给其它变量： <br />
<br />
string&nbsp;strCookie1=Server.HtmlEncode(Request.Cookies["userInfo"]["userName"]);&nbsp; <br />
<br />
用Cookies[i]数组可以检索所有项和子键，如： <br />
<br />
string[]&nbsp;cooName&nbsp;=&nbsp;new&nbsp;string[Request.Cookies.Count];&nbsp; <br />
string[]&nbsp;cooValue&nbsp;=&nbsp;new&nbsp;string[Request.Cookies.Count];&nbsp; <br />
HttpCookie&nbsp;aCookie;&nbsp; <br />
for(int&nbsp;i=0;&nbsp;i&nbsp;aCookie&nbsp;=&nbsp;Request.Cookies[i];&nbsp; <br />
cooName[i]&nbsp;=&nbsp;Server.HtmlEncode(aCookie.Name);&nbsp; <br />
if(!aCookie.HasKeys){ <br />
cooValue[i]&nbsp;=&nbsp;Server.HtmlEncode(aCookie.Value);&nbsp; <br />
}else{ <br />
string[]&nbsp;subcooName&nbsp;=&nbsp;new&nbsp;string[aCookie.Values.Count];&nbsp; <br />
string[]&nbsp;subcooValue&nbsp;=&nbsp;new&nbsp;string[aCookie.Values.Count];&nbsp; <br />
for(int&nbsp;j=0;&nbsp;j&nbsp;subcooName[j]&nbsp;=&nbsp;Server.HtmlEncode(aCookie.Values.AllKeys[j]);&nbsp; <br />
subcooValue[j]&nbsp;=&nbsp;Server.HtmlEncode(aCookie.Values[j]);&nbsp; <br />
} <br />
} <br />
} <br />
<br />
三、修改Cookies <br />
<br />
如果是数值类型的Cookie值，比如访问次数，你可以读取该值进行加减操作后再存回，一般的修改直接存入新值就可以了，系统自动用新值覆盖原值，存入的方法与创建相同。 <br />
<br />
四、删除Cookies <br />
<br />
删除Cookies只要把有效期设为失效就可以了，如在创建时设有效期为一天： <br />
cookie.Expires&nbsp;=&nbsp;DateTime.Now.AddDays(1)&nbsp;;&nbsp; <br />
<br />
要删除则设为： <br />
<br />
cookie.Expires&nbsp;=&nbsp;DateTime.Now.AddDays(-1)&nbsp;;&nbsp; <br />
<br />
删除子键： <br />
HttpCookie&nbsp;cookie;&nbsp; <br />
cookie&nbsp;=&nbsp;Request.Cookies["userInfo"];&nbsp; <br />
aCookie.Values.Remove("userName");&nbsp; <br />
aCookie.Expires&nbsp;=&nbsp;DateTime.Now.AddDays(1);&nbsp; <br />
Response.Cookies.Add(aCookie);&nbsp; <br />
<img src ="http://www.cnblogs.com/diction/aggbug/1116742.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43758/" target="_blank">[新闻]Live Search新增“即时返现”服务</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>(转)asp.net 2.0中页的生存周期(Lifecycle)和动态控件</title><link>http://www.cnblogs.com/diction/archive/2008/01/31/1059915.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Thu, 31 Jan 2008 06:28:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/01/31/1059915.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1059915.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/01/31/1059915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1059915.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1059915.html</trackback:ping><description><![CDATA[原文地址：<a href="http://www.codeproject.com/useritems/lifecycle.asp" target="_blank">http://www.codeproject.com/useritems/lifecycle.asp</a>；翻译地址：<font face="Verdana"><a href="http://www.cnblogs.com/webabcd/archive/2007/03/12/671400.html">http://www.cnblogs.com/webabcd/archive/2007/03/12/671400.html</a></font><br />
<div align="center">[翻译]asp.net 2.0中页的生存周期(Lifecycle)和动态控件</div>
<br />
<br />
原文发布日期：2006.12.08<br />
作者：<a href="http://www.codeproject.com/script/Articles/list_articles.asp?userid=2087858" target="_blank">Vivek Thakur</a><br />
翻译：<a href="http://webabcd.cnblogs.com/" target="_blank">webabcd</a><br />
介绍<br />
弄懂Page的生存周期（lifecycle）对于开发asp.net应用程序来说是非常重要的。很多.net初学者在处理动态加载控件的时候都出现过回发后丢值，丢状态之类的问题。HTTP协议是无状态的，这就是web程序不同与windows程序的一个天生的问题，如果要学习asp.net的话，Page的生存周期将是你最重要的基础之一。事件的顺序是怎样的，特别是asp.net 2.0新增了母板页后，使其变得更复杂了，本文的目的就是通过解释每一个事件的顺序及其用途让你弄清楚这些事件到底是怎么回事。<br />
<br />
<br />
背景<br />
在asp.net应用程序中，用户总是要去请求一个.aspx页的，让我们感兴趣的一件事就是在用户访问一个.aspx页的时候，应用程序所属的web服务器到底做了哪些事呢？弄懂事件的顺序将有助于我们在恰当的事件中做我们想做的事，也可以消除我们的一些混淆，比如把一些问题归咎给web程序的无状态之类的。<br />
<br />
<br />
基础：新的编译模型和部分类（Partial Classes）<br />
asp.net中的每一个web form都直接或间接的继承自System.Web.UI.Page类。一个web from包括两部分：一个是代码文件(WebForm.aspx.cs)，它包括一些和page相关联的事件和方法，另一个是aspx文件，它包括一些HTML控件声明（在Visual Studio 2005的web应用程序中，我们还有一个名为WebForm.aspx.designer.cs的设计类）<br />
<br />
在asp.net 2.0中，我们不需要再定义控件变量，也不需要再在代码文件中写一些事件委托，这一切都要归功于部分类。在asp.net 1.x中，这些代码都会自动的在InitializeComponent()里生成。但是到了2.0版本，runtime将会创建一个部分类，这个类会包含aspx页中的所有信息。这将使得代码文件非常清晰并且易于管理。<br />
<br />
这将消除VS2003中的代码文件和aspx页面之间的名字相互联系的改变（如果我们要改变任意控件的ID，都不得不改变aspx页和代码文件）。在VS2005中所有控件的事件都定义在aspx页里。所以代码文件中的事件委托和控件变量将被清除，这是比先前的VS2003方便的地方。<br />
<br />
<br />
页的生存周期<br />
了解页的生存周期中的每一个请求是非常重要的，丢值、丢状态的问题都可能是你对页的生存周期了解不够造成的。当然，如果你要在asp.net保留状态的话，可以用诸如Application，Session，Cache，或者Cookies之类的<br />
<br />
注意：asp.net 2.0中的视图状态由两部分组成，控件状态和视图状态。详细了解请参考这篇文章<br />
<a href="http://msdn2.microsoft.com/en-us/library/1whwt1k7(VS.80).aspx" target="_blank">http://msdn2.microsoft.com/en-us/library/1whwt1k7(VS.80).aspx</a><br />
<br />
下面我们将按照web程序的代码文件中的各个事件的触发顺序来详细的介绍它们<br />
<br />
重点提示：除了Init()和Unload()之外的所有事件都是从最外面到最里面被激发的。例如，一个用户控件的init事件在它的父页类的Page_Init()事件之前被激发（译者注：这是从里到外）。<br />
<br />
1. PreInit()<br />
在这个页面级的事件中，所有在设计时创建的控件都将被用默认值做初始化。例如，如果你有一个Text属性值为&#8220;Hello&#8221;的TextBox控件，则此时这个属性被设置。我们也可以在这里动态的创建控件。<br />
<br />
这个事件仅仅发生在页级别的类中，用户控件和母版页没有这个事件<br />
<br />
下面的代码示例了如何重写这个方法以增加你的自定义代码<br />
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnPreInit(EventArgs&nbsp;e)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" none?; ; ;? display="none"  Codehighlighter1_54_104_Closed_Text.style. Codehighlighter1_54_104_Closed_Image.style. Codehighlighter1_54_104_Open_Text.style.  alt="" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" none?; ; ;? display="inline"  Codehighlighter1_54_104_Closed_Text.style. Codehighlighter1_54_104_Open_Text.style. Codehighlighter1_54_104_Open_Image.style.  alt="" /></span><span style="border-right: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span style="display: inline"><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;custom&nbsp;code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">base</span><span style="color: #000000">.OnPreInit(e);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
注意，我们只能在PreInit()事件中动态的设置themes<br />
<br />
使用母版页时的特例<br />
我们先要了解一个非常重要的知识点——母版页被处理的过程就相当于内容页中的一个控件。<br />
<br />
所以如果一个页有其相关联的母版页的话，那么在PreInit()事件里页中的所有控件都不会被初始化。而只有在Init()事件开始之后，你才能直接访问这些控件。为什么？<br />
<br />
这个原因就是内容页中的所有控件都包含在&#8220;ContentPlaceholder&#8221;里，而&#8220;ContentPlaceholder&#8221;其实就是母版页的一个子控件。现在母版页被处理的过程就相当于内容页中的一个控件，我们早先提到过，除了Init()和Unload()之外的所有事件都是从最外面到最里面被激发的。虽然页的PreInit()是第一个被触发的事件，但是用户控件和母版页是没有这个事件的，所以在页的Page_PreInit()方法中，母版页和用户控件都不会被初始化，而是在Init()事件之后<br />
<br />
接下来让我们来看一下Page_Init()事件之后控件的层次结构<br />
<img alt="" src="http://www.codeproject.com/useritems/lifecycle/MP.jpg" border="0" /><br />
<br />
2. OnInit()<br />
在这个事件里，我们能读出控件的属性（在设计模式中设置的）。但是我们不能读出用户设置的值，因为得到用户设置的值是在LoadPostData()事件被激发之后。不过在这个事件中我们可以得到POST数据，如下<br />
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;selectedValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Request.Form[controlID].ToString();</span></div>
<br />
3. LoadViewState<br />
这个事件仅仅在回发之后被激发（IsPostBack == true）。在这个事件中runtime从隐藏域中分解出view state并加载到所有启用了view state的控件。<br />
<br />
4. LoadPostBackData<br />
这个事件也仅仅是在回发之后被激发。<br />
在这个事件里实现了IPostBackDataHandler接口的控件从HTTP的POST数据中得到值。注意，textbox控件不能从view state中获得值，而是在此事件中从POST数据中获得值。所以即使有些控件没有启用view state，只要它实现了IPostBackDataHandler接口就可以从HTTP的POST数据中得到值。<br />
<br />
另一个重要的知识点是如果我们有一个DropDownList控件并动态的给它增加一些选择项，那么runtime将不能得到这些值除非启用了view state（即使控件继承自IPostBackDataHandler接口）。这个原因就是在HTTP的POST数据中的每一个控件只能有一个值，并且POST数据中的所有值都不会被保存，除了使用view state。<br />
<br />
5. Page_Load<br />
这是最常用的方法了，而且是一些开发新手放置他们代码的第一个地方，有些新手们往往认为这就是Page类第一个触发的方法。这个方法是混淆我们Page生存周期的罪魁祸首之一。<br />
<br />
注意：如果页里有任何用户控件的话，那么用户控件的Load方法将在页类的Load方法之后被触发。这个原因早先已经解释过了，除了Init()和Unload()之外的所有事件都是从最外面到最里面被激发的。所以页的Page_Load()之后，页内的其它控件的Load方法才被触发。<br />
<br />
6. Control Event Handlers<br />
事件处理（比如像Button1_Click()之类的）是定义在ASPX页面中的，有一些开发人员认为当单击一个按钮后会立即出发Button_Click() ，他们忘了在这个事件触发之前首先要触发Page_Load。<br />
<br />
7. PreRender<br />
如果我们想改变某一个控件的值，这是最后的机会了<br />
<br />
8. SaveViewState<br />
控件的ViewState被存储在form的隐藏域中<br />
<br />
9. Render<br />
呈现<br />
<br />
10. Unload<br />
这是最后的清理操作<br />
<br />
<br />
动态控件<br />
现在我们已经知道了页的生存周期的重要事件，接下来让我们关注一下如何创建以及保持动态生成控件的状态。有的时候我们需要动态的生成控件，比如我原来管理的一个酒店预订的项目，用户在一个TextBox里输入房间号，根据这个值动态的生成一个用户控件来显示该房间的详细信息。<br />
<br />
开发人员虽然能动态的生成用户控件，但是却不能保存用户控件的状态。当我看了代码后，他们把生成控件的代码写到了Button的Click事件里。根据我们上面所讨论的，Button_Click()在LoadViewState()和LoadPostData()之后触发，而控件的值是要在view state或POST数据中取得的。<br />
<br />
所以除非在Page_Init()或Pre_Init()方法里重新创建控件（它们发生在LoadViewState和LoadPostData之前），这样就可以在下一个事件里获得控件的值<br />
<br />
现在，如果把代码写到Page_Init()事件里的话，将不能得到用户在TextBox（它是一个静态控件）里输入的值。原因就在于这是Page_Init()事件，控件的值被初始化为它们设计时的默认值，而不会得到用户输入的值<br />
<br />
所以如果要在这里访问到用户输入的值话只有一个办法，就是从POST数据中取值。代码如下<br />
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;OnInit(EventArgs&nbsp;e)&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" none?; ; ;? display="none"  Codehighlighter1_48_313_Closed_Text.style. Codehighlighter1_48_313_Closed_Image.style. Codehighlighter1_48_313_Open_Text.style.  alt="" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" none?; ; ;? display="inline"  Codehighlighter1_48_313_Closed_Text.style. Codehighlighter1_48_313_Open_Text.style. Codehighlighter1_48_313_Open_Image.style.  alt="" /></span><span style="border-right: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;通过Post数据得到用户在TextBox里输入的值</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;selectedValue&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(Request.Form[</span><span style="color: #000000">"</span><span style="color: #000000">txtNoOfRooms</span><span style="color: #000000">"</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">)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;selectedValue&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Request.Form[</span><span style="color: #000000">"</span><span style="color: #000000">txtNoOfRooms</span><span style="color: #000000">"</span><span style="color: #000000">].ToString();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;动态生成控件的代码</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">base</span><span style="color: #000000">.OnInit(e);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
注意：感谢<a href="http://forums.asp.net/" target="_blank">ASP.NET论坛</a>的<a href="http://forums.asp.net/members/mbanavige.aspx" target="_blank">Mike Banavige</a>，有了他的帮助才让我增加了这部分内容。如果你在Page_Load事件里创建一个动态控件，并把它添加到PlaceHolder或Panel里（要打开view state），那么动态控件将会维持它的状态，即使它不是在Page_Init()中创建的，为什么？<br />
<br />
原因就是控件一旦被添加到页的控件树里，TrackViewState()方法就负责跟踪其状态。只要控件被添加到控件树里，这个方法就会被自动的触发。因为这个原因，对控件的任何修改（如添加item之类的）都应该在动态控件被添加到页的控件树之后来做，否则其状态将丢失。请看如下代码<br />
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Load(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" none?; ; ;? display="none"  Codehighlighter1_53_278_Closed_Text.style. Codehighlighter1_53_278_Closed_Image.style. Codehighlighter1_53_278_Open_Text.style.  alt="" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" none?; ; ;? display="inline"  Codehighlighter1_53_278_Closed_Text.style. Codehighlighter1_53_278_Open_Text.style. Codehighlighter1_53_278_Open_Image.style.  alt="" /></span><span style="border-right: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;创建一个DropDownList</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;DropDownList&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DropDownList();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;TrackViewState()方法将被触发去跟踪这个DropDownList的状态，所以其状态将被保持</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PlaceHolder1.Controls.Add(d);&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">IsPostBack)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" none?; ; ;? display="none"  Codehighlighter1_225_276_Closed_Text.style. Codehighlighter1_225_276_Closed_Image.style. Codehighlighter1_225_276_Open_Text.style.  alt="" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" none?; ; ;? display="inline"  Codehighlighter1_225_276_Closed_Text.style. Codehighlighter1_225_276_Open_Text.style. Codehighlighter1_225_276_Open_Image.style.  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.Items.Add(</span><span style="color: #000000">"</span><span style="color: #000000">test1</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.Items.Add(</span><span style="color: #000000">"</span><span style="color: #000000">test2</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></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></div>
<br />
下面的代码则不会保持动态控件的状态<br />
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Load(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" none?; ; ;? display="none"  Codehighlighter1_53_245_Closed_Text.style. Codehighlighter1_53_245_Closed_Image.style. Codehighlighter1_53_245_Open_Text.style.  alt="" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" none?; ; ;? display="inline"  Codehighlighter1_53_245_Closed_Text.style. Codehighlighter1_53_245_Open_Text.style. Codehighlighter1_53_245_Open_Image.style.  alt="" /></span><span style="border-right: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;动态创建一个控件&nbsp;</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;dropdownDropDownList&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;DropDownList();<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">IsPostBack)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" none?; ; ;? display="none"  Codehighlighter1_134_185_Closed_Text.style. Codehighlighter1_134_185_Closed_Image.style. Codehighlighter1_134_185_Open_Text.style.  alt="" /><img src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align="top" none?; ; ;? display="inline"  Codehighlighter1_134_185_Closed_Text.style. Codehighlighter1_134_185_Open_Text.style. Codehighlighter1_134_185_Open_Image.style.  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-right: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span style="color: #000000">{<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.Items.Add(</span><span style="color: #000000">"</span><span style="color: #000000">test1</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d.Items.Add(</span><span style="color: #000000">"</span><span style="color: #000000">test2</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;"test1"和"test2"值将丢失</span><span style="color: #008000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PlaceHolder1.Controls.Add(d);&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<br />
总结<br />
我已经解释了页的生存周期的一些相关事件及其重要性，同时我也会不定期更新这篇文章以增加一些小提示和小技巧，此外也欢迎读者指出本文的缺陷之处及修改建议<br />
<br />
记住页的整个生存周期的各个事件的顺序是非常重要的，这样我们就可以根据不同的需求在合适的位置写出相应的代码。 
<img src ="http://www.cnblogs.com/diction/aggbug/1059915.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43753/" target="_blank">[新闻]MySpace CEO：明年广告营收仍会增长</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>我来试试trackback的用法</title><link>http://www.cnblogs.com/diction/archive/2008/01/29/1057838.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Tue, 29 Jan 2008 09:46:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/01/29/1057838.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1057838.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/01/29/1057838.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1057838.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1057838.html</trackback:ping><description><![CDATA[<font face="Verdana"><a href="http://www.cnblogs.com/dudu/archive/2004/07/12/23450.html">http://www.cnblogs.com/dudu/archive/2004/07/12/23450.html</a><br />
博客园TrackBack <a href="http://dudu.cnblogs.com/">dudu</a>的文章</font><br />
1、发送TrackBack：当你在.Text中添加或者修改文章并提交后, .Text会检查文章内容中包含的所有链接, 并自动向每个链接地址发送TrackBack, 如果目标链接地址支持TrackBack功能, 会在目标链接地址的文章的评论中显示你的文章的标题与作者名称，并可以通过作者名称链接到你的文章。<br />
2、接收TrackBack：当有人在文章中引用你的文章，而且他所在的网站支持TrackBack功能, 就会向你的文章发送TrackBack，如果TrackBack成功, 他的文章标题与作者名称就会显示在你的文章的评论中，在博客园，评论的标题旁边就会加上&#8220;[TrackBack]&#8221;。<br />
<img src ="http://www.cnblogs.com/diction/aggbug/1057838.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43752/" target="_blank">[新闻]2日科技博客精选：Windows占有率首次跌破90%</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>PetShop介绍集锦 </title><link>http://www.cnblogs.com/diction/archive/2008/01/29/1057763.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Tue, 29 Jan 2008 08:53:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/01/29/1057763.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1057763.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/01/29/1057763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1057763.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1057763.html</trackback:ping><description><![CDATA[概述<a href="http://www.cnblogs.com/ltp/archive/2006/04/17/377564.html"><br />
http://www.cnblogs.com/ltp/archive/2006/04/17/377564.html</a>
<p>一、PetShop的系统架构设计<br />
<a href="http://www.cnblogs.com/wayfarer/archive/2007/03/23/375382.html" target="_blank"><font color="#002c99">http://www.cnblogs.com/wayfarer/archive/2007/03/23/375382.html</font></a><br />
<br />
二、PetShop数据访问层之数据库访问设计<br />
<a href="http://www.cnblogs.com/wayfarer/archive/2006/04/21/381315.html" target="_blank"><font color="#002c99">http://www.cnblogs.com/wayfarer/archive/2006/04/21/381315.html</font></a><br />
<br />
三、PetShop数据访问层之消息处理<br />
<a href="http://www.cnblogs.com/wayfarer/archive/2007/03/15/496207.html" target="_blank"><font color="#002c99">http://www.cnblogs.com/wayfarer/archive/2007/03/15/496207.html</font></a><br />
<br />
四、PetShop之ASP.NET缓存<br />
<a href="http://www.cnblogs.com/wayfarer/archive/2006/11/01/547060.html" target="_blank"><font color="#002c99">http://www.cnblogs.com/wayfarer/archive/2006/11/01/547060.html</font></a><br />
<br />
五、PetShop之业务逻辑层设计<br />
<a href="http://www.cnblogs.com/wayfarer/archive/2006/11/05/550723.html" target="_blank"><font color="#002c99">http://www.cnblogs.com/wayfarer/archive/2006/11/05/550723.html</font></a><br />
<br />
六、PetShop之表示层设计<br />
<a href="http://www.cnblogs.com/wayfarer/archive/2006/11/11/557933.html" target="_blank"><font color="#002c99">http://www.cnblogs.com/wayfarer/archive/2006/11/11/557933.html</font></a> <br />
</p>
  <img src ="http://www.cnblogs.com/diction/aggbug/1057763.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43752/" target="_blank">[新闻]2日科技博客精选：Windows占有率首次跌破90%</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C#基础概念二十五问(转) </title><link>http://www.cnblogs.com/diction/archive/2008/01/29/1056961.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Tue, 29 Jan 2008 01:04:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/01/29/1056961.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1056961.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/01/29/1056961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1056961.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1056961.html</trackback:ping><description><![CDATA[摘要: 当初学 C# 时是找个人大概问了一下数据类型和分支语句就开始做项目了。这两天又全面的看了一下相关的基础知识（学而时习之嘛），总结了25个问题：1.静态成员和非静态成员的区别？2.const 和 static readonly 区别？3.extern 是什么意思？4.abstract 是什么意思？5.internal 修饰符起什么作用？6.sealed 修饰符是干什么的？7.override 和 o&nbsp;&nbsp;<a href='http://www.cnblogs.com/diction/archive/2008/01/29/1056961.html'>阅读全文</a><img src ="http://www.cnblogs.com/diction/aggbug/1056961.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43752/" target="_blank">[新闻]2日科技博客精选：Windows占有率首次跌破90%</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>［转贴］GOF 23种模式ＭＭ版 </title><link>http://www.cnblogs.com/diction/archive/2008/01/26/1054440.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Sat, 26 Jan 2008 09:50:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/01/26/1054440.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1054440.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/01/26/1054440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1054440.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1054440.html</trackback:ping><description><![CDATA[<div>设计模式最难的莫过于不好理解，要是有个形象的例子就好了。</div>
<div>以下是从ＣＳＤＮ转过来的设计模式泡ＭＭ版，通俗易懂，而且你绝对不会忘。当然这只是给刚入门的人学习。</div>
<div>想要经一步学习，还是去买本ｓｕｎ公司的java design pattern吧。国内知名网站　板桥里人的ＪＤＯＮ也很不错哦。<a href="http://www.jdon.com/">http://www.jdon.com/</a></div>
<div>&nbsp;</div>
<div>原贴来自csdn <br />
==================================== <br />
<br />
<br />
创建型模式 <br />
<br />
1、factory―追mm少不了请吃饭了，麦当劳的鸡翅和肯德基的鸡翅都是mm爱吃的东西，虽 <br />
然口味有所不同，但不管你带mm去麦当劳或肯德基，只管向服务员说&#8220;来四个鸡翅&#8221;就行 <br />
了。麦当劳和肯德基就是生产鸡翅的factory <br />
<br />
<br />
工厂模式：客户类和工厂类分开。消费者任何时候需要某种产品，只需向工厂请求即可。 <br />
消费者无须修改就可以接纳新产品。缺点是当产品修改时，工厂类也要做相应的修改。如 <br />
：如何创建及如何向客户端提供。 <br />
<br />
2、builder―mm最爱听的就是&#8220;我爱你&#8221;这句话了，见到不同地方的mm,要能够用她们的 <br />
方言跟她说这句话哦，我有一个多种语言翻译机，上面每种语言都有一个按键，见到mm我 <br />
只要按对应的键，它就能够用相应的语言说出&#8220;我爱你&#8221;这句话了，国外的mm也可以轻松 <br />
搞掂，这就是我的&#8220;我爱你&#8221;builder。（这一定比美军在伊拉克用的翻译机好卖） <br />
<br />
建造模式：将产品的内部表象和产品的生成过程分割开来，从而使一个建造过程生成具有 <br />
不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化，客户不必知道 <br />
产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 <br />
<br />
3、factory method―请mm去麦当劳吃汉堡，不同的mm有不同的口味，要每个都记住是一 <br />
件烦人的事情，我一般采用factory method模式，带着mm到服务员那儿，说&#8220;要一个汉堡 <br />
&#8221;，具体要什么样的汉堡呢，让mm直接跟服务员说就行了。 <br />
<br />
工厂方法模式：核心工厂类不再负责所有产品的创建，而是将具体创建的工作交给子类去 <br />
做，成为一个抽象工厂角色，仅负责给出具体工厂类必须实现的接口，而不接触哪一个产 <br />
品类应当被实例化这种细节。 <br />
<br />
4、prototype―跟mm用qq聊天，一定要说些深情的话语了，我搜集了好多肉麻的情话，需 <br />
要时只要copy出来放到qq里面就行了，这就是我的情话prototype了。（100块钱一份，你 <br />
要不要） <br />
<br />
原始模型模式：通过给出一个原型对象来指明所要创建的对象的类型，然后用复制这个原 <br />
型对象的方法创建出更多同类型的对象。原始模型模式允许动态的增加或减少产品类，产 <br />
品类不需要非得有任何事先确定的等级结构，原始模型模式适用于任何的等级结构。缺点 <br />
是每一个类都必须配备一个克隆方法。 <br />
<br />
5、singleton―俺有6个漂亮的老婆，她们的老公都是我，我就是我们家里的老公 <br />
sigleton，她们只要说道&#8220;老公&#8221;，都是指的同一个人，那就是我(刚才做了个梦啦，哪 <br />
有这么好的事) <br />
<br />
单例模式：单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个 <br />
实例单例模式。单例模式只应在有真正的&#8220;单一实例&#8221;的需求时才可使用。 <br />
<br />
结构型模式 <br />
<br />
6、adapter―在朋友聚会上碰到了一个美女sarah，从香港来的，可我不会说粤语，她不 <br />
会说普通话，只好求助于我的朋友kent了，他作为我和sarah之间的adapter，让我和 <br />
sarah可以相互交谈了(也不知道他会不会耍我) <br />
<br />
适配器（变压器）模式：把一个类的接口变换成客户端所期待的另一种接口，从而使原本 <br />
因接口原因不匹配而无法一起工作的两个类能够一起工作。适配类可以根据参数返还一个 <br />
合适的实例给客户端。 <br />
<br />
7、bridge―早上碰到mm，要说早上好，晚上碰到mm，要说晚上好；碰到mm穿了件新衣服 <br />
，要说你的衣服好漂亮哦，碰到mm新做的发型，要说你的头发好漂亮哦。不要问我&#8220;早上 <br />
碰到mm新做了个发型怎么说&#8221;这种问题，自己用bridge组合一下不就行了 <br />
<br />
桥梁模式：将抽象化与实现化脱耦，使得二者可以独立的变化，也就是说将他们之间的强 <br />
关联变成弱关联，也就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而 <br />
不是继承关系，从而使两者可以独立的变化。 <br />
<br />
8、composite―mary今天过生日。&#8220;我过生日，你要送我一件礼物。&#8221;&#8220;嗯，好吧，去商 <br />
店，你自己挑。&#8221;&#8220;这件t恤挺漂亮，买，这条裙子好看，买，这个包也不错，买。&#8221;&#8220; <br />
喂，买了三件了呀，我只答应送一件礼物的哦。&#8221;&#8220;什么呀，t恤加裙子加包包，正好配 <br />
成一套呀，小姐，麻烦你包起来。&#8221;&#8220;&#8230;&#8230;&#8221;，mm都会用composite模式了，你会了没有 <br />
？ <br />
<br />
合成模式：合成模式将对象组织到树结构中，可以用来描述整体与部分的关系。合成模式 <br />
就是一个处理对象的树结构的模式。合成模式把部分与整体的关系用树结构表示出来。合 <br />
成模式使得客户端把一个个单独的成分对象和由他们复合而成的合成对象同等看待。 <br />
<br />
9、decorator―mary过完轮到sarly过生日，还是不要叫她自己挑了，不然这个月伙食费 <br />
肯定玩完，拿出我去年在华山顶上照的照片，在背面写上&#8220;最好的的礼物，就是爱你的 <br />
fita&#8221;，再到街上礼品店买了个像框（卖礼品的mm也很漂亮哦），再找隔壁搞美术设计的 <br />
mike设计了一个漂亮的盒子装起来&#8230;&#8230;，我们都是decorator，最终都在修饰我这个人呀 <br />
，怎么样，看懂了吗？ <br />
<br />
装饰模式：装饰模式以对客户端透明的方式扩展对象的功能，是继承关系的一个替代方案 <br />
，提供比继承更多的灵活性。动态给一个对象增加功能，这些功能可以再动态的撤消。增 <br />
加由一些基本功能的排列组合而产生的非常大量的功能。 <br />
<br />
10、facade―我有一个专业的nikon相机，我就喜欢自己手动调光圈、快门，这样照出来 <br />
的照片才专业，但mm可不懂这些，教了半天也不会。幸好相机有facade设计模式，把相机 <br />
调整到自动档，只要对准目标按快门就行了，一切由相机自动调整，这样mm也可以用这个 <br />
相机给我拍张照片了。 <br />
<br />
门面模式：外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一 <br />
个高层次的接口，使得子系统更易于使用。每一个子系统只有一个门面类，而且此门面类 <br />
只有一个实例，也就是说它是一个单例模式。但整个系统可以有多个门面类。 <br />
<br />
11、flyweight―每天跟mm发短信，手指都累死了，最近买了个新手机，可以把一些常用 <br />
的句子存在手机里，要用的时候，直接拿出来，在前面加上mm的名字就可以发送了，再不 <br />
用一个字一个字敲了。共享的句子就是flyweight，mm的名字就是提取出来的外部特征， <br />
根据上下文情况使用。 <br />
<br />
享元模式：flyweight在拳击比赛中指最轻量级。享元模式以共享的方式高效的支持大量 <br />
的细粒度对象。享元模式能做到共享的关键是区分内蕴状态和外蕴状态。内蕴状态存储在 <br />
享元内部，不会随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态 <br />
不能影响内蕴状态，它们是相互独立的。将可以共享的状态和不可以共享的状态从常规类 <br />
中区分开来，将不可以共享的状态从类里剔除出去。客户端不可以直接创建被共享的对象 <br />
，而应当使用一个工厂对象负责创建被共享的对象。享元模式大幅度的降低内存中对象的 <br />
数量。 <br />
<br />
12、proxy―跟mm在网上聊天，一开头总是&#8220;hi,你好&#8221;,&#8220;你从哪儿来呀？&#8221;&#8220;你多大了 <br />
？&#8221;&#8220;身高多少呀？&#8221;这些话，真烦人，写个程序做为我的proxy吧，凡是接收到这些话 <br />
都设置好了自动的回答，接收到其他的话时再通知我回答，怎么样，酷吧。 <br />
<br />
代理模式：代理模式给某一个对象提供一个代理对象，并由代理对象控制对源对象的引用 <br />
。代理就是一个人或一个机构代表另一个人或者一个机构采取行动。某些情况下，客户不 <br />
想或者不能够直接引用一个对象，代理对象可以在客户和目标对象直接起到中介的作用。 <br />
客户端分辨不出代理主题对象与真实主题对象。代理模式可以并不知道真正的被代理对象 <br />
，而仅仅持有一个被代理对象的接口，这时候代理对象不能够创建被代理对象，被代理对 <br />
象必须有系统的其他角色代为创建并传入。 <br />
<br />
行为模式 <br />
<br />
13、chain of responsibleity―晚上去上英语课，为了好开溜坐到了最后一排，哇，前 <br />
面坐了好几个漂亮的mm哎，找张纸条，写上&#8220;hi,可以做我的女朋友吗？如果不愿意请向 <br />
前传&#8221;，纸条就一个接一个的传上去了，糟糕，传到第一排的mm把纸条传给老师了，听说 <br />
是个老处女呀，快跑! <br />
<br />
责任链模式：在责任链模式中，很多对象由每一个对象对其下家的引用而接 <br />
<br />
起来形成一条链。请求在这个链上传递，直到链上的某一个对象决定处理此请求。客户并 <br />
不知道链上的哪一个对象最终处理这个请求，系统可以在不影响客户端的情况下动态的重 <br />
新组织链和分配责任。处理者有两个选择：承担责任或者把责任推给下家。一个请求可以 <br />
最终不被任何接收端对象所接受。 <br />
<br />
14、command―俺有一个mm家里管得特别严，没法见面，只好借助于她弟弟在我们俩之间 <br />
传送信息，她对我有什么指示，就写一张纸条让她弟弟带给我。这不，她弟弟又传送过来 <br />
一个command，为了感谢他，我请他吃了碗杂酱面，哪知道他说：&#8220;我同时给我姐姐三个 <br />
男朋友送command，就数你最小气，才请我吃面。&#8221;， <br />
<br />
命令模式：命令模式把一个请求或者操作封装到一个对象中。命令模式把发出命令的责任 <br />
和执行命令的责任分割开，委派给不同的对象。命令模式允许请求的一方和发送的一方独 <br />
立开来，使得请求的一方不必知道接收请求的一方的接口，更不必知道请求是怎么被接收 <br />
，以及操作是否执行，何时被执行以及是怎么被执行的。系统支持命令的撤消。 <br />
<br />
15、interpreter―俺有一个《泡mm真经》，上面有各种泡mm的攻略，比如说去吃西餐的 <br />
步骤、去看电影的方法等等，跟mm约会时，只要做一个interpreter，照着上面的脚本执 <br />
行就可以了。 <br />
<br />
解释器模式：给定一个语言后，解释器模式可以定义出其文法的一种表示，并同时提供一 <br />
个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式将描述怎样 <br />
在有了一个简单的文法后，使用模式设计解释这些语句。在解释器模式里面提到的语言是 <br />
指任何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表文法的命令类 <br />
的等级结构，也就是一系列的组合规则。每一个命令对象都有一个解释方法，代表对命令 <br />
对象的解释。命令对象的等级结构中的对象的任何排列组合都是一个语言。 <br />
<br />
<br />
16、iterator―我爱上了mary，不顾一切的向她求婚。 <br />
<br />
mary：&#8220;想要我跟你结婚，得答应我的条件&#8221; <br />
<br />
我：&#8220;什么条件我都答应，你说吧&#8221; <br />
<br />
mary：&#8220;我看上了那个一克拉的钻石&#8221; <br />
<br />
我：&#8220;我买，我买，还有吗？&#8221; <br />
<br />
mary：&#8220;我看上了湖边的那栋别墅&#8221; <br />
<br />
我：&#8220;我买，我买，还有吗？&#8221; <br />
<br />
mary：&#8220;你的小弟弟必须要有50cm长&#8221; <br />
<br />
我脑袋嗡的一声，坐在椅子上，一咬牙：&#8220;我剪，我剪，还有吗？&#8221; <br />
<br />
&#8230;&#8230; <br />
<br />
迭代子模式：迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多 <br />
个对象聚在一起形成的总体称之为聚集，聚集对象是能够包容一组对象的容器对象。迭代 <br />
子模式将迭代逻辑封装到一个独立的子对象中，从而与聚集本身隔开。迭代子模式简化了 <br />
聚集的界面。每一个聚集对象都可以有一个或一个以上的迭代子对象，每一个迭代子的迭 <br />
代状态可以是彼此独立的。迭代算法可以独立于聚集角色变化。 <br />
<br />
17、mediator―四个mm打麻将，相互之间谁应该给谁多少钱算不清楚了，幸亏当时我在旁 <br />
边，按照各自的筹码数算钱，赚了钱的从我这里拿，赔了钱的也付给我，一切就ok啦，俺 <br />
得到了四个mm的电话。 <br />
<br />
调停者模式：调停者模式包装了一系列对象相互作用的方式，使得这些对象不必相互明显 <br />
作用。从而使他们可以松散偶合。当某些对象之间的作用发生改变时，不会立即影响其他 <br />
的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的相互 <br />
作用转化为一对多的相互作用。调停者模式将对象的行为和协作抽象化，把对象在小尺度 <br />
的行为上与其他对象的相互作用分开处理。 <br />
<br />
18、memento―同时跟几个mm聊天时，一定要记清楚刚才跟mm说了些什么话，不然mm发现 <br />
了会不高兴的哦，幸亏我有个备忘录，刚才与哪个mm说了什么话我都拷贝一份放到备忘录 <br />
里面保存，这样可以随时察看以前的记录啦。 <br />
<br />
备忘录模式：备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模 <br />
式的用意是在不破坏封装的条件下，将一个对象的状态捉住，并外部化，存储起来，从而 <br />
可以在将来合适的时候把这个对象还原到存储起来的状态。 <br />
<br />
19、observer―想知道咱们公司最新mm情报吗？加入公司的mm情报邮件组就行了，tom负 <br />
责搜集情报，他发现的新情报不用一个一个通知我们，直接发布给邮件组，我们作为订阅 <br />
者（观察者）就可以及时收到情报啦 <br />
<br />
观察者模式：观察者模式定义了一种一队多的依赖关系，让多个观察者对象同时监听某一 <br />
个主题对象。这个主题对象在状态上发生变化时，会通知所有观察者对象，使他们能够自 <br />
动更新自己。 <br />
<br />
20、state―跟mm交往时，一定要注意她的状态哦，在不同的状态时她的行为会有不同， <br />
比如你约她今天晚上去看电影，对你没兴趣的mm就会说&#8220;有事情啦&#8221;，对你不讨厌但还没 <br />
喜欢上的mm就会说&#8220;好啊，不过可以带上我同事么？&#8221;，已经喜欢上你的mm就会说&#8220;几点 <br />
钟？看完电影再去泡吧怎么样？&#8221;，当然你看电影过程中表现良好的话，也可以把mm的状 <br />
态从不讨厌不喜欢变成喜欢哦。 <br />
<br />
状态模式：状态模式允许一个对象在其内部状态改变的时候改变行为。这个对象看上去象 <br />
是改变了它的类一样。状态模式把所研究的对象的行为包装在不同的状态对象里，每一个 <br />
状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一个对象在其内部状态 <br />
改变的时候，其行为也随之改变。状态模式需要对每一个系统可能取得的状态创立一个状 <br />
态类的子类。当系统的状态变化时，系统便改变所选的子类。 <br />
<br />
21、strategy―跟不同类型的mm约会，要用不同的策略，有的请电影比较好，有的则去吃 <br />
小吃效果不错，有的去海边浪漫最合适，单目的都是为了得到mm的芳心，我的追mm锦囊中 <br />
有好多strategy哦。 <br />
<br />
策略模式：策略模式针对一组算法，将每一个算法封装到具有共同接口的独立的类中，从 <br />
而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。 <br />
策略模式把行为和环境分开。环境类负责维持和查询行为类，各种算法在具体的策略类中 <br />
提供。由于算法和环境独立开来，算法的增减，修改都不会影响到环境和客户端。 <br />
<br />
22、template method――看过《如何说服女生上床》这部经典文章吗？女生从认识到上 <br />
床的不变的步骤分为巧遇、打破僵局、展开追求、接吻、前戏、动手、爱抚、进去八大步 <br />
骤(template method)，但每个步骤针对不同的情况，都有不一样的做法，这就要看你随 <br />
机应变啦(具体实现)； <br />
<br />
模板方法模式：模板方法模式准备一个抽象类，将部分逻辑以具体方法以及具体构造子的 <br />
形式实现，然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的 <br />
方式实现这些抽象方法，从而对剩余的逻辑有不同的实现。先制定一个顶级逻辑框架，而 <br />
将逻辑的细节留给具体的子类去实现。 <br />
<br />
23、visitor―情人节到了，要给每个mm送一束鲜花和一张卡片，可是每个mm送的花都要 <br />
针对她个人的特点，每张卡片也要根据个人的特点来挑，我一个人哪搞得清楚，还是找花 <br />
店老板和礼品店老板做一下visitor，让花店老板根据mm的特点选一束花，让礼品店老板 <br />
也根据每个人特点选一张卡，这样就轻松多了； <br />
<br />
访问者模式：访问者模式的目的是封装一些施加于某种数据结构元素之上的操作。一旦这 <br />
些操作需要修改的话，接受这个操作的数据结构可以保持不变。访问者模式适用于数据结 <br />
构相对未定的系统，它把数据结构和作用于结构上的操作之间的耦合解脱开，使得操作集 <br />
合可以相对自由的演化。访问者模式使得增加新的操作变的很容易，就是增加一个新的访 <br />
问者类。访问者模式将有关的行为集中到一个访问者对象中，而不是分散到一个个的节点 <br />
类中。当使用访问者模式时，要将尽可能多的对象浏览逻辑放在访问者类中，而不是放到 <br />
它的子类中。访问者模式可以跨过几个类的等级结构访问属于不同的等级结构的成员类</div>
<img src ="http://www.cnblogs.com/diction/aggbug/1054440.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/43751/" target="_blank">[新闻]支付宝携手软银拓展日本市场</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>in和exists的区别与SQL执行效率分析</title><link>http://www.cnblogs.com/diction/archive/2008/01/18/1043844.html</link><dc:creator>黑*马</dc:creator><author>黑*马</author><pubDate>Fri, 18 Jan 2008 01:07:00 GMT</pubDate><guid>http://www.cnblogs.com/diction/archive/2008/01/18/1043844.html</guid><wfw:comment>http://www.cnblogs.com/diction/comments/1043844.html</wfw:comment><comments>http://www.cnblogs.com/diction/archive/2008/01/18/1043844.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/diction/comments/commentRss/1043844.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/diction/services/trackbacks/1043844.html</trackback:ping><description><![CDATA[<strong>in和exists的区别与SQL执行效率分析</strong><br />
<br />
本文对in和exists的区别与SQL执行效率进行了全面整理分析&#8230;&#8230;<br />
<br />
最近很多论坛又开始讨论in和exists的区别与SQL执行效率的问题，<br />
本文特整理一些<strong>in和exists的区别与SQL执行效率分析</strong><br />
<br />
SQL中in可以分为三类：<br />
<br />
　　1、形如select * from t1 where f1 in ('a','b')，应该和以下两种比较效率<br />
<br />
　　select * from t1 where f1='a' or f1='b'<br />
<br />
　　或者 select * from t1 where f1 ='a' union all select * from t1 f1='b'<br />
<br />
　　你可能指的不是这一类，这里不做讨论。<br />
<br />
　　2、形如select * from t1 where f1 in (select f1 from t2 where t2.fx='x')，<br />
<br />
　　其中子查询的where里的条件不受外层查询的影响，这类查询一般情况下，自动优化会转成exist语句，也就是效率和exist一样。<br />
<br />
　　3、形如select * from t1 where f1 in (select f1 from t2 where t2.fx=t1.fx)，<br />
<br />
　　其中子查询的where里的条件受外层查询的影响，这类查询的效率要看相关条件涉及的字段的索引情况和数据量多少，一般认为效率不如exists。<br />
<br />
　　除了第一类in语句都是可以转化成exists 语句的SQL，一般编程习惯应该是用exists而不用in，而很少去考虑in和exists的执行效率.<br />
<br />
<strong>in和exists的SQL执行效率分析</strong><br />
<br />
　　A，B两个表，<br />
<br />
　　(1)当只显示一个表的数据如A，关系条件只一个如ID时，使用IN更快：<br />
<br />
　　select * from A where id in (select id from B)<br />
<br />
　　(2)当只显示一个表的数据如A，关系条件不只一个如ID，col1时，使用IN就不方便了，可以使用EXISTS：<br />
<br />
　　select * from A<br />
<br />
　　where exists (select 1 from B where id = A.id and col1 = A.col1)<br />
<br />
　　(3)当只显示两个表的数据时，使用IN，EXISTS都不合适，要使用连接：<br />
<br />
　　select * from A left join B on id = A.id<br />
<br />
　　所以使用何种方式，要根据要求来定。<br />
<br />
　　这是一般情况下做的测试：<br />
<br />
　　这是偶的测试结果:<br />
<br />
　　set statistics io on <br />
　　select * from sysobjects where exists (select 1 from syscolumns where id=syscolumns.id) <br />
　　select * from sysobjects where id in (select id from syscolumns ) <br />
　　set statistics io off <br />
<br />
　(47 行受影响)<br />
<br />
　　表'syscolpars'。扫描计数 1，逻辑读取 3 次，物理读取 0 次，预读 2 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。<br />
<br />
　　表'sysschobjs'。扫描计数 1，逻辑读取 3 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。<br />
<br />
　　(1 行受影响)<br />
<br />
　　(44 行受影响)<br />
<br />
　　表'syscolpars'。扫描计数 47，逻辑读取 97 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。