﻿<?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>博客园-海东的技术资料</title><link>http://www.cnblogs.com/ghd258/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 05 Jul 2009 23:12:21 GMT</lastBuildDate><pubDate>Sun, 05 Jul 2009 23:12:21 GMT</pubDate><ttl>60</ttl><item><title>微软西安.NET俱乐部（.NET User Group) 邀请主讲讲师</title><link>http://www.cnblogs.com/ghd258/archive/2008/07/16/1243632.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Wed, 16 Jul 2008 00:14:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/07/16/1243632.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1243632.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/07/16/1243632.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1243632.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1243632.html</trackback:ping><description><![CDATA[<span>&nbsp;&nbsp;&nbsp; &nbsp;<font face="Verdana">微软西安.NET俱乐部（.NET User Group)</font>成立以来,只有我们部分活跃的人员在联系,为了更好的发展俱乐部,提高每个成员的技术,计划开展一些专题技术的研究学习,特邀请以下面为主题的技术主讲师,希望热线的朋友踊跃参与(我们的活动都是非营利的哦)<br />
<br />
&nbsp;&nbsp;&nbsp; * 软件系统架构的设计<br />
&nbsp;&nbsp;&nbsp; * 网站架构的设计<br />
&nbsp;&nbsp;&nbsp; * 组件开发的设计思想&nbsp;<br />
&nbsp;&nbsp;&nbsp; * WPF开发<br />
&nbsp;&nbsp;&nbsp; * 数据库的性能优化和管理<br />
&nbsp;&nbsp;&nbsp; * 网络方向的开发&nbsp;<br />
&nbsp; &nbsp; * CSS&nbsp;<br />
&nbsp;&nbsp; &nbsp;* JS（AJAX）<br />
&nbsp;&nbsp;&nbsp; * 安全性项目管理架构设计&nbsp;<br />
&nbsp;&nbsp;&nbsp; * 需求分析工作流设计（WF）<br />
&nbsp;&nbsp;&nbsp;&nbsp;* ASP.NET MVC&nbsp;<br />
&nbsp;&nbsp;&nbsp; *&nbsp;LINQ （ADO.NET Entity Framework）<br />
&nbsp;&nbsp;&nbsp; * ASP.NET 高性能开发<br />
&nbsp;&nbsp;&nbsp; * uml方面的培训报表开发（Reporting Services）<br />
&nbsp;&nbsp; 有热线的朋友愿意加入我们的讲师团队,请把联系方式:msn 或者qq号码、联系电话、电子邮件、公司、技术特长、主讲课题等发送的我的邮箱：<strong><a href="mailto:ghd258@gmail.com">ghd258@gmail.com</a><br />
&nbsp;&nbsp; (邮件主题请注明加入讲师团队)</strong></span>
 <img src ="http://www.cnblogs.com/ghd258/aggbug/1243632.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47989/" target="_blank">Twitter无处不在 魔兽世界Twitter发送器插件发布</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>热烈庆祝西安.NET俱乐部加入微软.NET俱乐部（.NET User Group)</title><link>http://www.cnblogs.com/ghd258/archive/2008/06/12/1217606.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Thu, 12 Jun 2008 00:25:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/06/12/1217606.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1217606.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/06/12/1217606.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1217606.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1217606.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;<strong style="mso-bidi-font-weight: normal"><span lang="EN-US" style="font-size: 16pt; font-family: 'Arial Unicode MS'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">&nbsp;<strong>&nbsp;</strong><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype></span></strong> <img alt="" src="http://www.cnblogs.com/images/cnblogs_com/ghd258/36902/r_俱乐部.jpg" border="0" />
<p style="text-indent: 21pt">2008/5/10<span style="font-family: 宋体">日，微软（西安）</span>.NET<span style="font-family: 宋体">俱乐部成立聚会和</span>Visual Studio 2008 <span style="font-family: 宋体">社区发布全国巡展在西安成功举办，我们这次活动参加人数非常多，以致我们的资料都不够发。同时我们也得到一些公司和个人对我们俱乐部活动的支持和肯定，其中活跃网络和葡萄成公司也希望我们俱乐部的活动以后能和他们共同研究技术等。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">我坚信，只要我们一起努力，我们一定可以把我们西安</span>.NET<span style="font-family: 宋体">俱乐部办的更好。为此，我申请加入微软</span>.NET<span style="font-family: 宋体">俱乐部（</span>.NET User Group<span style="font-family: 宋体">），而且微软很快就批准了我们加入微软</span>.NET<span style="font-family: 宋体">俱乐部（</span>.NET User Group<span style="font-family: 宋体">）组织。</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">下面是来自微软批准我们通过的邮件部分内容：</span></p>
<p>Dear gao haidong:</p>
<p>CONGRATULATIONS! Your group (Microsoft .NET Xi&#8217;an Club) has been approved to be an INETA member based on your dedication to the .NET user group community. Welcome to INETA! If you have any questions about the goals of INETA, or if I can personally be a source of encouragement and information for you, do not hesitate to drop me an email!</p>
<p>&nbsp;&nbsp; &nbsp;<span style="font-family: 宋体">有人会问，我们加入微软</span>.NET<span style="font-family: 宋体">俱乐部（</span>.NET User Group<span style="font-family: 宋体">）组织有什么好处呢，好处当然有了，我们的活动，都可以请微软的讲师来讲课，而且微软给我们提供最新的技术资料以及一些礼品等等。</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">在接下来的日子，我们草拟了一份俱乐部的章程，目前正在修改当中，目前我们主要在博客园作为我们的官方网站。活动信息都在这里发布。</span></p>
<p><span style="font-family: 宋体">俱乐部服务项目目前构想如下：</span></p>
<p><span style="font-family: 宋体">（以下服务项目均遵循自愿参加的原则）</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red; font-family: 宋体">培训项目</span></p>
<p style="margin-left: 73.5pt; text-indent: -73.5pt">&nbsp;<span style="font-family: 宋体">活动细则：定期对会员进行需求调查，根据调查结果确认主题并邀请主讲讲师。做到课程有针对性与实效性，竭力满足大多数会员的要求。</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">活动形式：公开课</span></p>
<p style="margin-left: 73.5pt; text-indent: -73.5pt">&nbsp;<span style="font-family: 宋体">活动资源：以微软的资深讲师作为主要师资力量，俱乐部中的相关领域的权威作为主要讲师，或根据情况邀请各高级培训机构的经验教师授课</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red; font-family: 宋体">咨询研讨会</span></p>
<p style="margin-left: 73.5pt; text-indent: -73.5pt">&nbsp;<span style="font-family: 宋体">活动细则</span>: <span style="font-family: 宋体">搜集会员的疑难问题，对于问题进行分门别类，举行专门性的研讨会议。使会员在相互的交流中，开拓视野，不断提升。</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">活动资源：邀请来自微软、</span>IT<span style="font-family: 宋体">企业或高校的技术骨干或专家作为顾问，主持会议。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">交流和联谊活动</span></p>
<p style="margin-left: 73.5pt; text-indent: -73.5pt">&nbsp;<span style="font-family: 宋体">活动细则：俱乐部将不定期地举办各种联谊活动，加强会员之间的沟通和联系，促进信息的流动和共享。</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">活动形式：茶话会、体育活动等</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">活动资源：所有的俱乐部成员均可参与</span></p>
<p><span style="font-family: 宋体">（以下服务项目均遵循个人申请、组织选拔的原则）</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red; font-family: 宋体">项目开发</span></p>
<p style="margin-left: 73.5pt; text-indent: -73.5pt">&nbsp;<span style="font-family: 宋体">活动细则：俱乐部会对外和对内进行软件外包的承接，用以给成员提供实践和锻炼的机会</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">活动形式：集中开发、分散开发等</span></p>
<p style="margin-left: 73.5pt; text-indent: -73.5pt">&nbsp;<span style="font-family: 宋体">活动资源：根据实际情况，利用成员个人或组织购买相应的设备；一些在开发技术、软件架构、项目管理方面能力突出的成员等</span></p>
<p style="margin-left: 71.7pt; text-indent: -52.5pt"><span style="font-family: 宋体">劳动报酬：凡是有营利的项目，除过成本，所有参与者均可根据其劳动情况获取相应报酬；没有盈利的项目，按其劳动付出的成本给予其在本组织的股份比例。</span></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red; font-family: 宋体">图书翻译和书编写</span></p>
<p style="margin-left: 68.25pt; text-indent: -47.25pt"><span style="font-family: 宋体">活动细则：俱乐部会联系编辑社等，针对于</span>.Net<span style="font-family: 宋体">技术相关的外文图书资料等进行翻译和编写工作。</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">活动形似：统一规划、分散翻译和编写，集中组合等</span></p>
<p>&nbsp;&nbsp;&nbsp; <span style="font-family: 宋体">活动资源：一些英文和技术均为突出的会员均可以申请参与。</span></p>
<p style="margin-left: 73.5pt; text-indent: -73.5pt">&nbsp;<span style="font-family: 宋体">劳动报酬：凡是有营利的项目，除过成本，所有参与者均可根据其劳动情况获取相应报酬；没有盈利的项目，按其劳动付出给与其相应比例的股份。</span></p>
<p style="text-indent: 21.75pt"><span style="font-family: 宋体">以上内容欢迎个人朋友参与进来讨论，同时希望更多的人员能加入我们的俱乐部，想加入的朋友请写清自己的姓名、所在公司、项目经验、</span><a href="mailto:技术特长和联系方式等发邮件到ghd258@gmail.com"><span style="font-family: 宋体">技术特长和联系方式等发邮件到ghd258@gmail.com</a></span><span style="font-family: 宋体">，邮件主题请写明为&#8220;申请加入微软西安</span>.NET<span style="font-family: 宋体">俱乐部&#8221;。如果在博客园有帐号的朋友可以在</span><a href="http://www.cnblogs.com/ghd258/archive/2006/11/21/567609.html#1220947">http://www.cnblogs.com/ghd258/archive/2006/11/21/567609.html#1220947</a><span style="font-family: 宋体">这里申请加入，注意写明自己的技术特长及联系方式等，最好能发邮件给我。</span></p>
<p style="text-indent: 21.75pt"><span style="font-family: 宋体">同时告诉大家一个好消息，上次聚会时说礼品有衬衫和扑克，但是当时扑克没有印好，衬衫当时被其他礼品代替。现在扑克已经印好了，而且已经到我这里了，由于大家平时都不在一起，等下次聚会的时候发给大家，不过要记得来参加活动哦！！！</span></p>
 <img src ="http://www.cnblogs.com/ghd258/aggbug/1217606.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47988/" target="_blank">Firefox 3.5匆忙推出漏洞多 Mozilla本月将更新</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Enterprise Library 4.0 - May 2008 发布了</title><link>http://www.cnblogs.com/ghd258/archive/2008/05/16/1200337.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Fri, 16 May 2008 04:26:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/05/16/1200337.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1200337.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/05/16/1200337.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1200337.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1200337.html</trackback:ping><description><![CDATA[下载地址<font face="Verdana"><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=90de37e0-7b42-4044-99be-f8ecfbbc5b65&amp;DisplayLang=en">http://www.microsoft.com/downloads/details.aspx?FamilyID=90de37e0-7b42-4044-99be-f8ecfbbc5b65&amp;DisplayLang=en</a></font><br />
<span>The patterns &amp; practices Enterprise Library is a collection of reusable application blocks designed to assist software developers with common enterprise development challenges. This following application blocks are included: Caching Application Block, Cryptography Application Block, Data Access Application Block, Exception Handling Application Block, Logging Application Block, Policy Injection Application Block, Security Application Block, Validation Application Block, and Unity Application Block. <br />
<br />
This release includes: <br />
<ul><br />
    <li>Support for Visual Studio 2008.<br />
    <li>Integration with the Unity dependency injection container.<br />
    <li>WMI2 support and improved instrumentation.<br />
    <li>Support for pluggable cache managers.<br />
    <li>Performance improvements.<br />
    </span></li>
</ul>
  <img src ="http://www.cnblogs.com/ghd258/aggbug/1200337.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47987/" target="_blank">预测：Twitter最可能收购的十家公司</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>SQL语句对表中父子节点正向和反向取所有节点</title><link>http://www.cnblogs.com/ghd258/archive/2008/05/08/1188592.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Thu, 08 May 2008 08:26:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/05/08/1188592.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1188592.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/05/08/1188592.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1188592.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1188592.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">CREATE</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">TABLE</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">dbo</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">temptb</span><span style="color: #ff0000">]</span><span style="color: #000000">(<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">id</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">int</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">IDENTITY</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">,</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">NOT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NULL</span><span style="color: #000000">,<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">pid</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">int</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NULL</span><span style="color: #000000">,<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">name1</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">varchar</span><span style="color: #ff0000">]</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">20</span><span style="color: #000000">)&nbsp;,<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">name</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">nvarchar</span><span style="color: #ff0000">]</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000">)&nbsp;,<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">parentid</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">int</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NULL</span><span style="color: #000000">,<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">CONSTRAINT</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">PK_temptb</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">PRIMARY</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">KEY</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">CLUSTERED</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />(<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">id</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">ASC</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />)</span><span style="color: #0000ff">WITH</span><span style="color: #000000">&nbsp;(PAD_INDEX&nbsp;&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">OFF</span><span style="color: #000000">,&nbsp;STATISTICS_NORECOMPUTE&nbsp;&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">OFF</span><span style="color: #000000">,&nbsp;IGNORE_DUP_KEY&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">OFF</span><span style="color: #000000">,&nbsp;ALLOW_ROW_LOCKS&nbsp;&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">ON</span><span style="color: #000000">,&nbsp;ALLOW_PAGE_LOCKS&nbsp;&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">ON</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">ON</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">PRIMARY</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;</span><span style="color: #0000ff">ON</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">PRIMARY</span><span style="color: #ff0000">]</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">GO</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_375_400_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_375_400_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_375_400_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_375_400_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_375_400_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_375_400_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_375_400_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_375_400_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_375_400_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="Codehighlighter1_375_400_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">&nbsp;创建函数&nbsp;&nbsp;根据节点id找出其所有父节点</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;f_pid(</span><span style="color: #008000">@id</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">returns</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@re</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">(id&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,</span><span style="color: #0000ff">level</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">begin</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">declare</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@l</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@l</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@re</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@id</span><span style="color: #000000">,</span><span style="color: #008000">@l</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="font-weight: bold; color: #008000">@@rowcount</span><span style="color: #808080">&gt;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">begin</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@l</span><span style="color: #808080">=</span><span style="color: #008000">@l</span><span style="color: #808080">+</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@re</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;a.pid,</span><span style="color: #008000">@l</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;temptb&nbsp;&nbsp;&nbsp;a,</span><span style="color: #008000">@re</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;a.id</span><span style="color: #808080">=</span><span style="color: #000000">b.id&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;b.</span><span style="color: #0000ff">level</span><span style="color: #808080">=</span><span style="color: #008000">@l</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;a.pid</span><span style="color: #808080">&lt;&gt;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">update</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@re</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">level</span><span style="color: #808080">=</span><span style="color: #008000">@l</span><span style="color: #808080">-</span><span style="color: #0000ff">level</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">go</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;<br />
<img id="Codehighlighter1_844_849_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_844_849_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_844_849_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_844_849_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_844_849_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_844_849_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_844_849_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_844_849_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_844_849_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="Codehighlighter1_844_849_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">&nbsp;</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;a.</span><span style="color: #808080">*</span><span style="color: #000000">,b.</span><span style="color: #0000ff">level</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;temptb&nbsp;&nbsp;&nbsp;a,f_pid(</span><span style="font-weight: bold; color: #800000">7</span><span style="color: #000000">)&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;a.id</span><span style="color: #808080">=</span><span style="color: #000000">b.id&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">order</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">by</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;b.</span><span style="color: #0000ff">level</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">go</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img id="Codehighlighter1_968_992_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_968_992_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_968_992_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_968_992_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_968_992_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_968_992_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_968_992_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_968_992_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_968_992_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="Codehighlighter1_968_992_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">&nbsp;创建函数&nbsp;根据节点id&nbsp;找出所有子节点</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_1028_1054_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1028_1054_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1028_1054_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1028_1054_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1028_1054_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1028_1054_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1028_1054_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1028_1054_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;c_tree(</span><span style="color: #008000">@initid</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)</span><span id="Codehighlighter1_1028_1054_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="Codehighlighter1_1028_1054_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">定义函数c_tree，输入参数为初始节点id</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img id="Codehighlighter1_1127_1144_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1127_1144_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1127_1144_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1127_1144_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1127_1144_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1127_1144_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1127_1144_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1127_1144_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">returns</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@t</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">(id&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,name&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">100</span><span style="color: #000000">),parentid&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,lev&nbsp;</span><span style="color: #0000ff">INT</span><span style="color: #000000">,byid&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)</span><span id="Codehighlighter1_1127_1144_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="Codehighlighter1_1127_1144_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">定义表t用来存放取出的数据</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">begin</span><span style="color: #000000"><br />
<img id="Codehighlighter1_1167_1177_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1167_1177_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1167_1177_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1167_1177_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1167_1177_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1167_1177_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1167_1177_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1167_1177_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">declare</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@i</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span id="Codehighlighter1_1167_1177_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="Codehighlighter1_1167_1177_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">标志递归级别</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@i</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@t</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;id,name,parentid,</span><span style="color: #008000">@i</span><span style="color: #000000">&nbsp;,byid</span><span style="color: #808080">=</span><span style="color: #008000">@initid</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;temptb&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;id</span><span style="color: #808080">=</span><span style="color: #008000">@initid</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #008000">@@rowcount</span><span style="color: #808080">&lt;&gt;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">begin</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@i</span><span style="color: #808080">=</span><span style="color: #008000">@i</span><span style="color: #808080">+</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@t</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;a.id,a.name,a.parentid,</span><span style="color: #008000">@i</span><span style="color: #000000">,</span><span style="color: #008000">@initid</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;temptb&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;a,</span><span style="color: #008000">@t</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;b<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;b.id</span><span style="color: #808080">=</span><span style="color: #000000">a.parentid&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;b.lev</span><span style="color: #808080">=</span><span style="color: #008000">@i</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">END</span><span style="color: #000000"><br />
<img id="Codehighlighter1_1448_1484_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1448_1484_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1448_1484_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1448_1484_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1448_1484_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1448_1484_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1448_1484_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1448_1484_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_1448_1484_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="Codehighlighter1_1448_1484_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">在上面的函数中由于表变量使用了两次，性能很差&nbsp;,下面的性能要高些</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">create</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">function</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">dbo</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">UF_GetOwnerSKUNumber</span><span style="color: #ff0000">]</span><span style="color: #000000">()<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">RETURNS</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">@b</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">(id&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,byid&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">DECLARE</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@t</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">table</span><span style="color: #000000">(id&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">,lev&nbsp;</span><span style="color: #0000ff">INT</span><span style="color: #000000">,byid&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">)<br />
<img id="Codehighlighter1_1633_1643_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1633_1643_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1633_1643_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1633_1643_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_1633_1643_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1633_1643_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1633_1643_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1633_1643_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">declare</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@i</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span id="Codehighlighter1_1633_1643_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="Codehighlighter1_1633_1643_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">标志递归级别</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@i</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@t</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;c.id,</span><span style="color: #008000">@i</span><span style="color: #000000">&nbsp;,c.byid&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">temptb</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;c&nbsp;</span><span style="color: #0000ff">WITH</span><span style="color: #000000">&nbsp;(NOLOCK)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">pid</span><span style="color: #ff0000">]</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">OR</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">parentid</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">IS</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NULL</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #808080">OR</span><span style="color: #000000">&nbsp;parentid&nbsp;</span><span style="color: #808080">NOT</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">IN</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;id&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">temptb</span><span style="color: #ff0000">]</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;id</span><span style="color: #808080">=</span><span style="color: #000000">c.id)<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #008000">@@rowcount</span><span style="color: #808080">&lt;&gt;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">begin</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@i</span><span style="color: #808080">=</span><span style="color: #008000">@i</span><span style="color: #808080">+</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">insert</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@b</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;&nbsp;a.id,b.byid&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">temptb</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;a&nbsp;</span><span style="color: #0000ff">WITH</span><span style="color: #000000">&nbsp;(NOLOCK)&nbsp;,</span><span style="color: #008000">@t</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">as</span><span style="color: #000000">&nbsp;b<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">where</span><span style="color: #000000">&nbsp;b.id</span><span style="color: #808080">=</span><span style="color: #000000">a.parentid&nbsp;</span><span style="color: #808080">and</span><span style="color: #000000">&nbsp;b.lev</span><span style="color: #808080">=</span><span style="color: #008000">@i</span><span style="color: #808080">-</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">RETURN</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">END</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">select</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">from</span><span style="color: #000000">&nbsp;c_tree(&nbsp;)&nbsp;<br />
<img id="Codehighlighter1_2036_2054_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_2036_2054_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_2036_2054_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_2036_2054_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_2036_2054_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_2036_2054_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_2036_2054_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_2036_2054_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_2036_2054_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="Codehighlighter1_2036_2054_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">&nbsp;把所有行转换为一个字符串&nbsp;</span><span style="color: #008080">*/</span></span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">DECLARE</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@FileClassName</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">nvarchar</span><span style="color: #000000">(</span><span style="color: #ff00ff">max</span><span style="color: #000000">)&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">@FileClassName</span><span style="color: #808080">=</span><span style="color: #ff0000">''</span><span style="color: #000000"><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">@FileClassName</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=+</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #008000">@FileClassName</span><span style="color: #808080">+</span><span style="color: #ff00ff">CONVERT</span><span style="color: #000000">(</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">20</span><span style="color: #000000">),id)</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">,</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">FROM</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">temptb</span><span style="color: #ff0000">]</span><span style="color: #000000">&nbsp;a&nbsp;</span><span style="color: #0000ff">WHERE</span><span style="color: #000000">&nbsp;pid</span><span style="color: #808080">=</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;</span><span style="color: #0000ff">SELECT</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@FileClassName</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">AS</span><span style="color: #000000">&nbsp;a<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;<br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
<img src ="http://www.cnblogs.com/ghd258/aggbug/1188592.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47986/" target="_blank">网易澄清:与暴雪合资公司仅提供技术支持</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>微软（西安）.NET俱乐部成立聚会和Visual Studio 2008 社区发布全国巡展邀请函</title><link>http://www.cnblogs.com/ghd258/archive/2008/04/28/1174900.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Mon, 28 Apr 2008 09:28:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/04/28/1174900.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1174900.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/04/28/1174900.html#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1174900.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1174900.html</trackback:ping><description><![CDATA[<p><span style="font-family: Verdana">尊敬的先生</span><font face="Verdana">/</font><span style="font-family: Verdana">女士：<br />
</span><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><span style="font-family: Verdana">您好！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经过前段时间和</span><span style="line-height: 150%; font-family: Verdana">大家的讨论，得到很多热心朋友的支持，在我与微软余辉的多次沟通下</span><span style="line-height: 150%; font-family: Verdana">，</span><font face="Verdana"><span style="line-height: 150%"> 余辉将正式授权我们成立&#8220;</span></font><span style="line-height: 150%; font-family: Verdana">微软</span><font face="Verdana"><span style="line-height: 150%">.NET</span></font><span style="line-height: 150%; font-family: Verdana">开发（西安）俱乐部</span><font face="Verdana"><span style="line-height: 150%">&#8221;并</span></font><span style="line-height: 150%; font-family: Verdana">于</span><font face="Verdana"><span style="line-height: 150%">2008</span></font><span style="line-height: 150%; font-family: Verdana">年5</span><span style="line-height: 150%; font-family: Verdana">月10</span><span style="line-height: 150%; font-family: Verdana">日</span><span style="line-height: 150%; font-family: Verdana">正式宣布成立。诚邀您和您的朋友在百忙中拨紊参加俱乐部成立活动。<br />
</span><font face="Verdana"><span style="line-height: 150%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .NET</span></font><span style="line-height: 150%; font-family: Verdana">开发俱乐部作为一个非营利民间组织，旨在为</span><font face="Verdana"><span style="line-height: 150%">.NET</span></font><span style="line-height: 150%; font-family: Verdana">开发爱好者提供一个沟通、交流、切磋的平台，使大家共同分享、共同提高、共创价值。俱乐部的宗旨是：交流、分享、提高、创新。<br />
</span><span style="line-height: 150%; font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在此次微软</span><font face="Verdana"><span style="line-height: 150%">.NET</span></font><span style="line-height: 150%; font-family: Verdana">开发（西安）俱乐部成立举办之际，我们有幸请到了微软的余辉先生，他将与大家共同探讨新一代企业级应用平台与开发技术。<br />
</span></p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">&nbsp;请dudu允许放在首页两天 ，谢谢。</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 议程： 13:00-13:40&nbsp;&nbsp;&nbsp;<span style="line-height: 150%; font-family: Verdana">签到和西安.NET俱乐部的介绍和有俞晖宣布微软（西安）.NET俱乐部的正式成立。<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其他详细安排请查看下面的议程安排。&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请参加的朋友点击下面&#8220;<span style="color: red">点击报名</span>&#8221;按钮进行注册报名&nbsp;，座位有限。同时请参加的朋友能给我留下联系方式：请写明姓名，联系方式，公司以及技术方向等信息，发到我的邮箱：<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#103;&#104;&#100;&#50;&#53;&#56;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;">ghd258@gmail.com</a><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red">更详细的信息请查看下面的详细说明。<br />
</span><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 参加者都会有意外惊喜，每人都有Visual Studio 2008 试用版光盘和印有有各个俱乐部部长照片的扑克。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 最后的环节采用反馈表抽奖：奖品有蓝牙耳机和衬衫。</span><br />
<div style="margin: 0px; font-family: Verdana, Arial, Helvetica, sans-serif" bgcolor="#FFFFFF">
<table style="border-right: #999999 1px solid; border-top: #999999 1px solid; border-left: #999999 1px solid; border-bottom: #999999 1px solid" cellspacing="0" cellpadding="0" width="750" align="left" border="0">
    <tbody>
        <tr>
            <td>
            <table cellspacing="0" cellpadding="0" width="100%" bgcolor="white" border="0">
                <tbody>
                    <tr>
                        <td valign="top" colspan="2">
                        <table style="font-size: 10px; color: #ffffff; background-color: #8b8b8b; text-decoration: none" cellspacing="0" cellpadding="0" width="100%" border="0">
                            <tbody>
                                <tr>
                                    <td style="padding-right: 5px; padding-left: 0px; padding-bottom: 0px; padding-top: 0px" valign="middle" noWrap align="right" height="20"><span style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none"><a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none" href="http://go.microsoft.com/?linkid=8769007" target="_blank">订阅其它的 Newsletter</a> </span>| <span style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none"><a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none" href="http://go.microsoft.com/?linkid=8769008" target="_blank">取消订阅</a></span> | <span style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none"><a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif; text-decoration: none" href="http://go.microsoft.com/?linkid=8769009" target="_blank">更新个人信息资料</a></span></td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            <table cellspacing="0" cellpadding="0" width="100%" align="right" bgcolor="white" border="0">
                <tbody>
                    <tr align="right">
                        <td>
                        <table cellspacing="0" cellpadding="0">
                            <tbody>
                                <tr>
                                    <td valign="top" align="right" height="95"><a href="http://go.microsoft.com/?linkid=8769010" target="_blank"><img height="338" alt="微软Visual Studio 2008 社区发布全国巡展  力邀天下高手" hspace="0" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/top01.jpg" width="407" align="right" border="0" /> </a></td>
                                    <td valign="top" align="right" width="180"><a name="119844f4bd0c2c42_top"></a>
                                    <table style="background-color: #8b8b8b" cellspacing="0" cellpadding="0" align="right" border="0">
                                        <tbody>
                                            <tr>
                                                <td valign="top" width="180" height="95">
                                                <table cellspacing="0" cellpadding="0" width="180" border="0">
                                                    <tbody>
                                                        <tr style="background-color: #8b8b8b">
                                                            <td align="center" height="55"><img style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; padding-top: 0px" height="338" alt="微软Visual Studio 2008 社区发布全国巡展  力邀天下高手" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/top02.jpg" width="343" align="center" border="0" /> </td>
                                                        </tr>
                                                        <tr style="background-color: #8b8b8b">
                                                            <td style="color: #ffffff" valign="top" align="center">
                                                            <div style="padding-right: 0px; padding-left: 0px; font-size: 10px; padding-bottom: 0px; line-height: 100%; padding-top: 0px; font-family: Verdana, Arial, Helvetica, sans-serif"></div>
                                                            </td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                    <tr>
                        <td style="padding-right: 15px; padding-left: 20px; padding-top: 5px" colspan="2">
                        <div style="padding-right: 0px; padding-left: 0px; font-size: 10px; padding-bottom: 1em; line-height: 140%; padding-top: 0px; font-family: Verdana, Arial, Helvetica, sans-serif"></div>
                        <div style="overflow: hidden"></div>
                        </td>
                    </tr>
                    <tr>
                        <td style="padding-right: 15px; padding-left: 20px; padding-top: 5px" colspan="2"></td>
                    </tr>
                    <tr>
                        <td valign="top" colspan="2">
                        <table cellspacing="0" cellpadding="0" width="100%" border="0">
                            <tbody>
                                <tr>
                                    <td style="padding-top: 10px" valign="top"><a name="119844f4bd0c2c42_top"></a>
                                    <table>
                                        <tbody>
                                            <tr>
                                                <td>
                                                <table cellspacing="0" cellpadding="0" width="100%" border="0">
                                                    <tbody>
                                                        <tr>
                                                            <td style="padding-right: 15px; padding-left: 20px; padding-top: 5px">
                                                            <table cellspacing="0" cellpadding="0" border="0">
                                                                <tbody>
                                                                    <tr>
                                                                        <td colspan="5"><a name="119844f4bd0c2c42_EAAAAAAA"></a>
                                                                        <div style="font-weight: bold; font-size: 15px; padding-bottom: 10px; overflow: hidden; font-family: Verdana, Arial, Helvetica, sans-serif"></div>
                                                                        </td>
                                                                    </tr>
                                                                    <tr>
                                                                        <td></td>
                                                                        <td style="padding-right: 10px; padding-left: 0px; padding-bottom: 0px; padding-top: 0px" valign="top" width="50%">
                                                                        <div style="padding-right: 0px; padding-left: 0px; font-size: 11px; padding-bottom: 1em; line-height: 140%; padding-top: 0px; font-family: Verdana, Arial, Helvetica, sans-serif"><img height="20" alt="从开发高手到企业英雄" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/edm_01_11.jpg" width="460" border="0" /> <br />
                                                                        <br />
                                                                        众所周知，开发人员这一思维活跃的群体中可谓人才济济、高手云集<wbr>，然而在这其中，究竟谁才称得上是企业英雄？其实&#8220;英雄<wbr>&#8221;并非遥不可及，那些始终立足最新技术、并且时刻运用专业知识创造<wbr>有益价值，推动企业与创新前沿同步发展的开发高手<wbr>，就是当之无愧的企业英雄！ <br />
                                                                        <br />
                                                                        微软对此深信不疑，矢志推动更多开发人员实现从高手到英雄的完美蜕<wbr>变，因此将于&#8220;微软 2008 新一代企业级应用平台与开发技术发布大会&#8221;圆满落幕之际<wbr>，特别推出&#8220;<a href="http://go.microsoft.com/?linkid=8767696" target="_blank"><strong>微软 Visual Studio 2008 社区发布全国巡展</strong></a>&#8221;。 <br />
                                                                        <br />
                                                                        本次巡展将于 2008 年 4 月至 6 月，相继登陆<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">南京</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">武汉</a>、<a href="http://go.microsoft.com/?linkid=8767695" target="_blank">西安</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">哈尔滨</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">上海</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">苏州</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">广州</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">深圳</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">乌鲁木齐</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">北京</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">杭州</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">长沙</a>、<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">昆明</a>和<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">青岛</a>共 14 个城市，旨在深入开发人员社区，通过全方位的互动和亲切交流<wbr>，与各路高手共同分享微软最新技术产品与先导开发理念，<strong>精彩如下</strong>： </div>
                                                                        <table cellspacing="0" cellpadding="0" border="0">
                                                                            <tbody>
                                                                                <tr>
                                                                                    <td style="padding-right: 4px; font-size: 11px; padding-bottom: 10px; color: #a6a6a6" valign="top" align="right">&#8226;</td>
                                                                                    <td valign="top" width="100%">
                                                                                    <div style="font-size: 11px; padding-bottom: 10px"><strong>Visual Studio 2008 新增功能全面支持下一代 Web 应用程序开发</strong> </div>
                                                                                    </td>
                                                                                </tr>
                                                                                <tr>
                                                                                    <td style="padding-right: 4px; font-size: 11px; padding-bottom: 10px; color: #a6a6a6" valign="top" align="right">&#8226;</td>
                                                                                    <td valign="top" width="100%">
                                                                                    <div style="font-size: 11px; padding-bottom: 10px"><strong>以 Silverlight 及 Expression 构建炫目杰出的用户体验和富交互应用</strong> </div>
                                                                                    </td>
                                                                                </tr>
                                                                                <tr>
                                                                                    <td style="padding-right: 4px; font-size: 11px; padding-bottom: 10px; color: #a6a6a6" valign="top" align="right">&#8226;</td>
                                                                                    <td valign="top" width="100%">
                                                                                    <div style="font-size: 11px; padding-bottom: 10px"><strong>Windows Mobile 6.0 和 .NET Compact Framework 3.5 的开发新特性</strong> </div>
                                                                                    </td>
                                                                                </tr>
                                                                                <tr>
                                                                                    <td style="padding-right: 4px; font-size: 11px; padding-bottom: 10px; color: #a6a6a6" valign="top" align="right">&#8226;</td>
                                                                                    <td valign="top" width="100%">
                                                                                    <div style="font-size: 11px; padding-bottom: 10px"><strong>微软 SaaS (Software as a Service) 应用模式带来的创新经验和机遇</strong> </div>
                                                                                    </td>
                                                                                </tr>
                                                                            </tbody>
                                                                        </table>
                                                                        <div style="padding-right: 0px; padding-left: 0px; font-size: 11px; padding-bottom: 1em; line-height: 140%; padding-top: 0px; font-family: Verdana, Arial, Helvetica, sans-serif">微软在此力邀天下高手亲临现场，聆听微软专家技术演讲<wbr>，分享最新产品生动演示，更可与同城高手切磋技艺交流提高<wbr>，全程精彩令您不虚此行！我们坚信，掌握最新专业技术<wbr>，人人都可成为推动企业高速前进的开发英雄！ <br />
                                                                        <br />
                                                                        <a href="http://go.microsoft.com/?linkid=8767697" target="_blank"><img height="29" alt="点击报名" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/edm_01_23.jpg" width="110" border="0" /></a><br />
                                                                        <br />
                                                                        欢迎登陆微软网站，了解更多产品信息及活动详情：<a href="http://go.microsoft.com/?linkid=8767696" target="_blank">http://msdn2.microsoft.com/zh<wbr>-cn/cc498683.aspx</a></div>
                                                                        </td>
                                                                        <td></td>
                                                                        <td style="padding-right: 10px; padding-left: 0px; padding-bottom: 0px; padding-top: 0px" valign="top" width="50%">
                                                                        <div style="padding-right: 0px; padding-left: 0px; font-size: 11px; padding-bottom: 1em; line-height: 140%; padding-top: 0px; font-family: Verdana, Arial, Helvetica, sans-serif"><img height="69" alt="会议时间" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/edm_01_15_xa_1.jpg" width="220" border="0" /> <br />
                                                                        <br />
                                                                        <img height="101" alt="会址详情" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/edm_01_15_xa_2.jpg" width="220" border="0" /> <br />
                                                                        <br />
                                                                        <img height="250" alt="议程安排" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/edm_01_20.jpg" width="220" border="0" /> <br />
                                                                        <br />
                                                                        <img height="72" alt="会务联系" src="http://www.microsoft.com/china/newsletter/edm/dpe_q4_njwh_20080418/edm_01_22.jpg" width="220" border="0" /> </div>
                                                                        </td>
                                                                        <td width="50%"></td>
                                                                    </tr>
                                                                </tbody>
                                                            </table>
                                                            </td>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                                </td>
                                                <td style="width: 12px"></td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    </td>
                                </tr>
                                <tr>
                                    <td style="padding-right: 15px; padding-left: 20px; padding-bottom: 5px; padding-top: 5px">
                                    <div style="padding-right: 15px; padding-left: 10px; font-size: 10px; padding-bottom: 1em; line-height: 140%; padding-top: 0px; font-family: Verdana, Arial, Helvetica, sans-serif"></div>
                                    </td>
                                    <td></td>
                                </tr>
                                <tr>
                                    <td style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #8b8b8b" valign="middle" colspan="2">
                                    <table cellspacing="0" cellpadding="0" width="610" align="left" border="0">
                                        <tbody>
                                            <tr>
                                                <td style="padding-right: 5px; padding-left: 10px; font-size: 10px; padding-bottom: 5px; color: #ffffff; padding-top: 5px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #8b8b8b" align="left" height="50"><font color="#ffffff"><a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif" href="http://go.microsoft.com/?linkid=8769007" target="_blank">订阅其它的 Newsletter</a> | <a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif" href="http://go.microsoft.com/?linkid=8769008" target="_blank">取消订阅</a> | <a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif" href="http://go.microsoft.com/?linkid=8769009" target="_blank">更新个人信息资料</a>
                                                <div style="overflow: hidden"></div>
                                                &#169; 2008 Microsoft Corporation <a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif" href="http://go.microsoft.com/?linkid=8769011" target="_blank">保留所有权利</a> | <a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif" href="http://go.microsoft.com/?linkid=8769012" target="_blank">商标</a> | <a style="font-size: 10px; color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif" href="http://go.microsoft.com/?linkid=8769013" target="_blank">隐私声明</a></font> </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    <table cellspacing="0" cellpadding="0" width="100" align="right" border="0">
                                        <tbody>
                                            <tr>
                                                <td style="padding-right: 0px; padding-left: 10px; font-size: 10px; padding-bottom: 0px; color: #ffffff; padding-top: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; background-color: #8b8b8b" valign="middle" align="left" height="50"><img height="50" alt="Microsoft" src="http://www.microsoft.com/library/images/pens/mslogos/MSlogo_TN.gif" width="100" align="right" /> </td>
                                                <td valign="bottom" align="right" width="0" height="0">
                                                <div><img height="0" alt="" hspace="0" src="http://c.microsoft.com/trans_pixel.aspx?type=PENS&amp;jobId=115943" width="0" border="0" /> </div>
                                                </td>
                                            </tr>
                                        </tbody>
                                    </table>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                        </td>
                    </tr>
                </tbody>
            </table>
            </td>
        </tr>
    </tbody>
</table>
</div>
<img src ="http://www.cnblogs.com/ghd258/aggbug/1174900.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47985/" target="_blank">杰克逊悼念仪式或成史上最大规模Web活动</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>西安.NET俱乐部聚会活动意见征询</title><link>http://www.cnblogs.com/ghd258/archive/2008/04/07/1139532.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Mon, 07 Apr 2008 01:01:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/04/07/1139532.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1139532.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/04/07/1139532.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1139532.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1139532.html</trackback:ping><description><![CDATA[<span style="font-size: 10.5pt; color: black; font-family: 宋体"><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2008年是激动人心的一年，微软.NET俱乐部也活跃起来,讨论微软技术发展的最新趋势,产品与解决方案的商业价值,新技术对未来行业的影响,使您以饱满的激情2008！那么此时我们该怎么很快掌握这些新的技术呢？ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SOA,、Web 2.0、Silverlight、 WPF、WF、MVC、LINQ、ADO.NET Entity Framework、Microsoft Sync Framework 、Office开发、Visual Studio 2008 、IIS7、Windows Server 2008和Sql server 2008 。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但是我们西安.net俱乐部成立将近两年了，成员也增加至89人之多，目前还没有举办过一次活动。我想我们西安.NET俱乐部也该有所行动了，我联系过微软专门负责俱乐部的负责人余辉以及广州俱乐部的负责人彭斌，他们都对面我们西安俱乐部的工作非常支持，同时也提出了一些宝贵的建议，而且微软将支持我们成立微软西安.NET俱乐部。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我个人认为我们成立学习兴趣小组和成立项目团队，还有其他什么好的方式，那么目前遇到的问题是，我们活动的地点？以及需要更多的人员参与进来，更需要技术高手等分享自己的技术希望各位能提出宝贵的建议，也希望能有更多的人员参与进来，发展我们西安俱乐部。同时也欢迎其他俱乐部的人员多提宝贵建议和分享经验。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 请dudu允许放在首页宣传下，希望更多的人员参与进来！！！<br />
&nbsp;&nbsp;&nbsp; </font></span>
  <img src ="http://www.cnblogs.com/ghd258/aggbug/1139532.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47984/" target="_blank">《商业周刊》:Mozilla的志愿者开发模式被复制</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>数据库设计经验之谈（转载）</title><link>http://www.cnblogs.com/ghd258/archive/2008/04/05/1137958.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Sat, 05 Apr 2008 00:27:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/04/05/1137958.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1137958.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/04/05/1137958.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1137958.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1137958.html</trackback:ping><description><![CDATA[<div id="quickDescription">1.&nbsp;原始单据与实体之间的关系&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;可以是一对一、一对多、多对多的关系。在一般情况下，它们是一对一的关系：即一张原始单据对应且只对应一个实体。在特殊情况下，它们可能是一对多或多对一的关系，即一张原始单证对应多个实体，或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后，对我们设计录入界面大有好处。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;〖例1〗：一份员工履历资料，在人力资源信息系统中，就对应三个基本表：员工基本情况表、社会关系表、工作简历表。这就是&#8220;一张原始单证对应多个实体&#8221;的典型例子。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;主键与外键&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一般而言，一个实体不能既无主键又无外键。在E?R&nbsp;图中,&nbsp;处于叶子部位的实体,&nbsp;可以定义主键，也可以不定义主键(因为它无子孙),&nbsp;但必须要有外键(因为它有父亲)。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;主键与外键的设计，在全局数据库的设计中，占有重要地位。当全局数据库的设计完成以后，有个美国数据库设计专家说：&#8220;键，到处都是键，除了键之外，什么也没有&#8221;，这就是他的数据库设计经验之谈，也反映了他对信息系统核心(数据模型)的高度抽象思想。因为：主键是实体的高度抽象，主键与外键的配对，表示实体之间的连接。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;基本表的性质&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基本表与中间表、临时表不同，因为它具有如下四个特性：&nbsp; <br />
　　&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;原子性。基本表中的字段是不可再分解的。&nbsp; <br />
　　&nbsp;&nbsp;&nbsp;&nbsp;(2)&nbsp;原始性。基本表中的记录是原始数据（基础数据）的记录。&nbsp; <br />
　　&nbsp;&nbsp;&nbsp;&nbsp;(3)&nbsp;演绎性。由基本表与代码表中的数据，可以派生出所有的输出数据。&nbsp; <br />
　　&nbsp;&nbsp;&nbsp;&nbsp;(4)&nbsp;稳定性。基本表的结构是相对稳定的，表中的记录是要长期保存的。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;理解基本表的性质后，在设计数据库时，就能将基本表与中间表、临时表区分开来。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;范式标准&nbsp; <br />
　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基本表及其字段之间的关系,&nbsp;应尽量满足第三范式。但是，满足第三范式的数据库设计，往往不是最好的设计。为了提高数据库的运行效率，常常需要降低范式标准：适当增加冗余，达到以空间换时间的目的。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;〖例2〗：有一张存放商品的基本表，如表1所示。&#8220;金额&#8221;这个字段的存在，表明该表的设计不满足第三范式，因为&#8220;金额&#8221;可以由&#8220;单价&#8221;乘以&#8220;数量&#8221;得到，说明&#8220;金额&#8221;是冗余字段。但是，增加&#8220;金额&#8221;这个冗余字段，可以提高查询统计的速度，这就是以空间换时间的作法。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在Rose&nbsp;2002中，规定列有两种类型：数据列和计算列。&#8220;金额&#8221;这样的列被称为&#8220;计算列&#8221;，而&#8220;单价&#8221;和&#8220;数量&#8221;这样的列被称为&#8220;数据列&#8221;。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表1&nbsp;商品表的表结构&nbsp; <br />
　　&nbsp;&nbsp;商品名称&nbsp;商品型号&nbsp;单价&nbsp;数量&nbsp;金额&nbsp; <br />
　　&nbsp;&nbsp;电视机&nbsp;29?&nbsp;2,500&nbsp;40&nbsp;100,000&nbsp; <br />
　　&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.&nbsp;通俗地理解三个范式&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通俗地理解三个范式，对于数据库设计大有好处。在数据库设计中，为了更好地应用三个范式，就必须通俗地理解三个范式(通俗地理解是够用的理解，并不是最科学最准确的理解)：&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一范式：1NF是对属性的原子性约束，要求属性具有原子性，不可再分解；&nbsp; <br />
　　&nbsp;&nbsp;第二范式：2NF是对记录的惟一性约束，要求记录有惟一标识，即实体的惟一性；&nbsp; <br />
　　&nbsp;&nbsp;第三范式：3NF是对字段冗余性的约束，即任何字段不能由其他字段派生出来，它要求字段没有冗余.&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;没有冗余的数据库设计可以做到。但是，没有冗余的数据库未必是最好的数据库，有时为了提高运行效率，就必须降低范式标准，适当保留冗余数据。具体做法是：在概念数据模型设计时遵守第三范式，降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段，允许冗余。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.&nbsp;要善于识别与正确处理多对多的关系&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;若两个实体之间存在多对多的关系，则应消除这种关系。消除的办法是，在两者之间增加第三个实体。这样，原来一个多对多的关系，现在变为两个一对多的关系。要将原来两个实体的属性合理地分配到三个实体中去。这里的第三个实体，实质上是一个较复杂的关系，它对应一张基本表。一般来讲，数据库设计工具不能识别多对多的关系，但能处理多对多的关系。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;〖例3〗：在&#8220;图书馆信息系统&#8221;中，&#8220;图书&#8221;是一个实体，&#8220;读者&#8221;也是一个实体。这两个实体之间的关系，是一个典型的多对多关系：一本图书在不同时间可以被多个读者借阅，一个读者又可以借多本图书。为此，要在二者之间增加第三个实体，该实体取名为&#8220;借还书&#8221;，它的属性为：借还时间、借还标志(0表示借书，1表示还书)，另外，它还应该有两个外键(&#8220;图书&#8221;的主键，&#8220;读者&#8221;的主键)，使它能与&#8220;图书&#8221;和&#8220;读者&#8221;连接。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.&nbsp;主键PK的取值方法&nbsp; <br />
　　&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PK是供程序员使用的表间连接工具，可以是一无物理意义的数字串,&nbsp;由程序自动加1来实现。也可以是有物理意义的字段名或字段名的组合。不过前者比后者好。当PK是字段名的组合时，建议字段的个数不要太多，多了不但索引占用空间大，而且速度也慢。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.&nbsp;正确认识数据冗余&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;主键与外键在多表中的重复出现,&nbsp;不属于数据冗余，这个概念必须清楚，事实上有许多人还不清楚。非键字段的重复出现,&nbsp;才是数据冗余！而且是一种低级冗余，即重复性的冗余。高级冗余不是字段的重复出现，而是字段的派生出现。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;〖例4〗：商品中的&#8220;单价、数量、金额&#8221;三个字段，&#8220;金额&#8221;就是由&#8220;单价&#8221;乘以&#8220;数量&#8221;派生出来的，它就是冗余，而且是一种高级冗余。冗余的目的是为了提高处理速度。只有低级冗余才会增加数据的不一致性，因为同一数据，可能从不同时间、地点、角色上多次录入。因此，我们提倡高级冗余(派生性冗余)，反对低级冗余(重复性冗余)。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9.&nbsp;E--R图没有标准答案&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;信息系统的E--R图没有标准答案，因为它的设计与画法不是惟一的，只要它覆盖了系统需求的业务范围和功能内容，就是可行的。反之要修改E--R图。尽管它没有惟一的标准答案，并不意味着可以随意设计。好的E?R图的标准是：结构清晰、关联简洁、实体个数适中、属性分配合理、没有低级冗余。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10.&nbsp;视图技术在数据库设计中很有用&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;与基本表、代码表、中间表不同，视图是一种虚表，它依赖数据源的实表而存在。视图是供程序员使用数据库的一个窗口，是基表数据综合的一种形式,&nbsp;是数据处理的一种方法，是用户数据保密的一种手段。为了进行复杂处理、提高运算速度和节省存储空间,&nbsp;视图的定义深度一般不得超过三层。&nbsp;若三层视图仍不够用,&nbsp;则应在视图上定义临时表,&nbsp;在临时表上再定义视图。这样反复交迭定义,&nbsp;视图的深度就不受限制了。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对于某些与国家政治、经济、技术、军事和安全利益有关的信息系统，视图的作用更加重要。这些系统的基本表完成物理设计之后，立即在基本表上建立第一层视图，这层视图的个数和结构，与基本表的个数和结构是完全相同。并且规定，所有的程序员，一律只准在视图上操作。只有数据库管理员，带着多个人员共同掌握的&#8220;安全钥匙&#8221;，才能直接在基本表上操作。请读者想想：这是为什么？&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11.&nbsp;中间表、报表和临时表&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中间表是存放统计数据的表，它是为数据仓库、输出报表或查询结果而设计的，有时它没有主键与外键(数据仓库除外)。临时表是程序员个人设计的，存放临时记录，为个人所用。基表和中间表由DBA维护，临时表由程序员自己用程序自动维护。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;12.&nbsp;完整性约束表现在三个方面&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;域的完整性：用Check来实现约束，在数据库设计工具中，对字段的取值范围进行定义时，有一个Check按钮，通过它定义字段的值城。参照完整性：用PK、FK、表级触发器来实现。用户定义完整性：它是一些业务规则，用存储过程和触发器来实现。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13.&nbsp;防止数据库设计打补丁的方法是&#8220;三少原则&#8221;&nbsp; <br />
　　&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;一个数据库中表的个数越少越好。只有表的个数少了，才能说明系统的E--R图少而精，去掉了重复的多余的实体，形成了对客观世界的高度抽象，进行了系统的数据集成，防止了打补丁式的设计；&nbsp; <br />
　　&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)&nbsp;一个表中组合主键的字段个数越少越好。因为主键的作用，一是建主键索引，二是做为子表的外键，所以组合主键的字段个数少了，不仅节省了运行时间，而且节省了索引存储空间；&nbsp; <br />
　　&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)&nbsp;一个表中的字段个数越少越好。只有字段的个数少了，才能说明在系统中不存在数据重复，且很少有数据冗余，更重要的是督促读者学会&#8220;列变行&#8221;，这样就防止了将子表中的字段拉入到主表中去，在主表中留下许多空余的字段。所谓&#8220;列变行&#8221;，就是将主表中的一部分内容拉出去，另外单独建一个子表。这个方法很简单，有的人就是不习惯、不采纳、不执行。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据库设计的实用原则是：在数据冗余和处理速度之间找到合适的平衡点。&#8220;三少&#8221;是一个整体概念，综合观点，不能孤立某一个原则。该原则是相对的，不是绝对的。&#8220;三多&#8221;原则肯定是错误的。试想：若覆盖系统同样的功能，一百个实体(共一千个属性)&nbsp;的E--R图，肯定比二百个实体(共二千个属性)&nbsp;的E--R图，要好得多。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提倡&#8220;三少&#8221;原则，是叫读者学会利用数据库设计技术进行系统的数据集成。数据集成的步骤是将文件系统集成为应用数据库，将应用数据库集成为主题数据库，将主题数据库集成为全局综合数据库。集成的程度越高，数据共享性就越强，信息孤岛现象就越少，整个企业信息系统的全局E?R图中实体的个数、主键的个数、属性的个数就会越少。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;提倡&#8220;三少&#8221;原则的目的，是防止读者利用打补丁技术，不断地对数据库进行增删改，使企业数据库变成了随意设计数据库表的&#8220;垃圾堆&#8221;，或数据库表的&#8220;大杂院&#8221;，最后造成数据库中的基本表、代码表、中间表、临时表杂乱无章，不计其数，导致企事业单位的信息系统无法维护而瘫痪。&nbsp; <br />
　　&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#8220;三多&#8221;原则任何人都可以做到，该原则是&#8220;打补丁方法&#8221;设计数据库的歪理学说。&#8220;三少&#8221;原则是少而精的原则，它要求有较高的数据库设计技巧与艺术，不是任何人都能做到的，因为该原则是杜绝用&#8220;打补丁方法&#8221;设计数据库的理论依据。&nbsp; <br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;14.&nbsp;提高数据库运行效率的办法&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在给定的系统硬件和系统软件条件下，提高数据库系统的运行效率的办法是：&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1)&nbsp;在数据库物理设计时，降低范式，增加冗余,&nbsp;少用触发器,&nbsp;多用存储过程。&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(2)&nbsp;当计算非常复杂、而且记录条数非常巨大时(例如一千万条)，复杂计算要先在数据库外面，以文件系统方式用C++语言计算处理完成之后，最后才入库追加到表中去。这是电信计费系统设计的经验。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(3)&nbsp;发现某个表的记录太多，例如超过一千万条，则要对该表进行水平分割。水平分割的做法是，以该表主键PK的某个值为界线，将该表的记录水平分割为两个表。若发现某个表的字段太多，例如超过八十个，则垂直分割该表，将原来的一个表分解为两个表。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(4)&nbsp;对数据库管理系统DBMS进行系统优化，即优化各种系统参数，如缓冲区个数。&nbsp; <br />
　　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(5)&nbsp;在使用面向数据的SQL语言进行程序设计时，尽量采取优化算法。&nbsp; <br />
　&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总之，要提高数据库的运行效率，必须从数据库系统级优化、数据库设计级优化、程序实现级优化，这三个层次上同时下功夫。</div>
<img src ="http://www.cnblogs.com/ghd258/aggbug/1137958.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47977/" target="_blank">Mono 的Virtual PC 虚拟机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>“保证软件测试质量的4个根基”主题培训峰会</title><link>http://www.cnblogs.com/ghd258/archive/2008/03/19/1113633.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Wed, 19 Mar 2008 10:40:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2008/03/19/1113633.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/1113633.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2008/03/19/1113633.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/1113633.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/1113633.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 告诉大家一个好消息，<span style="font-size: 12pt; line-height: 150%; font-family: 宋体">由麦思博（</span><span style="font-size: 12pt; line-height: 150%">msup</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">）公司联合微软公司举办的&#8220;保证软件测试质量的</span><span style="font-size: 12pt; line-height: 150%">4</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">个根基&#8221;主题培训峰会</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">，将于</span><span style="font-size: 12pt; line-height: 150%">2008</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">年</span><span style="font-size: 12pt; line-height: 150%">3</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">月</span><span style="font-size: 12pt; line-height: 150%">29</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">日在西安隆重举行。</span>
<p style="text-indent: 24pt; line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">本活动面向软件相关企业，以培训、交流、经验分享为核心，帮助从业经验在</span><span style="font-size: 12pt; line-height: 150%">3</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">～</span><span style="font-size: 12pt; line-height: 150%">5</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">年的软件技术人员（特别是软件测试技术人员）在技术思想、方法技巧等方面实现突破性提高，进而提高软件企业的技术和产品竞争力。本活动由微软资深专家顾问，曾就职于微软亚洲工程院的陆宏杰老师主讲，以实战的技术经验，深入讲解软件测试的</span><span style="font-size: 12pt; line-height: 150%">4</span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">个最关键的方面，为您提供卓有价值的解决方案。</span></p>
<p style="text-indent: 24pt; line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">本次培训峰会内容围绕软件测试的主题，将会为企业及技术人员解决诸如以下的问题：</span></p>
<p style="margin-left: 36pt; text-indent: -36pt; line-height: 150%; tab-stops: list 36.0pt"><span style="font-size: 12pt; line-height: 150%">（1）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">测试人员不足，特别是有经验的测试工程师不足；</span></p>
<p style="margin-left: 36pt; text-indent: -36pt; line-height: 150%; tab-stops: list 36.0pt"><span style="font-size: 12pt; line-height: 150%">（2）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">没有有效的技术手段保证测试进度，甚至测试被认为是额外增加了项目进度、时间；</span></p>
<p style="margin-left: 36pt; text-indent: -36pt; line-height: 150%; tab-stops: list 36.0pt"><span style="font-size: 12pt; line-height: 150%">（3）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">测试量特别大，测试报告不能及时反映最新版本中存在的问题；</span></p>
<p style="margin-left: 36pt; text-indent: -36pt; line-height: 150%; tab-stops: list 36.0pt"><span style="font-size: 12pt; line-height: 150%">（4）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">测试中重复的劳动太多，长期下来，测试工程师缺乏成就感和创造力；</span></p>
<p style="margin-left: 36pt; text-indent: -36pt; line-height: 150%; tab-stops: list 36.0pt"><span style="font-size: 12pt; line-height: 150%">（5）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">软件发布之前是否经历了足够测试了，能否发布到底谁说了算？</span></p>
<p style="margin-left: 36pt; text-indent: -36pt; line-height: 150%; tab-stops: list 36.0pt"><span style="font-size: 12pt; line-height: 150%">（6）<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">建立质量保证体系；</span></p>
<p style="line-height: 150%"><span style="font-size: 12pt; line-height: 150%; font-family: 宋体">&#8230;&#8230;</span></p>
<p><strong><span style="font-size: 12pt; font-family: 宋体">讲师介绍</span></strong></p>
<p><strong><span style="font-family: 宋体">陆宏杰</span></strong></p>
<p><span style="font-family: 宋体">微软资深专家顾问，曾于微软亚洲工程院工作</span></p>
<p style="text-indent: 21pt"><span style="font-family: 宋体">曾任职于微软亚洲工程院，十余年的软件开发、软件测试和团队管理经验，曾主管过多个大型复杂项目的开发和测试工作，尤其在自动化测试技术和测试管理方面积累了大量的实战项目经验。对于各种测试方法的重点、难点和实施技巧有深入的研究，其主持开发和测试的项目多次获得微软全球最高技术奖项和工程奖项，并曾荣获</span>msup2007 Top One<span style="font-family: 宋体">金牌分享大师和</span>msup2007 <span style="font-family: 宋体">软件企业内训最佳好评讲师。</span></p>
<p><strong><span style="font-size: 12pt; font-family: 宋体">课程简介</span></strong></p>
<table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1">
    <tbody>
        <tr>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: black 1.5pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p><strong><span style="color: navy; font-family: 宋体">第一课</span></strong><strong><span style="color: navy; font-family: 宋体">对软件测试的理解</span></strong></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: black 1.5pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p><strong><span style="color: navy; font-family: 宋体">第二课</span></strong><strong><span style="color: navy; font-family: 宋体">测试计划</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">软件测试的最高境界是什么</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">测试和有效代码率的关系</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">做技术最先进的软件，还是做最好卖的软件</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">软件测试的存在阶段</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">缺陷分类对管理上的支持</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">对软件风险的考虑</span>&nbsp;</p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">怎样理解经典模型</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">为什么要写测试文档，不写行不行</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">测试文档的核心价值</span>&nbsp;</p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">编写高质量测试文档的前提条件</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">测试文档应该基于需求还是设计</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">如何提高整个团队编写测试文档的水准</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">管理者从测试文档应该看出哪些内容</span></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p><strong><span style="color: navy; font-family: 宋体">第三课</span></strong><strong><span style="color: navy; font-family: 宋体">测试用例和测试执行的管理</span></strong></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p><strong><span style="color: navy; font-family: 宋体">第四课</span></strong><strong><span style="color: navy; font-family: 宋体">自动化测试</span></strong></p>
            </td>
        </tr>
        <tr>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">测试用例的评审</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">相同的步骤不同的验证</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">界面上能看到的只是软件中的一小部分</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">为什么要用数据库管理测试用例</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>Case<span style="font-family: 宋体">和</span>Bug<span style="font-family: 宋体">的关联</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">建立测试用例管理平台注意事项</span></p>
            </td>
            <td style="border-right: medium none; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 213.05pt; padding-top: 0cm; border-bottom: black 1.5pt solid" valign="top" width="284">
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">什么是自动化测试</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">自动化测试是用来找</span>Bug<span style="font-family: 宋体">的吗</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">自动化测试的部署策略</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">自动化测试工具的选择</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">测试开发和测试驱动开发</span></p>
            <p style="margin-left: 21pt; text-indent: -21pt; tab-stops: list 21.0pt"><span style="font-family: Wingdings"><img height="11" alt="*" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.gif" width="11" /><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-family: 宋体">质量保证体系</span></p>
            </td>
        </tr>
    </tbody>
</table>
<p><a title="" href="http://www.cnblogs.com/ghd258/admin/EditPosts.aspx#_ftn2" name="_ftnref2"><strong><span style="font-size: 12pt"><strong><span style="font-size: 12pt; font-family: 'Times New Roman'"><span style="font-size: 12pt; font-family: 宋体"><span style="font-size: 12pt; font-family: 'Times New Roman'"></strong></span></span></span></strong></span></a>&nbsp;</p>
<p style="text-align: right" align="right"><span style="font-size: 12pt; font-family: 宋体">麦思博（北京）软件技术有限公司</span></p>
<p style="text-align: right" align="right"><span style="font-size: 12pt">2008</span><span style="font-size: 12pt; font-family: 宋体">年</span><span style="font-size: 12pt">3</span><span style="font-size: 12pt; font-family: 宋体">月</span><span style="font-size: 12pt">17</span><span style="font-size: 12pt; font-family: 宋体">日</span></p>
<p>--------------------------------------------</p>
<p><strong><span style="font-size: 9pt; font-family: 宋体">联系方式</span></strong></p>
<p><span style="font-size: 9pt; font-family: 宋体">麦思博（</span><span style="font-size: 9pt">msup</span><span style="font-size: 9pt; font-family: 宋体">）有限公司</span><span style="font-size: 9pt; font-family: 宋体">天津客服中心<br />
</span><span style="font-size: 9pt; font-family: 宋体">联系人：马红伟<br />
</span><span style="font-size: 9pt; font-family: 宋体">电</span><span style="font-size: 9pt; font-family: 宋体">话（</span><span style="font-size: 9pt">Phone</span><span style="font-size: 9pt; font-family: 宋体">）：</span><span style="font-size: 9pt">022.8371.8105-615<br />
</span><span style="font-size: 9pt; font-family: 宋体">传</span><span style="font-size: 9pt; font-family: 宋体">真（</span><span style="font-size: 9pt">Fax</span><span style="font-size: 9pt; font-family: 宋体">）：</span><span style="font-size: 9pt">022.8371.8105-605<br />
</span><span style="font-size: 9pt; font-family: 宋体">手</span><span style="font-size: 9pt; font-family: 宋体">机（</span><span style="font-size: 9pt">Mobile</span><span style="font-size: 9pt; font-family: 宋体">）：</span><span style="font-size: 9pt">13672160751<br />
</span><span style="font-size: 9pt; font-family: 宋体">热</span><span style="font-size: 9pt; font-family: 宋体">线（</span><span style="font-size: 9pt">Hotline</span><span style="font-size: 9pt; font-family: 宋体">）：</span><span style="font-size: 9pt">800-818-8020<br />
</span><span style="font-size: 9pt; font-family: 宋体">天津华苑产业园区华天道</span><span style="font-size: 9pt">6</span><span style="font-size: 9pt; font-family: 宋体">号海泰信息广场</span><span style="font-size: 9pt">H</span><span style="font-size: 9pt; font-family: 宋体">座</span><span style="font-size: 9pt">402 </span><span style="font-size: 9pt; font-family: 宋体">（</span><span style="font-size: 9pt">300384</span><span style="font-size: 9pt; font-family: 宋体">）</span><br clear="all" />
</p>
<div>
<div id="ftn1">
<p><span style="font-family: 宋体">本活动同时接受企业和个人报名。</span></p>
</div>
<div id="ftn2">
<p><span style="color: red">西安.net<span style="font-family: 宋体">俱乐部成员报名，可享受团体优惠</span></span></p>
</div>
</div>
<img src ="http://www.cnblogs.com/ghd258/aggbug/1113633.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>数据回发时，维护ASP.NET Tree控件位置</title><link>http://www.cnblogs.com/ghd258/archive/2007/09/10/888360.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Mon, 10 Sep 2007 05:06:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/09/10/888360.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/888360.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/09/10/888360.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/888360.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/888360.html</trackback:ping><description><![CDATA[ASP.NET2.0提供了一个功能强大的TreeView控件，但是它看起来有一个缺陷：它好像不能够跟踪用户最后选择的一个节点。如果你滚动到第50个节点然后展开该节点，那么当单击链接页面进行回发后，你必须重新利用滚动条下拉到你想要的节点位置。<br />
<br />
　　在.NET较早的版本里，您可能考虑使用SmartNavigation这个特性.SmartNavigation是Web页面指令的一个属性，它的取值为布尔值，一个设置为true的页面指令看起来类似如下：<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e7e9e9" border="1">
    <tbody>
        <tr>
            <td>＜%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" SmartNavigation="true" %＞</td>
        </tr>
    </tbody>
</table>
<br />
　　不过，正如好多人已经注意到的，SmartNavigation本身就有洗衣阿问题，事实上微软也被这个问题所困扰以至于在ASP.NET2.0里添加了MaintainScrollbackPositionOnPostback属性而取代SmartNavigation 。遗憾的是，我在使用它们时，感觉它们都有一些问题，我稍后将进行解释。<br />
<br />
　　本文我将介绍SmartNavigation和MaintainScrollbackPositionOnPostback 在维护页面回发位置方面的缺点，并提供如何利用Javascript来解决这个问题，这个小技巧即使对复杂的Web页面也同样有效.<br />
<br />
　　再见了SmartNavigationeb，欢迎MaintainScrollbackPositionOnPostback<br />
<br />
　　SmartNavigation主要作用是减少页面导航时的闪动，它主要利用适当的IFrames来进行这个工作并仅仅显示改变的部分。SmartNavigation 同样被设计为能够维护页面位置，元素焦点，回发浏览器访问历史记录的作用。遗憾的是，即使微软知道SmartNavigation已经去掉，但是检查MSDN文档，您仍然能够看到SmartNavigation其实仅仅被定义为"过时"的 。利用GOOGLE的搜索您可以搜到大家对SmartNavigation的讨论.<br />
<br />
　　下一步<br />
<br />
　　ASP.NET2.0引进了MaintainScrollbackPositionOnPostback，和SmartNavigation类似，您可以在Page属性里设置它的值为true或者为false。<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e7e9e9" border="1">
    <tbody>
        <tr>
            <td>＜%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" MaintainScrollPositionOnPostback="true" %＞</td>
        </tr>
    </tbody>
</table>
<br />
　　非常简明，这个属性/属性值对是用来维护页面位置的。遗憾的是，它只是维护页面的位置，因为如果你在用户控件里使用了TreeView控件，然后在页面里使用该用户控件，那么页面在在回发后您将返回到用户控件的位置而不是TreeView节点位置。<br />
<br />
　　简单的说，MaintainScrollbackPositionOnPostback只是用来维护页面的回发位置。如果你的页面固定－－也就是一个应用程序那样不需要进行利用滚动条进行上下滚动，那么这个属性对你可能无用。如果你的页面很常需要滚动，那么你就需要利用该属性. <br />
<br />
　　在TreeView里维护控件的位置<br />
<br />
　　最近，我在开发一个Web应用程序Windowsy，也就是每一个页面都会全屏显示而不是滚动。页面里使用类TreeView来进行导航想列表一样进行显示，但是页面本身不需要上下滚动。但是问题是这里的数据列可能需要扩展使得页面出现滚动.我准备使用如下的方式解决这个问题.<br />
首先，利用TreeView控件的SelectedNode属性，可以知道哪个节点被选取，这个被选取的节点需要保存起来，它最终会程序为HTML元素。如果我知道了被选择HTML控件的ID，那么我就可以滚动到该控件并设置该控件为当前焦点。确实，如果您看以下使用TreeView控件的页面HTML代码，你将发现生成的一个隐藏＜input＞元素，以及为textbox类型，它的ID可能类似TreeViewx_SelectedNode<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e7e9e9" border="1">
    <tbody>
        <tr>
            <td>＜input type="hidden" name="TreeView1_SelectedNode" id="TreeView1_SelectedNode" value="TreeView1t54" /＞</td>
        </tr>
    </tbody>
</table>
<p><br />
　　有了这些知识，你就知道该怎么做了，基本方法是隐藏的Input是一个textbox，我们要做的就是知道将来呈献的内容。一个TreeView最终呈现为HTML表格,节点的值被用来作为单元格的值,＜TD＞元素呈现节点名称,所以通过查找单元格ID并滚动到那里.<br />
</p>
为了具体说明做法，我使用TreeView编写了一些代码，在Page_Load时间里加载一段脚本来找到需要的单元格（参考下表），在＜body＞的onload时间里调用该函数.<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e7e9e9" border="1">
    <tbody>
        <tr>
            <td>Imports System.Collections.Generic<br />
            <br />
            Partial Class _Default<br />
            Inherits System.Web.UI.Page<br />
            <br />
            Protected Sub Page_Load(ByVal sender As Object, _<br />
            ByVal e As System.EventArgs) Handles Me.Load<br />
            <br />
            InjectLoadEvent()<br />
            <br />
            If (IsPostBack) Then Return<br />
            <br />
            TreeView1.Nodes.Clear()<br />
            <br />
            Dim chicken As New TreeNode("Chicken")<br />
            　TreeView1.Nodes.Add(chicken)<br />
            　Dim beef As New TreeNode("Beef")<br />
            　TreeView1.Nodes.Add(beef)<br />
            　Dim pork As New TreeNode("Pork")<br />
            　TreeView1.Nodes.Add(pork)<br />
            　Dim fish As New TreeNode("Fish")<br />
            　TreeView1.Nodes.Add(fish)<br />
            <br />
            　chicken.ChildNodes.Add(New TreeNode("Crepes Florentine with Buffalo Chicken"))<br />
            　fish.ChildNodes.Add(New TreeNode("Linguine with White Clam Sauce"))<br />
            　pork.ChildNodes.Add(New TreeNode("Pork Loin with Peanut and Madarin Orange Sauce"))<br />
            　beef.ChildNodes.Add(New TreeNode("Standing Rib Roast with Fennel and Blue Cheese Potatoes"))<br />
            <br />
            <br />
            　' We need a bunch of stuff here so we will add some stubs<br />
            　Dim I As Integer<br />
            　For I = 1 To 50<br />
            　　chicken.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))<br />
            　　fish.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))<br />
            　　pork.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))<br />
            　　beef.ChildNodes.Add(New TreeNode("Placeholder " + I.ToString()))<br />
            　Next<br />
            <br />
            　TreeView1.CollapseAll()<br />
            End Sub<br />
            <br />
            Public Sub InjectLoadEvent()<br />
            　Dim script As String = _<br />
            　　　"function LoadEvent()" + _<br />
            　　　"{{" + _<br />
            　　　" try" + _<br />
            　　　" {{" + _<br />
            　　　" var elem = document.getElementById('{0}_SelectedNode');" + _<br />
            　　　" if(elem != null )" + _<br />
            　　　" {{" + _<br />
            　　　" var node = document.getElementById(elem.value);" + _<br />
            　　　" if(node != null)" + _<br />
            　　　" {{" + _<br />
            　　　" node.scrollIntoView(true);" + _<br />
            　　　" {1}.scrollLeft = 0;" + _<br />
            　　　" }}" + _<br />
            　　" }}" + _<br />
            　" }}" + _<br />
            　" catch(oException)" + _<br />
            　" {{}}" + _<br />
            　"}}"<br />
            <br />
            Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "LoadEvent", _<br />
            String.Format(script, TreeView1.ClientID, Panel1.ClientID), True)<br />
            　End Sub<br />
            End Class</td>
        </tr>
    </tbody>
</table>
<br />
<br />
　　下面的代码显示了页面的布局：<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e7e9e9" border="1">
    <tbody>
        <tr>
            <td>＜%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %＞<br />
            ＜!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"＞<br />
            <br />
            ＜html xmlns="http://www.w3.org/1999/xhtml" ＞<br />
            ＜head runat="server"＞<br />
            　＜title＞Focus Tree Node on Postback＜/title＞<br />
            ＜/head＞<br />
            ＜body onload="LoadEvent()"＞<br />
            　＜form id="form1" runat="server"＞<br />
            　　＜div＞<br />
            　　　＜asp:Panel ID="Panel1" runat="server" Height="200px" Width="200px" ScrollBars="Both"＞<br />
            　　　　＜asp:TreeView ID="TreeView1" runat="server"＞<br />
            　　　　　＜SelectedNodeStyle BackColor="#8080FF" /＞<br />
            　　　　＜/asp:TreeView＞<br />
            　　　＜/asp:Panel＞<br />
            　　＜/div＞<br />
            　＜/form＞<br />
            ＜/body＞<br />
            ＜/html＞</td>
        </tr>
    </tbody>
</table>
下图显示了本例子运行的结果<br />
<br />
<table width="90%" align="center">
    <tbody>
        <tr>
            <td>
            <div align="center"><img style="border-left-color: #000000; border-bottom-color: #000000; border-top-color: #000000; border-right-color: #000000" src="http://dotnet.chinaitlab.com/UploadFiles_6597/200612/20061209110812758.jpg" border="1"  alt="" /></div>
            </td>
        </tr>
    </tbody>
</table>
<br />
　　最后，下面的代码显示了javascript的注入方式：<br />
<br />
<table bordercolor="#cccccc" width="90%" align="center" bgcolor="#e7e9e9" border="1">
    <tbody>
        <tr>
            <td>＜script＞<br />
            function LoadEvent()<br />
            { <br />
            　try <br />
            　{ <br />
            　　var elem = document.getElementById('TreeView1_SelectedNode'); <br />
            　　if(elem != null ) <br />
            　　{ <br />
            　　　var node = document.getElementById(elem.value); <br />
            　　　if(node != null) <br />
            　　　{ <br />
            　　　　node.scrollIntoView(true); <br />
            　　　　Panel1.scrollLeft = 0; <br />
            　　　} <br />
            　　} <br />
            　} <br />
            　catch(oException) <br />
            　{}<br />
            }// --＞<br />
            ＜/script＞</td>
        </tr>
    </tbody>
</table>
<br />
　　用Javascript定义的LoadEvent函数将查找隐藏字段,我们利用TreeView控件的ClientID 查找所有元素,不过,在嵌套多个TreeView控件后,名称将变得非常长.找到单元格的值后,我使用scrollIntoView方法.scrollLeft属性将让滚动条滚动当前位置. 
<img src ="http://www.cnblogs.com/ghd258/aggbug/888360.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>国内项目开发过程分析总结</title><link>http://www.cnblogs.com/ghd258/archive/2007/08/30/876251.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Thu, 30 Aug 2007 11:37:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/08/30/876251.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/876251.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/08/30/876251.html#Feedback</comments><slash:comments>23</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/876251.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/876251.html</trackback:ping><description><![CDATA[<p>我最近想写一篇关于国内项目开发过程分析的总结，目前列出了这些项目的一些阶段，希望得到大家的支持，多提意见。我会近期完善本文的。</p>
<p>希望dudu让我放首页收集下各位朋友的意见 谢谢！！！</p>
<br />
<br />
一 、方案阶段<br />
&nbsp;&nbsp;&nbsp;&nbsp; 在方案阶段首先从两个阶段分析项目的风险：1、公司是否对本项目所处的行业很熟悉或者对本项目的业务很熟悉以及是否做过类似的项目；2、本项目客户的业务是否规范，也就是客户的业务流程是否规范话。如果有其中的任意一条，那么风险之大可想而知，更不用说两天皆有了。那么我们怎么克服防止这些风险呢？如果是第一条公司在组建团队的时候就该考虑招聘熟悉相关业务的人员了；如果是第二条，我认为这时候公司的管理人员和客户接触时就该给客户打预防针了，再就是在合同中下点功夫了。<br />
二、合同阶段<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在合同阶段主要注意的是以下几点：1、项目的功能模块范围；2、客户需求的变动；3、 对项目中某些功能模块做特殊的说明；4、开发进度和成本。<br />
三、调研阶段<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在调研阶段主要注意的是以下几点：1、客户是否已运行系统以及运行环境等；2、客户的操作习惯；3、业务流和数据流；4、客户的主要干系人。<br />
四、团队建设阶段<br />
五、分析设计阶段<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;业务需求的两下两上：
<div style="line-height: 150%"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>对项目的业务需求的分析是一个项目的入口和最重要的事情，但是很多人员并不知道怎么考虑项目的业务需求。反而受项目范围管理的束缚走进了教条主义。自己认为，用户给多少钱就干多少事这句话本身没有问题，但是如果是基于这句话来管理范围、分析业务需求就容易走进了&#8220;只见树木不见森林&#8221;的陷阱。导致最后的返工、重做，用户的不满意、系统的不灵活，甚至修改一个小功能而牵动全身，或是根本就不能动设计的局面。</div>
<div style="line-height: 150%"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>一上：是指第一次自顶向下，先从全局了解业务，从更高的层面来分析模型。目前我们的大部分项目是企业或者政府的业务管理系统。那我们首先要了解企业的管理模式。这时候思维要开阔，不能只是局限在项目的范围之内。通过分析管理模式，找出问题。第一&#8220;上&#8221;，概括为：把握全局，寻找问题；</div>
<div style="line-height: 150%"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>第二步就是由上而下，找出了问题，从大的方面了解透彻后，要根据这些问题，对应到具体的需求的调研和设计实现。看一下如何满足和解决问题？由于有了前面的一下，我们在调研和分析的时候就不至于遗漏，考虑就会比较周全。这个时候你仍然不要关心范围。二&#8220;下&#8221;概括为：寻找答案，了解细节；</div>
<div style="line-height: 150%"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>第三&#8220;上&#8221;是真的二&#8220;下&#8221;掌握的具体的需求对应到大的模式看是否能够对应，理解和分析是否是合适的？三&#8220;上&#8221;概括为：对应答案，连通上下；这个时候可以考虑范围，但是还不能确定范围；</div>
<div style="line-height: 150%"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>四&#8220;下&#8221;：这一步是最关键的，也是落实的一步。经过了前面的步骤后，再从更高的角度来审视细节，从全局的眼光来透射项目的业务范围，从而比较准确地把握项目范围，形成正确的业务理解和需求定义。从而能够建立起完整的业务概念模型和比较稳定的需求设计模型。</div>
<div style="margin-left: 36pt; text-indent: -18pt; line-height: 150%"><span>&#8226;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>需求获取过程（两上两下）：</div>
<div style="margin-left: 72pt; text-indent: -18pt; line-height: 150%"><span>&#8211;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span>一上：找方向</div>
<div style="margin-left: 72pt; text-indent: -18pt; line-height: 150%"><span>&#8211;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span>二下：抠细节</div>
<div style="margin-left: 72pt; text-indent: -18pt; line-height: 150%"><span>&#8211;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span>三上：找差距（操作层面与管理决策层面的理解差距）</div>
<div style="margin-left: 72pt; text-indent: -18pt; line-height: 150%"><span>&#8211;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span>四下：落实到实现</div>
<div style="margin-left: 36pt; text-indent: -18pt; line-height: 150%"><span>&#8226;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span>需求评审：客户和用户对需求理解和确认是非常重要，评审确认是业务人员与技术人员之间的理解桥梁</div>
<div style="line-height: 150%">第一上、下：分析&#8220;明&#8221;的需求，把握项目范围、把握方向，避免走偏；</div>
<div style="line-height: 150%">第二上、下：分析隐含的、潜在的需求，防止遗漏需求，导致后期发生无谓的变更。</div>
<div style="line-height: 150%">上是指：上升到管理层的高度；</div>
<div style="line-height: 150%">下是指：落实到实际的业务中发现问题、解决问题。</div>
<div style="line-height: 150%">&nbsp;</div>
<div style="line-height: 150%"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>经过这四步，在头脑中建立起完整的概念模型，如果是实现的管理系统，应该有清晰的管理模型，并且能够清楚模型中的共性的需求和个性的需求分别是什么？然后对应到项目应该实现的功能需求上，就会在设计的时候有全局观，所实现的功能之间不是孤立的、不是物理的堆砌，而是有机的逻辑的结合</div>
<br />
六、开发测试阶段<br />
七、实施维护阶段 
<img src ="http://www.cnblogs.com/ghd258/aggbug/876251.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47968/" target="_blank">IE市场份额首次跌破60%</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>解析.Net框架下的XML编程技术 (转载)</title><link>http://www.cnblogs.com/ghd258/archive/2007/07/18/822126.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Wed, 18 Jul 2007 02:09:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/07/18/822126.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/822126.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/07/18/822126.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/822126.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/822126.html</trackback:ping><description><![CDATA[摘要: 一．前言：XML是微软.Net战略的一个重要组成部分，而且它可谓是XMLWeb服务的基石，所以掌握.Net框架下的XML技术自然显得非常重要了。本文将指导大家如何运用C#语言完成.Net框架下的XML文档的读写操作。首先，我会向大家介绍.Net框架中与XML相关的命名空间和其中的重要类。其次，我还会给出有关的实例以使读者更进一步的了解XML文档的读写操作的具体方法。二．XML命名空间和相关类简介：&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2007/07/18/822126.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/822126.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47965/" target="_blank">Google App Engine宕机6小时——云的安全在哪里？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>asp.net2.0导出pdf文件完美解决方案(转载)</title><link>http://www.cnblogs.com/ghd258/archive/2007/06/19/789328.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Tue, 19 Jun 2007 08:30:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/06/19/789328.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/789328.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/06/19/789328.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/789328.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/789328.html</trackback:ping><description><![CDATA[<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>
<img src ="http://www.cnblogs.com/ghd258/aggbug/789328.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>关于IE6和IE7关闭窗口时提示和不提示以及上传图片前的本地预览解决办法 </title><link>http://www.cnblogs.com/ghd258/archive/2007/06/19/788797.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Tue, 19 Jun 2007 03:56:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/06/19/788797.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/788797.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/06/19/788797.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/788797.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/788797.html</trackback:ping><description><![CDATA[1&nbsp; IE6和IE7关闭窗口时提示和不提示<br>2 上传文件立即显示效果图，在ie7中可以用滤镜<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">以下均支持IE6和IE7，不支持Firefox2.0，其他浏览器未经测试</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_77_673_Open_Image onclick="this.style.display='none'; Codehighlighter1_77_673_Open_Text.style.display='none'; Codehighlighter1_77_673_Closed_Image.style.display='inline'; Codehighlighter1_77_673_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_77_673_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_77_673_Closed_Text.style.display='none'; Codehighlighter1_77_673_Open_Image.style.display='inline'; Codehighlighter1_77_673_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/javascript"</span><span style="COLOR: #0000ff">&gt;</span><span id=Codehighlighter1_77_673_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_77_673_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;CloseWin()&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">这个会提示是否关闭浏览器</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img id=Codehighlighter1_114_179_Open_Image onclick="this.style.display='none'; Codehighlighter1_114_179_Open_Text.style.display='none'; Codehighlighter1_114_179_Closed_Image.style.display='inline'; Codehighlighter1_114_179_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_114_179_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_114_179_Closed_Text.style.display='none'; Codehighlighter1_114_179_Open_Image.style.display='inline'; Codehighlighter1_114_179_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_114_179_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_114_179_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>window.opener</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>window.open(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">_self</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>window.close();&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>如果在框架中关闭整个框架页面的话如下<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>这个是不提示关闭<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;&nbsp;aa&nbsp;&nbsp;(&nbsp;&nbsp;&nbsp;)<br><img id=Codehighlighter1_235_526_Open_Image onclick="this.style.display='none'; Codehighlighter1_235_526_Open_Text.style.display='none'; Codehighlighter1_235_526_Closed_Image.style.display='inline'; Codehighlighter1_235_526_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_235_526_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_235_526_Closed_Text.style.display='none'; Codehighlighter1_235_526_Open_Image.style.display='inline'; Codehighlighter1_235_526_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_235_526_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_235_526_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(window.confirm('您确认要退出系统吗？'))<br><img id=Codehighlighter1_304_450_Open_Image onclick="this.style.display='none'; Codehighlighter1_304_450_Open_Text.style.display='none'; Codehighlighter1_304_450_Closed_Image.style.display='inline'; Codehighlighter1_304_450_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_304_450_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_304_450_Closed_Text.style.display='none'; Codehighlighter1_304_450_Open_Image.style.display='inline'; Codehighlighter1_304_450_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_304_450_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_304_450_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top.opener</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">null</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top.open(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">""</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">,</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">_self</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top.close();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.close;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">else</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img id=Codehighlighter1_476_490_Open_Image onclick="this.style.display='none'; Codehighlighter1_476_490_Open_Text.style.display='none'; Codehighlighter1_476_490_Closed_Image.style.display='inline'; Codehighlighter1_476_490_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_476_490_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_476_490_Closed_Text.style.display='none'; Codehighlighter1_476_490_Open_Image.style.display='inline'; Codehighlighter1_476_490_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_476_490_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_476_490_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;Preview(imgFile)<br><img id=Codehighlighter1_555_671_Open_Image onclick="this.style.display='none'; Codehighlighter1_555_671_Open_Text.style.display='none'; Codehighlighter1_555_671_Closed_Image.style.display='inline'; Codehighlighter1_555_671_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_555_671_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_555_671_Closed_Text.style.display='none'; Codehighlighter1_555_671_Open_Image.style.display='inline'; Codehighlighter1_555_671_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_555_671_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_555_671_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>document.getElementById(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">pic</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).filters.item(</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">DXImageTransform.Microsoft.AlphaImageLoader</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">).src&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;imgFile.value;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">a&nbsp;</span><span style="COLOR: #ff0000">href</span><span style="COLOR: #0000ff">="javascript:CloseWin();"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;点击这里无提示关闭当前窗口</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">a</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">br&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>请选择要预览的图片：</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="file"</span><span style="COLOR: #ff0000">&nbsp;onchange</span><span style="COLOR: #0000ff">="javascript:Preview(this);"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;&lt;</span><span style="COLOR: #800000">br&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="pic"</span><span style="COLOR: #ff0000">&nbsp;style</span><span style="COLOR: #0000ff">="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);width:400px;height:200px;"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>获取图片的大小<br>var img=new Image(); <br>img.src=imgFile.value; <br>alert(img.fileSize); <br>alert(img.width); <br>alert(img.height); <br></span></div>
<img src ="http://www.cnblogs.com/ghd258/aggbug/788797.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>ASP.NET2.0打通文件图片处理任督二脉(转载)</title><link>http://www.cnblogs.com/ghd258/archive/2007/06/19/788502.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Tue, 19 Jun 2007 01:22:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/06/19/788502.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/788502.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/06/19/788502.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/788502.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/788502.html</trackback:ping><description><![CDATA[摘要: 1.最简单的单文件上传(没花头)2.多文件上传3.客户端检查上传文件类型(以上传图片为例)4.服务器端检查上传文件类型(以上传图片为例) 5.服务器端检查上传文件类型(可以检测真正文件名) 6.上传文件文件名唯一性处理(时间戳+SessionID)7.上传图片生成等比例缩略图8.上传图片加水印(文字水印，图片水印，文字+图片水印)9.1.最简单的单文件上传(没花头)效果图：说明：这是最基本的文件上&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2007/06/19/788502.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/788502.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>项目开发经验谈（二）</title><link>http://www.cnblogs.com/ghd258/archive/2007/06/04/771154.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Mon, 04 Jun 2007 12:52:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/06/04/771154.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/771154.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/06/04/771154.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/771154.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/771154.html</trackback:ping><description><![CDATA[&nbsp; <a name=_Toc162709236><span><span>1.1<span>&nbsp;&nbsp;&nbsp; </span></span></span><span><span>需求变化</span></span></a>
<p>项目的需要变化是肯定有的，而且变化一般都很频繁，我们怎么应对客户的这种需求变化呢，以不变应万变。首先在前期的需求调研要做好，尽可能的替用户考虑，达到功能质量满足最大化。需求调研前期的《目标与范围》和需求调研末期的《功能规格说明书》都要跟客户签字确认，这样既能保证我们所理解的需求就是客户所要的，也使得项目末期跟客户验收时有据可依。在项目中期是发生需求变更是很常见的，这时要做好需求变更管理流程。需求变更表，小的变更自己掌握，客户要求的变更有开发人员和设计人员共同商讨后提交项目经理，项目经理预估变更损耗工程时间，在一定阶段一起提交给客户，大的变更直接提交客户，并且要把需求变更对项目产生的影响让客户知道，把球尽可能的踢给客户，让客户在进度、功能、资源三者中取舍出一个平衡来。对需求进行分类评级，关键部分不能改动的做特别确认（如系统架构等，如果改变等于从头再来）。同时完成客户签字确认，当然如果能将这部分写成合同细节中去是最好。以下是我认为变更的步骤：</p>
<p><span><span>&#162;&nbsp;</span></span>第一步：客户提出变更内容</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>客户提交的变更必须基于书面形式</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>客户提交的变更必须有充分理由</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>如果变更被拒绝，对业务的负面影响</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>如果变更被接受，对业务的正面帮助</p>
<p><span><span>&#162;&nbsp;</span></span>第二步：为能否实现变更作评估</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>从实现方式上考虑新的变更可否实现</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>对于较复杂的情形，辅以简单的说明。欲详述，可作附件处理</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>对于简单情形，例如页面布局更改，则无须说明</p>
<p><span><span>&#162;&nbsp;</span></span>第三步：可以实现看进度</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>进度几乎是绝大部分项目关注的第一要素</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>对于活动级别的进度影响</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>对于项目整体工期的影响</p>
<p><span><span>&#162;&nbsp;</span></span>第四步：变更成本</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>人力相关的变更成本</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>是否需要额外的项目组成员</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>项目组需要增加的工时数</p>
<p>是否正常工时（工作日加班、节假日加班）</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>项目工数报价</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>非人力成本</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>软硬件费用</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>资料费用等</p>
<p><span><span>&#162;&nbsp;</span></span>第六步：质量和风险</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>变更对质量的多方面影响</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>分阶段影响（需求、设计、编码、测试、维护）</p>
<p><span><span>&#8226;<span>&nbsp;&nbsp; </span></span></span>可靠性、安全性、可维护性、可用性等</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>可能对团队士气的负面影响</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>可能引发的间接任务对工期的负面冲击</p>
<p><span><span>l<span>&nbsp;&nbsp;&nbsp; </span></span></span>开发方的成本负担可能超出力所能及的范围</p>
<p><span><span>&#162;&nbsp;</span></span>第六步：需求变化的确定</p>
<h2><span><span>1.2<span>&nbsp;&nbsp;&nbsp; </span></span></span><span>&nbsp;&nbsp;</span><a name=_Toc162709237><span>架构设计</span></a></h2>
<p>撰写详细设计是一个逐步细化、深入的过程。没有人能一次就设计出完美的东西，需要及时的沟通，包括与客户的反馈，与其他项目组成员的讨论，这样有助于降低开发时偏离需求的风险。也就是说，在开发之前题，是建立在设计者的想法有客户的确认和开发人员的理解的基础之上设计撰写人必须与系统分析员反复讨论，以透彻理解用户需求；</p>
<p>一项需求可能有多种方式实现，设计者必须与系统分析员确定该需求将采用何种方式实现，将达到何种效果，以消除将需求映射为设计的歧义；讨论过程中还可能会发现需求有不完备甚至错误的地方，在需求重新确定后设计者需修正设计。设计文档必须写清楚各个模块<span>/</span>接口<span>/</span>公共对象的定义，列明程序的各种执行条件与期望的运行效果，还要正确处理各种可能的异常。此外设计文档应该遵循一定的写作模式与版面风格，使用统一的术语或惯用语，使得小组成员很容易理解。以上这些活动综合起来将是一个很细致、很耗时的工作过程。就个人所知，一些公司的详细设计通常是由程序主管或少数核心的程序员撰写的，他们通常也是系统架构的主要作者或维护者。因为他们在开发团队中技术最为精湛，对架构最为熟悉，他们最有资格评价现有架构是否能适应新的用户需求，采用何种方式实现需求对架构的冲击最小。但是由少数人来负责所有的详细设计可能造成开发过程中的瓶颈甚至是设计的错误。当任务比较集中的时候，设计者可能忙得透不过气，而负责实现的同事反而在等米下锅，比较清闲。于是为了让自己不成为拖累进度的<span>&#8220;</span>罪人<span>&#8221;</span>，某些设计者就会采用一种快捷方式来交付设计：他们会与系统分析员进行初步的讨论，然后撰写一份粗糙的但仍然叫做详细设计的文档，把它交付给负责实现的同事，再通过讨论、即时通工具、电子邮件等方式解答对方提出的疑问。但由于详细设计本身不完备，他们不得不花费更多的时间和精力与负责实现的同事沟通；而且他们却很可能忘了把这些交流的成果更新到详细设计中去！（或许是他们太忙，没有足够的时间，又或许是他们认为既然产品已经实现，那么详细设计也就不必维护了。）其结果很可能是当产品开发出来后，我们才发现它跟用户要求的完全两样！原本在详细设计阶段就应该发现的需求漏洞与在那时应该确定的技术方案在实现阶段甚至测试阶段才暴露出来，而这时大家往往有木已成舟的感觉，改动的难度比设计阶段高数倍甚至十倍以上，毕竟任何再牛的人都有自己的局限。<span><br><span>&nbsp;&nbsp; </span>&nbsp;</span>对于以上问题我提出全员设计，全员设计的含义就是把详细设计的工作进行适当地分解，把它们分摊到小组内其它同事身上，让大家都参与设计。这可以说明如下：<span><br><span>&nbsp;&nbsp;&nbsp; </span></span>当一组用户需求基本确定下来后，程序主管需要估计需求的相关性、需求的优先级、设计的难易程度、设计的工作量等，将该组需求分解为一或多项设计任务，并指定给适当的同事。参与设计的每个人必须负责至少一项设计的撰写任务。设计者从系统分析员处获得详细的用户需求，并与系统分析员反复沟通以透彻理解用户需求。他还要分析系统架构及产品的已实现与<span>/</span>或已规划部分，理解架构的设计理念，理解产品不同模块之间的协作关系，理解架构与产品之间的约束和依赖。当然对系统架构和产品的分析不可能穷尽每一个细节，只要分析与即将开发的模块相关的内容即可。</p>
<p>一项设计任务，它可能需要多个程序员完成。比如用户界面或网页由某位或某组同事负责，而业务逻辑组件则由另一位或另一组负责，数据库部分则又由其它同事负责。设计者必须考虑他们的立场，以各方面都相对容易理解的方式写清楚主要的模块<span>/</span>接口<span>/</span>对象定义，明确相应的调用规则与主要逻辑处理。如果某项设计任务所涉及的内容太专业化，设计者并不熟悉相关的内容（比如某位<span>C#</span>程序员并不熟悉如何编写一个存储过程），他可以用描述性的文字说明该部分的设计要求，并知会相关的同事补充。其它同事在补充时可以对这些描述性的文字重新整理，以更加确切地表达设计内容，更符合文档的书写惯例。在设计文档完成后，设计者必须把他提交给程序主管或由程序主管指定的程序员审阅。个人推荐由其它程序员而不仅仅是程序主管来审阅。不用担心等待多个人的审阅意见是否可能导致一份设计滞留很久。大家可以并行地工作，不必是<span>A</span>审阅后才能<span>B</span>审阅。可以交叉审阅，即<span>A</span>的设计由<span>B</span>、<span>C</span>审阅，<span>B</span>的设计由<span>A</span>、<span>C</span>审阅等。审阅意见可以用多种方式（如讨论、即时通工具、电子邮件）反馈给设计者，设计者负责汇总这些意见并修正设计。以个人的经验而言，通常设计交付审阅后半天内就可以收到反馈意见了。设计经过反复地修正直至没有人再提出修正意见，这时就可以由程序员实现了。以个人的经验而言，一份设计通常两、三轮反馈后就可以定稿了。如果多次反馈后仍不能定稿，极有可能是：<span><br>a)</span>需求尚未明确，各个方面（包括客户、系统分析员或设计者）对需求的看法不统一<span><br>b)</span>技术或系统架构存在严重的限制，无法用较方便的方式实现</p>
<p>全员参与设计好处、风险与不适用的团队如下：</p>
<h3><a name=_Toc162709238><span><span>1.2.1&nbsp;</span></span><span>全员设计可以带来以下明显的好处</span></a></h3>
<p><span>1.</span>有助于平衡工作量，加快开发进度。详细设计的任务分解后，程序主管或核心程序员可以有更多的时间处理其它的事务，比如关注软件的开发质量或改善系统架构。详细设计的撰写任务分解后它们可以并行地撰写，这将极大地提高设计撰写的进度，节约时间。<span><br><span>&nbsp;&nbsp;&nbsp; </span>2.</span>有助于培养程序员的大局观。每位撰写设计的程序员不再仅仅只关心自己负责实现的模块，他必须从更高的层次考虑和理解设计。<span><br><span>&nbsp;&nbsp;&nbsp; </span>3.</span>有助于加强同事之间的交流与协作。设计者需要与系统分析员、其它程序员、审阅者进行反复的交流和沟通，实际上每份设计都是多人协作的成果。更多的沟通有助于集思广益，有助于避免一、两个人的倾向性意见导致错误的设计。每位设计者都需要对自己撰写的设计负责，他还要向其它同事的设计提供审阅意见或技术建议，彼此的工作是互相支持和依赖的，这有助于减少<span>&#8220;</span>只扫自家门前雪，不管他人瓦上霜<span>&#8221;</span>的想法。</p>
<h3><a name=_Toc162709239><span><span>1.2.2&nbsp;</span></span><span>推行全员设计的潜在风险</span></a></h3>
<p><span>1.</span>在某种意义上，全员设计可能增加交流的成本。两个人之间有一条交流途径，三个人之间最多有三条，四个人之间最多有六条。途径越多，信息量就越大，而这些信息不见得都是有用的信息。详细设计的任务分解后，不可避免地有更多的人参与交流和沟通，大家要花更多的时间来理解他人的想法，也可能要花更多的时间向他人阐述自己的观点。特别是在并行撰写详细设计的过程中，系统分析员反而可能成为另一个瓶颈了。但从总体上来看，在设计阶段花费适当的代价发现更多的问题，比在实现阶段或测试阶段再发现问题，仍然是划算的。<span><br><span>&nbsp;&nbsp;&nbsp; </span>2.</span>分解后的详细设计可能引入冲突的设计内容。由于设计由不同的程序员撰写，他们考虑问题的角度和思维的方式不可能完全一致，这增大了不同的设计内容之间的计算口径或交互方式不一致的可能性。这需要设计者们尽可能遵循一致的设计原则，也需要审阅者们尽可能找到这些不一致的地方。<span><br><span>&nbsp;&nbsp;&nbsp; </span>3.</span>并不是所有的程序员都适合参与设计。很明显，例如刚入职的同事就不适合参与设计，他们对系统架构还缺乏足够的认识。另外兼职的同事也不适合参与设计，他们的工作方式可能无法保证及时提交设计文档与参与讨论等。</p>
<h3>&nbsp;</h3>
<h2><a name=_Toc162709241><span><span>1.3<span>&nbsp;&nbsp;&nbsp; </span></span></span><span>沟通</span></a> </h2>
<p><span>&nbsp;</span>在项目的开发过程中，在团队中的成员之间以及和客户之间是一个不断的交流和沟通的过程。我们的开发过程最好是一个迭代式的开发过程（尤其是国内的项目）。这样我们可以尽早发现开发出来的功能是不是符合客户的需求，以免开发完了，客户说这个不是我们需要的后果。</p>
<h2><a name=_Toc162709242><span><span>1.4<span>&nbsp;&nbsp;&nbsp; </span></span></span><span>计划执行控制</span></a></h2>
<p>制定系统得整个计划，任务的划分以及分配工作，跟踪任务的进度，使我们的项目进度在控制范围之内。</p>
<h2><a name=_Toc162709243><span><span>1.5<span>&nbsp;&nbsp;&nbsp; </span></span></span><span>风险管理</span></a></h2>
<p>风险是随着项目的不同阶段变化的，不同的阶段风险是不同的，我们必须分析我们当前面临的风险的数量、影响程度等，以及怎么去解决这些风险。</p>
<h2><a name=_Toc162709244><span><span>1.6<span>&nbsp;&nbsp;&nbsp; </span></span></span><span>测试</span></a></h2>
<p>测试工作目前在国内的中小公司做的都不太好，但是从我们做项目或者产品必须重视测试工作，把握好质量关。</p>
<h2><a name=_Toc162709245><span><span>1.7<span>&nbsp;&nbsp;&nbsp; </span></span></span><span>验收为目的的思想</span></a></h2>
<p>在开发过程中，内部管理还要注意的一点是时刻强调以验收为目的的思想，每个任务的最终可交付成果一定要是可以被检查的，比如，【界面要求：美观大方、简洁明快】，这个要求我就不知道如何检查。所以，给开发小组布置任务的时候就要考虑如何检查结果，比如我见过一个计划，里面有一个任务【开发人员熟悉<span>EJB</span>编程】，这个任务，除了让这些人去参加一些专业认证考试，否则，结果很难被检查。所以，时刻考虑如何检查结果、如何向客户交付是项目经理一直要注意的事情，我听说有些老项目经理拿到项目是倒排计划的，即首先看如何验收和验收标准，然后决定工作计划。很多项目开始了很久，还不知道如何验收，那么这个项目出问题的可能性就很大了。做项目就是为了验收，我们的角色不是研究机构，我们的目的就是在付出那么多劳动后得到结果。<br><a id=_211a3adfbbd7_HomePageDays_DaysList_ctl01_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/ghd258/archive/2007/05/22/756102.html"><font color=#000080>项目开发经验谈（一）</font></a> <br><a href="http://www.cnblogs.com/ghd258/archive/2007/05/22/756102.html">http://www.cnblogs.com/ghd258/archive/2007/05/22/756102.html</a></p>
 <img src ="http://www.cnblogs.com/ghd258/aggbug/771154.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47960/" target="_blank">火狐3.5版被指推出太匆忙：存在50多个漏洞</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>项目开发经验谈（一）</title><link>http://www.cnblogs.com/ghd258/archive/2007/05/22/756102.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Tue, 22 May 2007 11:58:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/05/22/756102.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/756102.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/05/22/756102.html#Feedback</comments><slash:comments>26</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/756102.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/756102.html</trackback:ping><description><![CDATA[&nbsp;
<h1><a name=_Toc162709232><span><span>1<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>项目过程</span></a></h1>
<p>根据我们项目出现的问题，我自己的总结的一些经验以及我在培训中学习得知识总结下项目中遇到的问题和解决方案。</p>
<h2><a name=_Toc162709233><span><span>1.1<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>签订合同</span></a></h2>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 项目的合同内主要写的很模糊，范围可大可小，致使在后期的工作中项目越做越大，但是项目费用是不变的。在国内的合同好像都是在打单时是基本上都承诺，也不会到细节，在合同签订后启动后才发现问题。但合同中可以写明如果需求变更什么级别的怎么样，多少钱等<span>;</span>签订合同也是一个很高的技巧，建议把系统的边界及功能范围和解决方案与合同一起签署，这样客户提出的新功能就可以暂且搁置。</p>
<h2><a name=_Toc162709234><span><span>1.2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>团队建设</span></a></h2>
<p>&nbsp;在立项后尽早确定该项目的负责人及项目经理，这个人员非常关键，需要很强的综合能力，尤其的人格魅力方面。尽最大的努力将客户的人员加入到我们的项目团队来，这个人也是我们将来和客户的统一联系人，客户指定一个人和项目组进行沟通，不能是张领导、王领导都来说几句，如果他们意见不一致，那你只有得罪领导的选择了，所以，项目的最初就要定好规矩，项目组只认一个的意见，有什么要求你们内部先统一再和项目组谈，我们不想卷入客户内部业务部门之间的矛盾和政治斗争之中。很多项目经理都没有自己选择组员的权利，那么，就尽量发挥你的影响力去寻找那些你想要的人吧。成员的组成根据项目不同，相差较大，很难有什么具体要求，但是，一定要有精通客户业务的人，很多小项目里，这个人就是项目经理本人，大项目里会配备行业专家（<span>Industry expert</span>），这样和客户沟通起来才不会鸡同鸭讲，双方才可以相互理解。项目经理需要了解每个组员的情况，用就要用每个员工的特长。软件行业是个非常特殊的行业，从项目的管理以及人员的管理都有它的特殊性。</p>
<p><span>作为项目经理，其实脑子里就是几样东西：做哪些事情、做到什么程度、怎么交货、手上的资源以及各个事情的优先级。所谓多快好省那是人类的梦想，这四个方面都是相互矛盾的，属于典型的又要马儿跑，又要马儿不吃草的类型。考虑问题的轻重缓急方面，往往是把快放在第一位，各方领导都会给你最后期限，所以保进度是第一位的；省是第二位的，企业的根本目的是盈利，如果收入不能增加的话，至少费用要控制住；好是第三位的，没办法，谁都想精益求精，但是，没有强大的资源保障，质量只好先牺牲了；最后是多，客户的要求源源不断，如何降低客户的期望值，让他们从理想回到现实也是项目经理的分内工作。</span></p>
<h2><a name=_Toc162709235><span><span>1.3<span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>需求调研</span></a></h2>
<p><span><span>在需求调研分析阶段，项目组对客户的整体组织结构、有关人员及其关系、工作职责等没有足够了解以致于无法得到完整需求或最终经权威用户代表确认的需求。由于项目经理和需求分析员的工作问题以及调研工作做的不够细，客户参与程度都不高，客户方相关责任人不明确或对范围和需求责任心不强，提出的需求具有随意性，项目前期对需求的确认不够积极；多个用户代表各说各话、昨是今非但同时又希望软件尽早交付；我们的做法主要注重领导的需求，基本上都是领导说什么就是什么，致使开发出来的功能在实际使用中不是真正的使用人所需要的，项目后期需求变化随意，造成项目范围的蔓延，进度的拖延，成本的扩大。同时在我们的认识中是需求调研很关键，很多公司只是概念上认为该阶段重要，需要投入的时间长，但是实际上很多公司做不到这个，总想很快进入编码阶段。而且为了赶进度总想省做某些工作，少写某些文档，使我们无法拿出客户需求以及后来功能变化和原先功能之间的对比度。</span></span></p>
<p><span><span>造成上述现象的原因是我们没有全面了解所有项目干系人的需求以及对需求调研的重视程度不够。软件开发是没有捷径可以走的，省掉的工作后面会有更高的代价回报。全面的需求来自所有项目干系人，不同的干系人其愿望和追求的目标往往相差甚远，因此对项目干系人的愿望进行平衡可能是相当困难的事情。</span></span></p>
<p><span><span>软件开发项目的目的就是实现项目干系人的需求和愿望。如果对项目所有干系人没有进行足够的沟通和影响，使其尽可能地参与项目，则可能因为项目开始时项目范围和一些具体需求不够完整清晰，也可能因为某个项目干系人后期因为认识的变化而提出新的需求，造成工期的延长，成本的增加，甚至项目的完全失败。因此，应当从项目的启动开始，需求分析员及其项目成员就要分清项目干系人包含哪些人和组织，通过沟通协调对他们施加影响，驱动他们对项目的支持，调查并明确他们的需求和愿望，减小其对项目的阻力，以确保项目获得成功。以下是一些有效的措施</span></span></p>
<p><span><span>1</span></span><span><span>、尽快熟悉项目干系人全貌</span></span><span><br></span><span><span>　　有些项目在做需求调查时，由于受进度要求等客观因素影响，需求分析员与建设单位的技术部门交流较多，向业务管理部门和实际使用者调查不够深入，造成软件试用后不得不再对需求做较大调整，<span>"</span>从头再来<span>"</span>的部分比例很高，大大超过进度要求时间。因此，熟悉项目干系人全貌是进行需求调查的第一步，也是需求调查的基础。在定制开发项目的项目干系人中，最重要的是建设单位中的人事组织、业务关系。最好是能够用组织结构图画出相关单位的组织结构；建立调研对象通讯录以保证调研及分析期间及时的沟通。与此同时要注意项目干系人的主次关系，以便在他们之间的需求出现矛盾时能够进行合理的取舍。</span></span><span><br></span><span><span>　　熟悉建设单位内部相关部门的业务划分及它们之间的相互关系<span>,</span>为功能分析准备了必要的资料<span>, </span>同时可以熟悉用户方的各类人员，并及时进行广泛、有效的沟通与交流。特别要与客户方业务与技术的规划者和实际使用者进行深入探讨，收集必要的原始资料，保证需求调查的完整性、正确性。</span></span><span><br></span><span><span>　　建设单位只是项目干系人中的一部分（当然是主要的部分），为了更好地了解项目干系人全貌，还应当在建设单位组织结构图基础上全体项目干系人结构图，以便更好更全面地进行需求调研分析。</span></span><span><br></span><span><span>　　<span>2</span>、详细描述各项业务，以利于让所有客户确认</span></span><span><br></span><span><span>　　尽可能全面详细地调查并且描述原有系统（这点非常关键，需要调查清楚原有系统的不足以及优点，以及用户在这些系统中的操作习惯）和用户希望将来系统具有的各项业务的流程，并将这些业务流程文档化后与客户进行讨论，对描述错误或不准确不精确的进行修改，最终让客户进行确认。从个人认为，对业务处理过程了解的完整性和准确性非常重要。虽然对数据来说都是查增删改传，但具体业务都是分为若干步骤，每个步骤都有其业务名称，同一步骤可能对多个数据集进行不同操作，需要调查了解清楚才能设计出适合各流程业务节点用户业务特点和习惯的软件，使开发出来的软件更受欢迎。当然在进行软件概要设计时，要尽量排除业务流程的制约，即把流程中的各项业务结点工作作为独立的对象，充分考虑他们与其他各种业务对象的接口，在流程之间通过业务对象的相互调用实现其业务流程，这样，在业务流程发生有限的变化时，就能够比较方便地修改系统程序而实现新的需求。</span></span><span><br></span><span><span>　　对于各项业务的调查可以通过对以下资料的收集整理分析，这些资料来自各种各样的项目干系人：遵循的标准、组织发放的工作手册、作业流程、有关业务的上级通知、有关业务的办事指南、办理业务时需要填写的登记表、各种相关的统计报表及通过其他途径收集的类似系统的介绍、技术资料等等。</span></span><span><br></span><span><span>　　<span>3</span>、可视化需求调研，引导各种客户挖掘他们的需求</span></span><span><br></span><span><span>　　很多客户因为自己缺乏计算机知识，无法提出完整准确、隐含的或潜在的需求。但若这些需求不能满足将导致用户的不满。因此需求调研分析人员应善于想用户所想，不要害怕用户的需求多，不但要确定明确的需求，还要善于用启发的方式与用户探讨隐含的或潜在的需求，并结合各种调研分析技术挖掘超出客户期望的令人兴奋的需求。这就要求需求调研分析员要尽快完整地熟悉相关业务，从而能够站在用户的立场看待软件需求，想用户所想，做好业务与计算机之间的桥梁。利用可视化需求调研的方法可以很好地启发用户深入挖掘潜在的需求。可视化需求调研就是使用图表等工具来启发引导用户清楚地叙述需求，并且使需求更加全面完善。</span></span><span><br></span><span><span>　　对于高层领导，可以提供系统总体框架图；对于业务管理人员，可以用业务流程图来描述新旧系统的业务流程；对于客户中的技术人员，可以用数据流图、实体关系图或<span>UML</span>中的各种图形对系统进行各种角度的描述；而对于业务管理人员、客户中的技术人员、以及各层次各流程中的用户，画出用户界面图来进行需求挖掘，是个比较有效的沟通方式。</span></span><span><br></span><span><span>　　这里特别说明一下用户界面的重要性。用户界面的设计按理来说是软件设计的责任，当然客户自己对界面有特别提出要求的除外。但是，如果把它提前到需求调研时（紧接着原有系统调研分析和系统模型完成之后）与客户进行讨论，则可以大大改善需求调研的效果。因为这时客户对于将来的系统还没有一个形象上的概念，或者有一个模糊的预想的概念需要表述、验证、明晰化、完善化。从我们后来的项目先做界面和用户交流的经验看（</span></span>系统原形应该在需求分析的时候开发人员在分析师的指导下完成真实环境中的开发，当然开发只是界面的功能模拟，没有底层代码的实现<span><span>），画出用户界面草图与客户进行讨论，可以大大激发他们提供更为准确全面的需求，而且这些界面在后期的开发中也可以利用。原来收集资料，描述业务，说明系统模型到了山穷水尽的时候，这种方法可以达到柳暗花明又一村的效果。因此，所谓需求就是<span>&#8220;</span>当你按下各种相关按钮（或输入各种相关命令）时系统做什么<span>&#8221;</span>，所谓设计就是<span>&#8220;</span>当你按下各种相关按钮（或输入各种相关命令）时系统怎么做<span>&#8221;</span>。需求的最终目的实际上是完整准确地描述系统需要的各种接口或<span>&#8220;</span>界面<span>&#8221;</span>，及它们的相互关系或与外部环境的关系，如界面中的某个按钮按下去时，可能产生新的界面、新的按钮、或者调用其他软件硬件完成某些功能。自顶向下，把这些界面及涉及到的数据描述清楚，就是一份不错的需求。</span></span><span><br></span><span><span>　　<span>4</span>、与其他项目小组成员共同协作、持续完善系统需求</span></span><span><br></span><span><span>　　需求文档完成之后，并不是万事大吉，把它扔给后面的设计人员就了事了。作为项目干系人之内的项目组其他成员，对需求的有效性也起到某种程度的验证作用。虽然软件项目的生命周期按照各种开发模型有不同阶段的划分，但每个阶段的结束不是简单地把阶段工作成果塞给下一阶段的成员就可以了。特别是高科技的软件开发项目，上一阶段的工作成果往往要通过多次的沟通才能更为清晰地被下一阶段成员接受，其有效性、合理性也要被下一阶段的工作所检验，通过检验有时也有必要对上一阶段的工作结果进行相应的调整，需求更是如此。因此，无论是同一阶段不同人员之间，或是不同阶段人员之间都应根据需要相互协作，相互配合，共同完成软件开发任务</span></span></p>
<p><span>5</span>、《功能规格说明书》，这个是我们项目中最大的失误，致使后来客户的改动让我们很被动。《功能规格说明书》反映了客户提出的所有需求功能，我们也是按照《功能规格说明书》来开发的。后期客户的变化都可以和《功能规格说明书》对比，具体怎么变更按照我们的变更流程来做。《功能规格说明书》作为产品需求的最终成果必须具有综合性：必须包括所有的需求。开发者和客户不能作任何假设。如果任何所期望的功能或非功能需求未写入软件需求规格说明那么它将不能作为协议的一部分并且不能在产品中出现。并且注意以下几点：</p>
<p><span>(1)</span>完整性</p>
<p>每一项需求都必须将所要实现的功能描述清楚，以使开发人员获得设计和实现这些功能所需的所有必要信息。不能遗漏任何必要的需求信息。遗漏需求将很难查出。注重用户的任务而不是系统的功能将有助于你避免不完整性。如果知道缺少某项信息，用<span>&#8220;</span>待确定<span>&#8221; </span>作为标&nbsp;准标识来标明这项缺漏。在开始开发之前，必须解决需求中所有的<span>&#8220;</span>待确定<span>&#8221;</span>项。</p>
<p><span>(2)</span>正确性</p>
<p>每一项需求都必须准确地陈述其要开发的功能。做出正确判断的参考是需求的来源，如用户或高层的系统需求规格说明。若软件需求与对应的系统需求相抵触则是不正确的。只有用户代表才能确定用户需求的正确性，这就是一定要有用户的积极参与的原因。没有用户参与的需求评审将导致此类说法：<span>&#8220;</span>那些毫无意义，这些才很可能是他们所要想的。<span>&#8221;</span>其实这完全是评审者凭空猜测。</p>
<p><span>(3)</span>可行性</p>
<p>每一项需求都必须是在已知系统和环境的权能和限制范围内可以实施的。为避免不可行的需求，最好在获取需求<span>(</span>收集需求<span>)</span>过程中始终有一位软件工程小组的组员与需求分析人员或考虑市场的人员在一起工作，由他负责检查技术可行性。</p>
<p><span>(4)</span>要性</p>
<p>每一项需求都应把客户真正所需要的和最终系统所需遵从的标准记录下来。<span>&#8220;</span>必要性<span>&#8221;</span>也可以理解为每项需求都是用来授权你编写文档的<span>&#8220;</span>根源<span>&#8221;</span>。要使每项需求都能回溯至某项客户的输入，如使用实例或别的来源。</p>
<p><span>(5)</span>划分优先级</p>
<p>给每项需求、特性或使用实例分配一个实施优先级以指明它在特定产品中所占的分量。如果把所有的需求都看作同样重要，那么项目管理者在开发或节省预算或调度中就丧失控制</p>
<p><span>(6)</span>无二义性</p>
<p>对所有需求说明的读者都只能有一个明确统一的解释，由于自然语言极易导致二义性，所以尽量把每项需求用简洁明了的用户性的语言表达出来。避免二义性的有效方法包括对需求文档的正规审查，编写测试用例，开发原型以及设计特定的方案脚本。</p>
<p><span>(7)</span>可验证性</p>
<p>检查一下每项需求是否能通过设计测试用例或其它的验证方法，如用演示、检测等来确定产品是否确实按需求实现了。如果需求不可验证，则确定其实施是否正确就成为主观臆断，而非客观分析了。一份前后矛盾，不可行或有二义性的需求也是不可验证的。<br><span>(8)</span>一致性</p>
<p>一致性是指与其它软件需求或高层（系统，业务）需求不相矛盾。在开发前必须解决所有需求间的不一致部分。只有进行一番调查研究，才能知道某一项需求是否确实正确。<br><span>(9)</span>可修改性<br>在必要时或为维护每一需求变更历史记录时，应该修订文档。这就要求每项需求要独立标出，并与别的需求区别开来，从而无二义性。每项需求只应在文档中出现一次。这样更改时易于保持一致性。另外，使用目录表、索引和相互参照列表方法将使软件需求规格说明更容易修改。</p>
<p><span>&nbsp;(10)</span>可跟踪性</p>
<p>&nbsp;应能在每项软件需求与它的根源和设计元素、源代码、测试用例之间建立起链接链，这种可跟踪性要求每项需求以一种结构化的，粒度好的方式编写并单独标明，而不是大段大段的叙述。<br><span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a id=_211a3adfbbd7_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/ghd258/archive/2007/06/04/771154.html"><font color=#000080>项目开发经验谈（二）</font></a> <br><a href="http://www.cnblogs.com/ghd258/archive/2007/06/04/771154.html">http://www.cnblogs.com/ghd258/archive/2007/06/04/771154.html</a><br><a id=_211a3adfbbd7_HomePageDays_DaysList_ctl02_DayItem_DayList_ctl00_TitleUrl href="http://www.cnblogs.com/ghd258/archive/2007/02/12/648697.html"><font color=#000080>在项目开发总的一些感受</font></a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.cnblogs.com/ghd258/archive/2007/02/12/648697.html">http://www.cnblogs.com/ghd258/archive/2007/02/12/648697.html</a></span></p>
 <img src ="http://www.cnblogs.com/ghd258/aggbug/756102.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>js技巧收集(200多个) (转)</title><link>http://www.cnblogs.com/ghd258/archive/2007/01/28/632395.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Sun, 28 Jan 2007 03:21:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/01/28/632395.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/632395.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/01/28/632395.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/632395.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/632395.html</trackback:ping><description><![CDATA[摘要: 1.文本框焦点问题onBlur:当失去输入焦点后产生该事件onFocus:当输入获得焦点后，产生该文件Onchange:当文字值改变时，产生该事件Onselect:当文字加亮后，产生该文件&lt;inputtype="text"value="郭强"onfocus="if(value=='郭强'){value=''}"onblur="if(value==''){value='郭强'}"&gt;点击时&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2007/01/28/632395.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/632395.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47958/" target="_blank">风声又起 Windows 7 RTM版7月13日完成</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>[Javascript] 如何在客户端验证表单被改变 </title><link>http://www.cnblogs.com/ghd258/archive/2007/01/12/618257.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Fri, 12 Jan 2007 00:46:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/01/12/618257.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/618257.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/01/12/618257.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/618257.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/618257.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">Form中的每个对象都保留了初始值，所以可以在提交表单时，遍历Form中对象，<br>检查对象当前的值与初始值是否一致，就判断出了表单是否被修改了。<br><br><strong>示例代码</strong></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;IsFormChanged()<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img id=Codehighlighter1_25_1104_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_1104_Open_Text.style.display='none'; Codehighlighter1_25_1104_Closed_Image.style.display='inline'; Codehighlighter1_25_1104_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_25_1104_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_1104_Closed_Text.style.display='none'; Codehighlighter1_25_1104_Open_Image.style.display='inline'; Codehighlighter1_25_1104_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_25_1104_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_25_1104_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;isChanged&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;form&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;document.forms[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">var</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;form.elements.length;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img id=Codehighlighter1_143_1079_Open_Image onclick="this.style.display='none'; Codehighlighter1_143_1079_Open_Text.style.display='none'; Codehighlighter1_143_1079_Closed_Image.style.display='inline'; Codehighlighter1_143_1079_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_143_1079_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_143_1079_Closed_Text.style.display='none'; Codehighlighter1_143_1079_Open_Image.style.display='inline'; Codehighlighter1_143_1079_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_143_1079_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_143_1079_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;element&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;form.elements[i];<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;type&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;element.type;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hidden</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">textarea</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">button</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_319_469_Open_Image onclick="this.style.display='none'; Codehighlighter1_319_469_Open_Text.style.display='none'; Codehighlighter1_319_469_Closed_Image.style.display='inline'; Codehighlighter1_319_469_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_319_469_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_319_469_Closed_Text.style.display='none'; Codehighlighter1_319_469_Open_Image.style.display='inline'; Codehighlighter1_319_469_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_319_469_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_319_469_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(element.value&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;element.defaultValue)<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_388_459_Open_Image onclick="this.style.display='none'; Codehighlighter1_388_459_Open_Text.style.display='none'; Codehighlighter1_388_459_Closed_Image.style.display='inline'; Codehighlighter1_388_459_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_388_459_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_388_459_Closed_Text.style.display='none'; Codehighlighter1_388_459_Open_Image.style.display='inline'; Codehighlighter1_388_459_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_388_459_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_388_459_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isChanged&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/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">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">radio</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">checkbox</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img id=Codehighlighter1_535_689_Open_Image onclick="this.style.display='none'; Codehighlighter1_535_689_Open_Text.style.display='none'; Codehighlighter1_535_689_Closed_Image.style.display='inline'; Codehighlighter1_535_689_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_535_689_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_535_689_Closed_Text.style.display='none'; Codehighlighter1_535_689_Open_Image.style.display='inline'; Codehighlighter1_535_689_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_535_689_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_535_689_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(element.checked&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;element.defaultChecked)<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img id=Codehighlighter1_608_679_Open_Image onclick="this.style.display='none'; Codehighlighter1_608_679_Open_Text.style.display='none'; Codehighlighter1_608_679_Closed_Image.style.display='inline'; Codehighlighter1_608_679_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_608_679_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_608_679_Closed_Text.style.display='none'; Codehighlighter1_608_679_Open_Image.style.display='inline'; Codehighlighter1_608_679_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_608_679_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_608_679_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;isChanged&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/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">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">select-one</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img id=Codehighlighter1_738_1025_Open_Image onclick="this.style.display='none'; Codehighlighter1_738_1025_Open_Text.style.display='none'; Codehighlighter1_738_1025_Closed_Image.style.display='inline'; Codehighlighter1_738_1025_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_738_1025_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_738_1025_Closed_Text.style.display='none'; Codehighlighter1_738_1025_Open_Image.style.display='inline'; Codehighlighter1_738_1025_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_738_1025_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_738_1025_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/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">var</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;element.options.length;&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img id=Codehighlighter1_813_1015_Open_Image onclick="this.style.display='none'; Codehighlighter1_813_1015_Open_Text.style.display='none'; Codehighlighter1_813_1015_Closed_Image.style.display='inline'; Codehighlighter1_813_1015_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_813_1015_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_813_1015_Closed_Text.style.display='none'; Codehighlighter1_813_1015_Open_Image.style.display='inline'; Codehighlighter1_813_1015_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_813_1015_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_813_1015_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/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">if</span><span style="COLOR: #000000">&nbsp;(element.options[j].selected&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;element.options[j].defaultSelected)<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img id=Codehighlighter1_918_1001_Open_Image onclick="this.style.display='none'; Codehighlighter1_918_1001_Open_Text.style.display='none'; Codehighlighter1_918_1001_Closed_Image.style.display='inline'; Codehighlighter1_918_1001_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_918_1001_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_918_1001_Closed_Text.style.display='none'; Codehighlighter1_918_1001_Open_Image.style.display='inline'; Codehighlighter1_918_1001_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_918_1001_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_918_1001_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/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;isChanged&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/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;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/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></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img id=Codehighlighter1_1048_1073_Open_Image onclick="this.style.display='none'; Codehighlighter1_1048_1073_Open_Text.style.display='none'; Codehighlighter1_1048_1073_Closed_Image.style.display='inline'; Codehighlighter1_1048_1073_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1048_1073_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1048_1073_Closed_Text.style.display='none'; Codehighlighter1_1048_1073_Open_Image.style.display='inline'; Codehighlighter1_1048_1073_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1048_1073_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_1048_1073_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//<br></span><span style="COLOR: #008080">39</span><span style="COLOR: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;isChanged;<br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cnblogs.com/ghd258/aggbug/618257.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47957/" target="_blank">乔布斯和埃利森</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>如何去掉ie里面的关闭按钮,和屏蔽ALT+F4 (转载)</title><link>http://www.cnblogs.com/ghd258/archive/2007/01/11/617933.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Thu, 11 Jan 2007 08:52:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2007/01/11/617933.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/617933.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2007/01/11/617933.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/617933.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/617933.html</trackback:ping><description><![CDATA[摘要: 去掉关闭按钮可以使用无边框窗口设计，不过IE6中已经不支持了。。。&lt;scriptlanguage=javascript&gt;minimizebar="ftp/minimize.gif";'最小化图片路径minimizebar2="ftp/minimize2.gif";'点击最小化图片路径closebar="ftp/close.gif";'关闭图片路径closebar2="ftp/close&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2007/01/11/617933.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/617933.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47956/" target="_blank">Xbox Live将投放Silverlight广告</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>深入理解JavaScript中的函数</title><link>http://www.cnblogs.com/ghd258/archive/2006/12/11/589274.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Mon, 11 Dec 2006 13:15:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/12/11/589274.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/589274.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/12/11/589274.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/589274.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/589274.html</trackback:ping><description><![CDATA[摘要: 函数是进行模块化程序设计的基础，编写复杂的Ajax应用程序，必须对函数有更深入的了解。JavaScript中的函数不同于其他的语言，每个函数都是作为一个对象被维护和运行的。通过函数对象的性质，可以很方便的将一个函数赋值给一个变量或者将函数作为参数传递。在继续讲述之前，先看一下函数的使用语法：functionfunc1(&#8230;){&#8230;}varfunc2=function(&#823&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2006/12/11/589274.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/589274.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47951/" target="_blank">Debian无视GNU创始人警告 接受Mono</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>庆祝"西安.NET俱乐部"成立，请申请加入的朋友在这里报到</title><link>http://www.cnblogs.com/ghd258/archive/2006/11/21/567609.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Tue, 21 Nov 2006 09:54:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/11/21/567609.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/567609.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/11/21/567609.html#Feedback</comments><slash:comments>169</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/567609.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/567609.html</trackback:ping><description><![CDATA[<p>首先，庆祝"西安.NET俱乐部"成立。我们的口号是：
打造西安.NET 交流平台,整合西安.NET 人才资源!<br>&nbsp;&nbsp;&nbsp; 感谢博客园能够提供这样一片空间，给在我们提供一个交流的平台。让我们能从网上走到线下，切磋技术，交流心得，海阔天空，更重要的，是让大家成为志同道合的朋友。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 我是凭着对.Net技术的热情来发起倡议的，但同时也深深感觉到自己的能力和阅历都远远不够，所以希望能有更多的朋友来撑起这个团队，参与团队活动的组织和策划，让&#8220;西安.NET俱乐部&#8221;名副其实的壮大起来。</p>
<p>&nbsp;&nbsp;&nbsp; 请申请加入&#8220;西安.NET俱乐部&#8221;的朋友贴一下你的联系方式,谢谢！<br>&nbsp;&nbsp;&nbsp; Example:</p>
<p>&nbsp;&nbsp;&nbsp; Blog名：ghd258&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>(注意，不要随便写一个名字，必须是注册成为 博客园 的会员名)<br></strong>&nbsp;&nbsp;&nbsp; MSN:&nbsp;&nbsp;&nbsp; ghd258@hotmail.com&nbsp;<br>&nbsp;&nbsp;&nbsp; Email:&nbsp; ghd258@hotmail.com&nbsp;<br>&nbsp;&nbsp;&nbsp; QQ:&nbsp;&nbsp;&nbsp;&nbsp; 14983030<br>&nbsp;&nbsp;&nbsp; 最感兴趣的研究方向：Asp.net、WebService应用</p>
<p>&nbsp;&nbsp;&nbsp; 请大家务必写一下自己感兴趣的方向，这样更方便大家找到方向相同的朋友，而且请一定要记得贴一个Email，活动的通知会主要以Email为主，希望大家先通过这个Blog团队的形式加入，先交流起来，谢谢你的配合！</p>
<p>&nbsp;<br></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></p><img src ="http://www.cnblogs.com/ghd258/aggbug/567609.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47950/" target="_blank">iPhone 3GS首发日创AT&T多项纪录</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>在SQL Server 2005中用存储过程实现搜索功能</title><link>http://www.cnblogs.com/ghd258/archive/2006/11/17/563218.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Fri, 17 Nov 2006 00:34:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/11/17/563218.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/563218.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/11/17/563218.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/563218.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/563218.html</trackback:ping><description><![CDATA[摘要: 现在很多网站都提供了站内的搜索功能，有的很简单在SQL语句里加一个条件如：where names like &#8216;%words%&#8217;就可以实现最基本的搜索了。 我们来看看功能强大一点，复杂一点的搜索是如何实现的（在SQL　ＳＥＲＶＥＲ２００／２００５通过存储过程实现搜索算法）。 我们把用户的搜索可以分为以下两种： 1.精确搜索,就是把用户输入的各个词语当成一个整体,不分割搜索. &nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2006/11/17/563218.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/563218.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>55种网页常用小技巧(javascript)</title><link>http://www.cnblogs.com/ghd258/archive/2006/11/03/549179.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Fri, 03 Nov 2006 07:41:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/11/03/549179.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/549179.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/11/03/549179.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/549179.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/549179.html</trackback:ping><description><![CDATA[摘要: 1.oncontextmenu="window.event.returnValue=false"将彻底屏蔽鼠标右键&lt;tableborderoncontextmenu=return(false)&gt;&lt;td&gt;no&lt;/table&gt;可用于Table2.&lt;bodyonselectstart="returnfalse"&gt;取消选取、防止复制3.onpaste="re&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2006/11/03/549179.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/549179.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>精妙的SQL和SQL SERVER 与ACCESS、EXCEL的数据导入导出转换</title><link>http://www.cnblogs.com/ghd258/archive/2006/10/28/542831.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Sat, 28 Oct 2006 08:24:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/10/28/542831.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/542831.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/10/28/542831.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/542831.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/542831.html</trackback:ping><description><![CDATA[摘要: 今天做个行列转换 找到的好语句 解决了我的问题*说明：复制表(只复制结构,源表名：a新表名：b)select*intobfromawhere1&lt;&gt;1*说明：拷贝表(拷贝数据,源表名：a目标表名：b)insertintob(a,b,c)selectd,e,ffromb;*说明：显示文章、提交人和最后回复时间selecta.title,a.username,b.adddatefromtab&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2006/10/28/542831.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/542831.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47946/" target="_blank">Mono这只猴子招惹了谁？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>基于RBAC模型的通用权限管理系统的设计(数据模型)的扩展</title><link>http://www.cnblogs.com/ghd258/archive/2006/10/18/532611.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Wed, 18 Oct 2006 08:02:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/10/18/532611.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/532611.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/10/18/532611.html#Feedback</comments><slash:comments>26</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/532611.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/532611.html</trackback:ping><description><![CDATA[<p>1&nbsp;RBAC模型 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 访问控制是针对越权使用资源的防御措施。基本目标是为了限制访问主体（用户、进程、服务等）对访问客体（文件、系统等）的访问权限，从而使计算机系统在合法范围内使用；决定用户能做什么，也决定代表一定用户利益的程序能做什么<sup>[1]</sup>。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;企业环境中的访问控制策略一般有三种：自主型访问控制方法、强制型访问控制方法和基于角色的访问控制方法（RBAC）。其中，自主式太弱，强制式太强，二者工作量大，不便于管理<sup>[1]</sup>。基于角色的访问控制方法是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是：1.减小授权管理的复杂性，降低管理开销；2.灵活地支持企业的安全策略，并对企业的变化有很大的伸缩性。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NIST（The National Institute of Standards and Technology，美国国家标准与技术研究院）标准RBAC模型由4个部件模型组成，这4个部件模型分别是基本模型RBAC0（Core RBAC）、角色分级模型RBAC1（Hierarchal RBAC）、角色限制模型RBAC2（Constraint RBAC）和统一模型RBAC3（Combines RBAC）<sup>[1]</sup>。RBAC0模型如图1所示。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color: #ff0000;"> a</span>. RBAC0定义了能构成一个RBAC控制系统的最小的元素集合。在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素，权限被赋予角色,而不是用户，当一个角色被指定给一个用户时，此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性，RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background-color: #ff0000;"> b.</span> RBAC1引入角色间的继承关系，角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系，允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: #ff0000;">c</span><span style="background-color: #ff0000;">.</span> RBAC2模型中添加了责任分离关系。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; <span style="background-color: #ff0000;">d.</span> RBAC3包含了RBAC1和RBAC2，既提供了角色间的继承关系，又提供了责任分离关系。
</p>
<p>&nbsp;2核心对象模型设计 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据RBAC模型的权限设计思想，建立权限管理系统的核心对象模型.对象模型中包含的基本元素主要有：用户（Users）、用户组（Group）、角色（Role）、目标（Objects）、访问模式（Access Mode）、操作（Operator）。主要的关系有：分配角色权限PA（Permission Assignment）、分配用户角色UA（Users Assignmen描述如下： </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a .控制对象：是系统所要保护的资源（Resource），可以被访问的对象。资源的定义需要注意以下两个问题： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.资源具有层次关系和包含关系。例如，网页是资源，网页上的按钮、文本框等对象也是资源，是网页节点的子节点，如可以访问按钮，则必须能够访问页面。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.这里提及的资源概念是指资源的类别（Resource Class），不是某个特定资源的实例（Resource Instance）。资源的类别和资源的实例的区分，以及资源的粒度的细分，有利于确定权限管理系统和应用系统之间的管理边界，权限管理系统需要对于资源的类别进行权限管理，而应用系统需要对特定资源的实例进行权限管理。两者的区分主要是基于以下两点考虑： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一方面，资源实例的权限常具有资源的相关性。即根据资源实例和访问资源的主体之间的关联关系，才可能进行资源的实例权限判断。 例如，在管理信息系统中，需要按照营业区域划分不同部门的客户，A区和B区都具有修改客户资料这一受控的资源，这里&#8220;客户档案资料&#8221;是属于资源的类别的范畴。如果规定A区只能修改A区管理的客户资料，就必须要区分出资料的归属，这里的资源是属于资源实例的范畴。客户档案（资源）本身应该有其使用者的信息（客户资料可能就含有营业区域这一属性），才能区分特定资源的实例操作，可以修改属于自己管辖的信息内容。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另一方面，资源的实例权限常具有相当大的业务逻辑相关性。对不同的业务逻辑，常常意味着完全不同的权限判定原则和策略。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.权限：对受保护的资源操作的访问许可(Access Permission)，是绑定在特定的资源实例上的。对应地，访问策略（Access Strategy）和资源类别相关，不同的资源类别可能采用不同的访问模式（Access Mode）。例如，页面具有能打开、不能打开的访问模式，按钮具有可用、不可用的访问模式，文本编辑框具有可编辑、不可编辑的访问模式。同一资源的访问策略可能存在排斥和包含关系。例如，某个数据集的可修改访问模式就包含了可查询访问模式。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c.用户：是权限的拥有者或主体。用户和权限实现分离，通过授权管理进行绑定。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d.用户组：一组用户的集合。在业务逻辑的判断中，可以实现基于个人身份或组的身份进行判断。系统弱化了用户组的概念，主要实现用户（个人的身份）的方式。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.角色：权限分配的单位与载体。角色通过继承关系支持分级的权限实现。例如，科长角色同时具有科长角色、科内不同业务人员角色。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f.操作：完成资源的类别和访问策略之间的绑定。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; g.分配角色权限PA：实现操作和角色之间的关联关系映射。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.分配用户角色UA：实现用户和角色之间的关联关系映射。 </p>
<p>&nbsp;该对象模型最终将访问控制模型转化为访问矩阵形式。访问矩阵中的行对应于用户，列对应于操作，每个矩阵元素规定了相应的角色，对应于相应的目标被准予的访问许可、实施行为。按访问矩阵中的行看，是访问能力表CL(Access Capabilities)的内容；按访问矩阵中的列看，是访问控制表ACL（Access Control Lists）的内容。<br>数据模型图如下：<br><img alt="" src="http://www.cnblogs.com/images/cnblogs_com/ghd258/E7BC79F85D858074EA8CA68302BD6370.JPG" border="0" height="768" width="576"></p>
<p>&nbsp;希望各位多提意见 ,再完善</p><img src ="http://www.cnblogs.com/ghd258/aggbug/532611.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47945/" target="_blank">Firefox 3.5本月晚些时候即首次升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>ASP.NET 中处理页面“回退”的方法 </title><link>http://www.cnblogs.com/ghd258/archive/2006/10/18/532047.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Wed, 18 Oct 2006 00:39:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/10/18/532047.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/532047.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/10/18/532047.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/532047.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/532047.html</trackback:ping><description><![CDATA[<div class=postText>
<p><font face=Tahoma>我们在编写基于&nbsp;ASP.NET 的应用程序时，如果代码执行出错或检测到异常，一般会提示用户&#8220;返回&#8221;或&#8220;回退&#8221;，或者在多步操作、列表/详细的查看界面中，也会给用户提供回退到上一页面的链接，对于这种情况，大家很快就会想到的简单做法就是利用 Javascript 来实现，即 history.go(-1) ，但是由于 ASP.NET 页面的 PostBack 机制，所以 history.go(-1) 可能还是当前页面，而不能真正回退到上一页面。</font></p>
<p><font face=Tahoma>在 Classifieds Site Starter Kit 中，学习到一种不错的关于回退的处理方法，可以分别在客户端和服务器控件中实现页面的回退，代码如下：</font></p>
<p><font face=Tahoma><strong>1）首先在页面中增加两个属性</strong></font></p>
<font face=Tahoma>
<pre><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
<div><img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">记录上一个页面的信息</span><span style="COLOR: #008000"></div>
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> UrlReferrer
<img id=Codehighlighter_52_224_Open_Image onclick="this.style.display='none'; Codehighlighter_52_224_Open_Text.style.display='none'; Codehighlighter_52_224_Closed_Image.style.display='inline'; Codehighlighter_52_224_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter_52_224_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_52_224_Closed_Text.style.display='none'; Codehighlighter_52_224_Open_Image.style.display='inline'; Codehighlighter_52_224_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top>    </span><span id=Codehighlighter_52_224_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=Codehighlighter_52_224_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">
<img id=Codehighlighter_74_139_Open_Image onclick="this.style.display='none'; Codehighlighter_74_139_Open_Text.style.display='none'; Codehighlighter_74_139_Closed_Image.style.display='inline'; Codehighlighter_74_139_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_74_139_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_74_139_Closed_Text.style.display='none'; Codehighlighter_74_139_Open_Image.style.display='inline'; Codehighlighter_74_139_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter_74_139_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=Codehighlighter_74_139_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> ViewState[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">UrlReferrer</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">] </span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">;
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">
<img id=Codehighlighter_161_217_Open_Image onclick="this.style.display='none'; Codehighlighter_161_217_Open_Text.style.display='none'; Codehighlighter_161_217_Closed_Image.style.display='inline'; Codehighlighter_161_217_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_161_217_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_161_217_Closed_Text.style.display='none'; Codehighlighter_161_217_Open_Image.style.display='inline'; Codehighlighter_161_217_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter_161_217_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=Codehighlighter_161_217_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            ViewState[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">UrlReferrer</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> value;
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>    }</span></span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top>
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">记录 PostBack 的次数</span><span style="COLOR: #008000">
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> NumPostBacks
<img id=Codehighlighter_281_622_Open_Image onclick="this.style.display='none'; Codehighlighter_281_622_Open_Text.style.display='none'; Codehighlighter_281_622_Closed_Image.style.display='inline'; Codehighlighter_281_622_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter_281_622_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_281_622_Closed_Text.style.display='none'; Codehighlighter_281_622_Open_Image.style.display='inline'; Codehighlighter_281_622_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top>    </span><span id=Codehighlighter_281_622_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=Codehighlighter_281_622_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">
<img id=Codehighlighter_303_537_Open_Image onclick="this.style.display='none'; Codehighlighter_303_537_Open_Text.style.display='none'; Codehighlighter_303_537_Closed_Image.style.display='inline'; Codehighlighter_303_537_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_303_537_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_303_537_Closed_Text.style.display='none'; Codehighlighter_303_537_Open_Image.style.display='inline'; Codehighlighter_303_537_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter_303_537_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=Codehighlighter_303_537_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (ViewState[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">NumPostBacks</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)ViewState[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">NumPostBacks</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">];
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">
<img id=Codehighlighter_440_527_Open_Image onclick="this.style.display='none'; Codehighlighter_440_527_Open_Text.style.display='none'; Codehighlighter_440_527_Closed_Image.style.display='inline'; Codehighlighter_440_527_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_440_527_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_440_527_Closed_Text.style.display='none'; Codehighlighter_440_527_Open_Image.style.display='inline'; Codehighlighter_440_527_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>            </span><span id=Codehighlighter_440_527_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=Codehighlighter_440_527_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                ViewState[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">NumPostBacks</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }</span></span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">
<img id=Codehighlighter_559_616_Open_Image onclick="this.style.display='none'; Codehighlighter_559_616_Open_Text.style.display='none'; Codehighlighter_559_616_Closed_Image.style.display='inline'; Codehighlighter_559_616_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_559_616_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_559_616_Closed_Text.style.display='none'; Codehighlighter_559_616_Open_Image.style.display='inline'; Codehighlighter_559_616_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter_559_616_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=Codehighlighter_559_616_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            ViewState[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">NumPostBacks</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> value;
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>    }</span></span></pre>
<pre><span><span style="COLOR: #000000"></span></span>&nbsp;</pre>
<p></font><strong><font face="宋体, MS Song">2）在 Page_Load 事件记录上一页面地址、更新 Postback 次数、设置回退链接的地址</font></strong></p>
<pre>
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><font face="宋体, MS Song"><img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top></font><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> 记录上一页面的信息或更新 PostBack 的次数</span><span style="COLOR: #008000">
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> Page_Load(</span><span style="COLOR: #0000ff">object</span><span style="COLOR: #000000"> sender, EventArgs e)
<img id=Codehighlighter_94_440_Open_Image onclick="this.style.display='none'; Codehighlighter_94_440_Open_Text.style.display='none'; Codehighlighter_94_440_Closed_Image.style.display='inline'; Codehighlighter_94_440_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter_94_440_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_94_440_Closed_Text.style.display='none'; Codehighlighter_94_440_Open_Image.style.display='inline'; Codehighlighter_94_440_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top>    </span><span id=Codehighlighter_94_440_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=Codehighlighter_94_440_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">Page.IsPostBack)
<img id=Codehighlighter_135_257_Open_Image onclick="this.style.display='none'; Codehighlighter_135_257_Open_Text.style.display='none'; Codehighlighter_135_257_Closed_Image.style.display='inline'; Codehighlighter_135_257_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_135_257_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_135_257_Closed_Text.style.display='none'; Codehighlighter_135_257_Open_Image.style.display='inline'; Codehighlighter_135_257_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>        </span><span id=Codehighlighter_135_257_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=Codehighlighter_135_257_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (Request.UrlReferrer </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.UrlReferrer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Request.UrlReferrer.ToString();
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>        }</span></span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            NumPostBacks</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> goBackSteps </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> NumPostBacks </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        BackLink.NavigateUrl </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> String.Format(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript:history.go(-{0});</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, goBackSteps);
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>    }</span></span></div>
</pre>
<p><strong></strong>&nbsp;</p>
<p><strong>3）直接在代码中处理回退操作（如 Back_Click），可以直接调用如下方法</strong></p>
<pre>
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">在代码中回退</span><span style="COLOR: #008000">
<img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> ReturnToPreviousPage()
<img id=Codehighlighter_59_241_Open_Image onclick="this.style.display='none'; Codehighlighter_59_241_Open_Text.style.display='none'; Codehighlighter_59_241_Closed_Image.style.display='inline'; Codehighlighter_59_241_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter_59_241_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_59_241_Closed_Text.style.display='none'; Codehighlighter_59_241_Open_Image.style.display='inline'; Codehighlighter_59_241_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top>    </span><span id=Codehighlighter_59_241_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=Codehighlighter_59_241_Open_Text><span style="COLOR: #000000">{
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000"> referrer </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> UrlReferrer;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (referrer </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            Response.Redirect(referrer);
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            Response.Redirect(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">~/default.aspx</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>    }<br><br>来自：<a href="http://blog.joycode.com/moslem/archive/2006/10/17/85307.aspx">http://blog.joycode.com/moslem/archive/2006/10/17/85307.aspx</a></span></span></div>
</pre>
</div>
<img src ="http://www.cnblogs.com/ghd258/aggbug/532047.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47945/" target="_blank">Firefox 3.5本月晚些时候即首次升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>在 ASP.NET 上实现锁定表头、支持滚动的表格的做法 </title><link>http://www.cnblogs.com/ghd258/archive/2006/10/12/527741.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Thu, 12 Oct 2006 12:54:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/10/12/527741.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/527741.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/10/12/527741.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/527741.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/527741.html</trackback:ping><description><![CDATA[<p><font face=Tahoma>首先看看 CodeProject 上的两个东西</font></p>
<p><font face=Tahoma><strong>1、The Freeze Pane DataGrid</strong> （</font><a href="http://www.codeproject.com/aspnet/FreezePaneDatagrid.asp"><font face=Tahoma>http://www.codeproject.com/aspnet/FreezePaneDatagrid.asp</font></a><font face=Tahoma>）</font></p>
<p><font face=Tahoma>利用文章中提到做法及代码，可以实现在 ASP.NET 1.1 上的、支持横向滚动与纵向滚动的表格，基本上是使用 CSS 实现的，比较简单。</font></p>
<p><font face=Tahoma>在 ASP.NET 2.0 上，由于文档 HTML DOCKTYPE 发生了变化（HTML-&gt;XHTML），所以在使用原文中的横向滚动条会出现问题，但是使用纵向滚动条和锁定表头没有问题。</font></p>
<p><font face=Tahoma>这种做法没有考虑页面 PostBack 时记录表格的滚动位置，使得用户不得不重新去寻找刚才选中/编辑的那条记录，这比较的不人性化。</font></p>
<p><font face=Tahoma><strong>2、ScrollingGrid: A cross-browser freeze-header two-way scrolling DataGrid</strong>（</font><a href="http://www.codeproject.com/aspnet/ScrollingGrid.asp"><font face=Tahoma>http://www.codeproject.com/aspnet/ScrollingGrid.asp</font></a><font face=Tahoma>）</font></p>
<p><font face=Tahoma>此文章利用 Panel 控件和 DataGrid 控件实现了 ASP.NET 1.1 下的完整的、可实现双向滚动、表头锁定的表格，而且它实现了可以记录表格的滚动位置，页面 PostBack 后，表格仍能自动滚动到原有位置。这个控件的一个最大优点是能够适应多种浏览器，如 Internet Explorer 、FireFox 等。</font></p>
<p><font face=Tahoma>在 ASP.NET 平台上，由于 DataGrid 控件已经升级为 GridView ，所以此控件已不能使用，按照文章下面的讨论，作者声称会尽快升级控件，但似乎在实现时碰到一些麻烦（如何确实表头各列的宽度），目前还没有结果。</font></p>
<p><strong><font face=Tahoma>目前我的做法：</font></strong></p>
<ol>
    <li><font face=Tahoma>参照文章1中提到的作法，利用 CSS 来实现锁定表头的功能</font>
    <li><font face=Tahoma>利用 Panel 控件，设置 ScrollBar 为 Vertical，再在其中放入 GridView 控件&nbsp;，可以实现竖向滚动条的功能</font>
    <li><font face=Tahoma>利用 Atlas ，将上述 Panel 再放入 UpdatePanel ，以透明实现保持滚动条位置的功能</font></li>
</ol>
<p><font face=Tahoma><strong>示例代码：</p>
<pre>
<div><!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><img src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">h1</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">滚动条表格演示h1&gt;
<img id=Codehighlighter_38_752_Open_Image onclick="this.style.display='none'; Codehighlighter_38_752_Open_Text.style.display='none'; Codehighlighter_38_752_Closed_Image.style.display='inline'; Codehighlighter_38_752_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter_38_752_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_38_752_Closed_Text.style.display='none'; Codehighlighter_38_752_Open_Image.style.display='inline'; Codehighlighter_38_752_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">style </span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="text/css"</span><span style="COLOR: #0000ff">&gt;</span><span id=Codehighlighter_38_752_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=Codehighlighter_38_752_Open_Text><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5">...
<img id=Codehighlighter_45_49_Open_Image onclick="this.style.display='none'; Codehighlighter_45_49_Open_Text.style.display='none'; Codehighlighter_45_49_Closed_Image.style.display='inline'; Codehighlighter_45_49_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_45_49_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_45_49_Closed_Text.style.display='none'; Codehighlighter_45_49_Open_Image.style.display='inline'; Codehighlighter_45_49_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>th </span><span id=Codehighlighter_45_49_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=Codehighlighter_45_49_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">...</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span></span><span id=Codehighlighter_50_222_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=Codehighlighter_50_222_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>border-right</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5"> 1px solid silver</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>position</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">relative</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">
<img id=Codehighlighter_204_207_Open_Image onclick="this.style.display='none'; Codehighlighter_204_207_Open_Text.style.display='none'; Codehighlighter_204_207_Closed_Image.style.display='inline'; Codehighlighter_204_207_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter_204_207_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_204_207_Closed_Text.style.display='none'; Codehighlighter_204_207_Open_Image.style.display='inline'; Codehighlighter_204_207_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>top</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">:</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5"> expression(this.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.scrollTop-2)</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;</span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5"> </span><span id=Codehighlighter_204_207_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=Codehighlighter_204_207_Open_Text><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">/**/</span></span><span id=Codehighlighter_208_220_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=Codehighlighter_208_220_Open_Text><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">/*</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">IE5+ only</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">*/</span></span><span style="COLOR: #ff0000; BACKGROUND-COLOR: #f5f5f5">
<img src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">}</span></span><span style="COLOR: #800000; BACKGROUND-COLOR: #f5f5f5">
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>style&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>&lt;atlas:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="True"&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>atlas:ScriptManager&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>&lt;br /&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>&lt;asp:Panel ID="GridPanel" runat="server" Height="250px" ScrollBars="Auto" Width="562px"&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>   &lt;atlas:UpdatePanel ID="UpdatePanel1" runat="server"&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>       &lt;ContentTemplate&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>         &lt;asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" SkinID="GridView" Width="434px"&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>          &lt;/asp:GridView&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>       &lt;/ContentTemplate&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>   &lt;/atlas:UpdatePanel&gt;
<img src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>&lt;/asp:Panel&gt;</span></div>
</pre>
</span></strong></font>
<p>这样能基本上实现一个能够锁定表头、竖向滚动、能够在页面PostBack时保持滚动位置的表格，能够满足大部分应用需要。</p>
<img src ="http://www.cnblogs.com/ghd258/aggbug/527741.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47944/" target="_blank">Google App Engine出现故障宕机6小时</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>事半功倍系列之javascript (转载)</title><link>http://www.cnblogs.com/ghd258/archive/2006/08/19/481320.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Sat, 19 Aug 2006 08:14:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/08/19/481320.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/481320.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/08/19/481320.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/481320.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/481320.html</trackback:ping><description><![CDATA[摘要: 第一章javascript简介1.在地址栏输入javascript语句Javascript:Document.write("显示文字")2.将javascript嵌入HTML文档&lt;scriptlanguage=javascript&gt;document.bgColor="blue"&lt;/script&gt;第二章使用变量和数组1.声明变量&lt;scriptlanguage=javas&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2006/08/19/481320.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/481320.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47943/" target="_blank">消息称Facebook今年营收将达5.5亿美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>利用键盘上的上下左右（回车）键模拟出tab 键的功能上下左右移动焦点</title><link>http://www.cnblogs.com/ghd258/archive/2006/07/29/462720.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Sat, 29 Jul 2006 04:20:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/07/29/462720.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/462720.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/07/29/462720.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/462720.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/462720.html</trackback:ping><description><![CDATA[摘要: &lt;scriptlanguage="javascript"&gt;functiondoKeyDown(obj){switch(event.keyCode){case13:case39:case40:if(obj.nextid!="")document.all(obj.nextid).select();break;case37:case38:if(obj.preid!="")document.a&nbsp;&nbsp;<a href='http://www.cnblogs.com/ghd258/archive/2006/07/29/462720.html'>阅读全文</a><img src ="http://www.cnblogs.com/ghd258/aggbug/462720.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47937/" target="_blank">微软8月25日开始通过WSUS推送IE8</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>通过避免下列 10 个常见 ASP.NET 缺陷使网站平稳运行（转载）</title><link>http://www.cnblogs.com/ghd258/archive/2006/07/15/451386.html</link><dc:creator>高海东</dc:creator><author>高海东</author><pubDate>Sat, 15 Jul 2006 07:24:00 GMT</pubDate><guid>http://www.cnblogs.com/ghd258/archive/2006/07/15/451386.html</guid><wfw:comment>http://www.cnblogs.com/ghd258/comments/451386.html</wfw:comment><comments>http://www.cnblogs.com/ghd258/archive/2006/07/15/451386.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/ghd258/comments/commentRss/451386.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ghd258/services/trackbacks/451386.html</trackback:ping><description><![CDATA[<table style="MARGIN-TOP: 7px; MARGIN-BOTTOM: 12px" cellSpacing=0 cellPadding=0 border=0>
    <tbody>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E3B"><img height=9 alt="LoadControl 和输出缓存" hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E3B">LoadControl 和输出缓存</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E6C"><img height=9 alt=会话和输出缓存 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E6C">会话和输出缓存</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E6D"><img height=9 alt="Forms 身份验证票证生存期" hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E6D">Forms 身份验证票证生存期</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#ENE"><img height=9 alt=视图状态：无声的性能杀手 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#ENE">视图状态：无声的性能杀手</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#ECF"><img height=9 alt="SQL Server 会话状态：另一个性能杀手" hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#ECF">SQL Server 会话状态：另一个性能杀手</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E4F"><img height=9 alt=未缓存的角色 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#E4F">未缓存的角色</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EFG"><img height=9 alt=配置文件属性序列化 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EFG">配置文件属性序列化</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EWG"><img height=9 alt=线程池饱和 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EWG">线程池饱和</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EDH"><img height=9 alt="模拟和 ACL 授权" hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EDH">模拟和 ACL 授权</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EMH"><img height=9 alt="不要完全信赖它 — 请设置数据库的配置文件！" hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EMH">不要完全信赖它 — 请设置数据库的配置文件！</a></td>
        </tr>
        <tr vAlign=top>
            <td><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EZH"><img height=9 alt=结论 hspace=4 src="http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_down.gif" width=7 vspace=2 border=0></a></td>
            <td class=onThisPage><a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#EZH"></a></td>
        </tr>
    </tbody>
</table>
<p>ASP.NET 成功的其中一个原因在于它降低了 Web 开发人员的门槛。即便您不是计算机科学博士也可以编写 ASP.NET 代码。我在工作中遇到的许多 ASP.NET 开发人员都是自学成材的，他们在编写 C# 或 Visual Basic&#174; 之前都在编写 Microsoft&#174; Excel&#174; 电子表格。现在，他们在编写 Web 应用程序，总的来说，他们所做的工作值得表扬。</p>
<p>但是与能力随之而来的还有责任，即使是经验丰富的 ASP.NET 开发人员也难免会出错。在多年的 ASP.NET 项目咨询工作中，我发现某些错误特别容易导致缺陷不断发生。其中某些错误会影响性能。其他错误会抑制可伸缩性。有些错误还会使开发团队耗费宝贵的时间来跟踪错误和意外的行为。</p>
<p>下面是会导致 ASP.NET 生产应用程序的发布过程中出现问题的 10 个缺陷以及可避免它们的方法。所有示例均来自我对真实的公司构建真实的 Web 应用程序的亲身体验，在某些情况下，我会通过介绍 ASP.NET 开发团队在开发过程中遇到的一些问题来提供相关的背景。</p>
<h2>LoadControl 和输出缓存</h2>
<p>极少有不使用用户控件的 ASP.NET 应用程序。在出现母版页之前，开发人员使用用户控件来提取公用内容，如页眉和页脚。即使在 ASP.NET 2.0 中，用户控件也提供了有效的方法来封装内容和行为以及将页面分为多个区域，这些区域的缓存能力可以独立于作为整体的页面进行控制（一种称为段缓存的特殊输出缓存形式）。</p>
<p>用户控件可以采用声明的方式加载，也可以强制加载。强制加载依赖于 Page.LoadControl，它实例化用户控件并返回控件引用。如果用户控件包含自定义类型的成员（例如，公共属性），则您可以转换该引用并从您的代码访问自定义成员。<a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig1" target=_blank>图 1</a>中的用户控件实现名为 BackColor 的属性。以下代码加载用户控件并向 BackColor 分配一个值：</p>
<pre class=codeSample>protected void Page_Load(object sender, EventArgs e)
{
// 加载用户控件并将其添加到页面中
Control control = LoadControl("~/MyUserControl.ascx");
PlaceHolder1.Controls.Add(control);
// 设置其背景色
((MyUserControl)control).BackColor = Color.Yellow;
}
</pre>
<p>以上代码实际上很简单，但却是一个等待粗心的开发人员掉进去的陷阱。您能找出其中的破绽吗？ </p>
<p>如果您猜到该问题与输出缓存有关，那么您是正确的。正如您所看到的一样，上述代码示例编译和运行都正常，但是如果尝试将以下语句（完全合法）添加到 MyUserControl.ascx 中：</p>
<pre class=codeSample>&lt;%@ OutputCache Duration="5" VaryByParam="None" %&gt;
</pre>
<p>则当您下一次运行该页面时，您将看到 InvalidCastException (oh joy!) 和以下错误消息：</p>
<pre class=codeSample>&#8220;无法将类型为&#8216;System.Web.UI.PartialCachingControl&#8217;的对象转换为类型&#8216;MyUserControl&#8217;。&#8221;
</pre>
<p>因此，此代码在没有 OutputCache 指令时运行正常，但如果添加了 OutputCache 指令就会出错。ASP.NET 不应该以这种方式运行。页面（和控件）对于输出缓存应该是不可知的。那么，这代表什么意思？</p>
<p>问题在于为用户控件启用输出缓存时，LoadControl 不再返回对控件实例的引用；相反，它返回对 PartialCachingControl 实例的引用，而 PartialCachingControl 可能会也可能不会包装控件实例，具体取决于控件的输出是否被缓存。因此，如果开发人员调用 LoadControl 以动态加载用户控件并且为了访问控件特定的方法和属性而转换控件引用，他们必须注意进行该操作的方式，以便不管是否具有 OutputCache 指令，代码都可以运行。</p>
<p><a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig2" target=_blank>图 2</a> 说明动态加载用户控件以及转换返回的控件引用的正确方法。以下是其工作原理概要： </p>
<table cellSpacing=0 cellPadding=0 border=0>
    <tbody>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>如果 ASCX 文件缺少 OutputCache 指令，则 LoadControl 返回一个 MyUserControl 引用。Page_Load 将该引用转换为 MyUserControl 并设置控件的 BackColor 属性。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>如果 ASCX 文件包括一个 OutputCache 指令并且控件的输出没有被缓存，则 LoadControl 返回一个对 PartialCachingControl 的引用，此 PartialCachingControl 的 CachedControl 属性包含对基础 MyUserControl 的引用。Page_Load 将 PartialCachingControl.CachedControl 转换为 MyUserControl 并设置该控件的 BackColor 属性。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>如果 ASCX 文件包括一个 OutputCache 指令并且控件的输出被缓存，则 LoadControl 返回一个对 PartialCachingControl（其 CachedControl 属性为空）的引用。注意，Page_Load 不再继续执行操作。无法设置控件的 BackColor 属性，因为该控件的输出来源于输出缓存。换句话说，根本没有要设置属性的 MyUserControl。</p>
            </td>
        </tr>
    </tbody>
</table>
<p>不管 .ascx 文件中是否具有 OutputCache 指令，<a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig2" target=_blank>图 2</a>中的代码都将运行。虽然看起来复杂一点，但它会避免烦人的错误。简单并不总是代表易于维护。</p>
<h2>会话和输出缓存</h2>
<p>谈到输出缓存，ASP.NET 1.1 和 ASP.NET 2.0 都存在一个潜在的问题，该问题会影响在 Windows Server&#8482; 2003 和 IIS 6.0 上运行的服务器中的输出缓存页。我曾经亲眼看到该问题在 ASP.NET 生产服务器中出现过两次，这两次都是通过关闭输出缓冲来解决的。后来我了解到有一个比禁用输出缓存更好的解决方案。以下是我第一次遇到该问题时的情况。</p>
<p>当时的情况是这样的，某个网站（我们在此称为 Contoso.com，它在小型 ASP.NET Web 领域中运行公共电子商务应用程序）与我的团队联系，抱怨他们遇到了&#8220;跨线程&#8221;错误。使用 Contoso.com 网站的客户常常突然丢失已经输入的数据，但却看到另一用户的相关数据。稍做分析即发现，跨线程这个描述并不准确；&#8220;跨会话&#8221;错误更为贴切。看起来 Contoso.com 是在会话状态中存储数据的，由于某些原因，用户会偶尔随机地连接到其他用户的会话。</p>
<p>我的一个团队成员编写了一个诊断工具，用来将每个 HTTP 请求和响应的关键要素（包括 Cookie 标头）记录到日志中。然后，他将该工具安装在 Contoso.com 的 Web 服务器上，并让其运行了几天。结果非常明显。大概每 100000 个请求中会发生一次这样的情况：ASP.NET 正确地为全新会话分配一个会话 ID 并返回 Set-Cookie 标头中的会话 ID。然后，它会在下一个紧相邻的请求中返回相同的会话 ID（即，相同的 Set-Cookie 标头），即使该请求已经与一个有效的会话相关联并且正确提交了 Cookie 中的会话 ID。实际上，ASP.NET 是随机将用户从他们自己的会话中切换出去并将他们连接到其他会话。</p>
<p>我们很惊讶，于是开始寻找原因。我们首先检查了 Contoso.com 的源代码，让我们感到欣慰的是，问题不在那。接着，为了确保问题与应用程序宿主在 Web 领域无关，我们只保留一个服务器在运行，而关闭了所有其他服务器。问题仍然存在，这并不意外，因为我们的日志显示匹配的 Set-Cookie 标头绝不会来自两个不同的服务器。ASP.NET 意外地生成了重复的会话 ID，这令人难以置信，因为它使用 .NET Framework RNGCryptoServiceProvider 类生成这些 ID，并且会话 ID 的长度足以确保相同的 ID 决不会生成两次（至少在下一个万亿年内不会生成两次）。除此之外，即使 RNGCryptoServiceProvider 错误地生成了重复的随机数字，也无法解释 ASP.NET 为何不可思议地将有效的会话 ID 替换为新的 ID（不唯一）。</p>
<p>凭直觉，我们决定看一下输出缓存。当 OutputCacheModule 缓存 HTTP 响应时，它必须小心不要缓存了 Set-Cookie 标头；否则，包含新会话 ID 的缓存响应会将缓存响应的所有接收者（以及其请求生成了缓存响应的用户）连接到同一会话。我们检查了源代码；Contoso.com 在两个页面中启用了输出缓存。我们关闭了输出缓存。结果，应用程序运行数天而没有发生一个跨会话问题。此后，它运行了两年多都没有发生任何错误。在具有不同应用程序和一组不同 Web 服务器的另一家公司中，我们看到完全相同的问题也消失了。就像在 Contoso.com 一样，消除输出缓存就能解决问题。</p>
<p>Microsoft 后来确认此行为源于 OutputCacheModule 中的问题。（当您阅读本文时，可能已经发布了更新。）当 ASP.NET 与 IIS 6.0 一起使用并且启用内核模式缓存时，OutputCacheModule 有时无法从它传递给 Http.sys 的缓存响应中删除 Set-Cookie 标头。下面是导致出现错误的特定事件顺序： </p>
<table cellSpacing=0 cellPadding=0 border=0>
    <tbody>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>最近没有访问网站（因此也没有对应的会话）的用户请求一个启用了输出缓存的页面，但是其输出当前在缓存中不可用。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>该请求执行用于访问用户最新创建的会话的代码，从而导致会话 ID Cookie 在响应的 Set-Cookie 标头中返回。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>OutputCacheModule 向 Http.sys 提供输出，但是无法从响应中删除 Set-Cookie 标头。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>Http.sys 在后续的请求中返回缓存响应，误将其他用户连接到会话。</p>
            </td>
        </tr>
    </tbody>
</table>
<p>故事的寓意又是什么呢?会话状态和内核模式输出缓存不能混合使用。如果您在启用输出缓存的页中使用会话状态，并且应用程序在 IIS 6.0 上运行，则您需要关闭内核模式输出缓存。您仍将受益于输出缓存，但是因为内核模式输出缓存比普通输出缓存快得多，所以缓存不会同样有效。有关此问题的详细信息，请参见 <a href="http://support.microsoft.com/kb/917072" target=_blank>support.microsoft.com/kb/917072</a>。</p>
<p>您可以通过在页面的 OutputCache 指令中包含 VaryByParam="*" 属性来关闭单个页面的内核模式输出缓存，虽然这样做可能导致内存需求骤增。另一种更安全的方法是通过在 web.config 中包含下列元素来关闭整个应用程序的内核模式缓存：</p>
<pre class=codeSample>&lt;httpRuntime enableKernelOutputCache="false" /&gt;
</pre>
<p>您还可以使用注册表设置来全局性地禁用内核模式输出缓存，即禁用全部服务器的内核模式输出缓存。有关详细信息，请参见 <a href="http://support.microsoft.com/kb/820129" target=_blank>support.microsoft.com/kb/820129</a>。 </p>
<p>每次我听到客户报告会话发生了费解的问题，我都会询问他们是否在任何页面中使用了输出缓存。如果确实使用了输出缓存，并且宿主操作系统是 Windows Server 2003，我会建议他们禁用内核模式输出缓存。问题通常就会迎刃而解。如果问题没有解决，则错误存在于代码中。警惕!</p>
<h2>Forms 身份验证票证生存期</h2>
<p>您能找出以下代码的问题吗？</p>
<pre class=codeSample>FormsAuthentication.RedirectFromLoginPage(username, true);
</pre>
<p>此代码看似没有问题，但决不能在 ASP.NET 1.x 应用程序中使用，除非应用程序中其他位置的代码抵消了此语句的负面作用。如果您不能确定原因，请继续阅读。 </p>
<p>FormsAuthentication.RedirectFromLoginPage 执行两个任务。首先，当 FormsAuthenticationModule 将用户重定向到登录页时，FormsAuthentication.RedirectFromLoginPage 将用户重定向到他们原来请求的页面。其次，它发布一个身份验证票证（通常携带在 Cookie 中，而且在 ASP.NET 1.x 中总是携带在 Cookie 中），这个票证允许用户在预定的一段时间内保持已经过身份验证状态。</p>
<p>问题就在于这个时间段。在 ASP.NET 1.x 中，向 RedirectFromLoginPage 传递另一个为 false 的参数会发出一个临时身份验证票证，该票证默认情况下在 30 分钟之后到期。（您可以使用 web.config 的 元素中的 Timeout 属性来更改超时期限。）然而，传递另一个为 true 的参数则会发出一个永久身份验证票证，其有效期为 50 年!这样就会发生问题，因为如果有人窃取了该身份验证票证，他们就可以在票证的有效期内使用受害者的身份访问网站。窃取身份验证票证有多种方法 — 在公共无线访问点探测未加密的通信、跨网站编写脚本、以物理方式访问受害者的计算机等等 — 因此，向 RedirectFromLoginPage 传递 true 比禁用您的网站的安全性好不了多少。幸运的是，此问题已经在 ASP.NET 2.0 中得到了解决。现在的 RedirectFromLoginPage 以相同的方式接受在 web.config 中为临时和永久身份验证票证指定的超时。</p>
<p>一种解决方案是决不在 ASP.NET 1.x 应用程序的 RedirectFromLoginPage 的第二个参数中传递 true。但是这不切实际，因为登录页的特点通常是包含一个&#8220;将我保持为登录状态&#8221;框，用户可以选中该框以收到永久而不是临时身份验证 Cookie。另一种解决方案是使用 Global.asax（如果您愿意的话，也可以使用 HTTP 模块）中的代码段，此代码段会在包含永久身份验证票证的 Cookie 返回浏览器之前对其进行修改。</p>
<p><a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig3" target=_blank>图 3</a> 包含一个这样的代码段。如果此代码段位于 Global.asax 中，它会修改传出永久 Forms 身份验证 Cookie 的 Expires 属性，以使 Cookie 在 24 小时后过期。通过修改注释为&#8220;新的过期日期&#8221;的行，您可以将超时设置为您喜欢的任何日期。</p>
<p>您可能会觉得奇怪，Application_EndRequest 方法调用本地 Helper 方法 (GetCookieFromResponse) 来检查身份验证 Cookie 的传出响应。Helper 方法是解决 ASP.NET 1.1 中另一个错误的方法，如果您使用 HttpCookieCollection 的字符串索引生成器来检查不存在的 Cookie，此错误会导致虚假 Cookie 添加到响应中。使用整数索引生成器作为 GetCookieFromResponse 可以解决该问题。</p>
<h2>视图状态：无声的性能杀手</h2>
<p>从某种意义上说，视图状态是有史以来最伟大的事情。毕竟，视图状态使得页面和控件能够在回发之间保持状态。因此，您不必像在传统的 ASP 中那样编写代码，以防止在单击按钮时文本框中的文本消失，或在回发后重新查询数据库和重新绑定 DataGrid。</p>
<p>但是视图状态也有缺点：当它增长得过大时，它便成为一个无声的性能杀手。某些控件（例如文本框）会根据视图状态作出相应判断。其他控件（特别是 DataGrid 和 GridView）则根据显示的信息量确定视图状态。如果 GridView 显示 200 或 300 行数据，我会望而生畏。即使 ASP.NET 2.0 视图状态大致是 ASP.NET 1 x 视图状态的一半大小，一个糟糕的 GridView 也可以容易地将浏览器和 Web 服务器之间的连接的有效带宽减少 50％ 或更多。</p>
<p>您可以通过将 EnableViewState 设置为 false 来关闭单个控件的视图状态，但某些控件（特别是 DataGrid）在不能使用视图状态时会失去某些功能。控制视图状态的更佳解决方案是将其保留在服务器上。在 ASP.NET 1.x 中，您可以重写页面的 LoadPageStateFromPersistenceMedium 和 SavePageStateToPersistenceMedium 方法并按您喜欢的方式处理视图状态。<a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig4" target=_blank>图 4</a> 中的代码显示的重写可防止视图状态保留在隐藏字段中，而将其保留在会话状态中。当与默认会话状态进程模型一起使用时（即，会话状态存储在内存中的 ASP.NET 辅助进程中时），在会话状态中存储视图状态尤其有效。相反，如果会话状态存储在数据库中，则只有测试才能显示在会话状态中保留视图状态会提高还是降低性能。</p>
<p>在 ASP.NET 2.0 中使用相同的方法，但是 ASP.NET 2.0 能够提供更简单的方法将视图状态保留在会话状态中。首先，定义一个自定义页适配器，其 GetStatePersister 方法返回 .NET Framework SessionPageStatePersister 类的一个实例：</p>
<pre class=codeSample>public class SessionPageStateAdapter :
System.Web.UI.Adapters.PageAdapter
{
public override PageStatePersister GetStatePersister ()
{
return new SessionPageStatePersister(this.Page);
}
}
</pre>
<p>然后，通过将 App.browsers 文件按以下方式放入应用程序的 App_Browsers 文件夹，将自定义页适配器注册为默认页适配器： </p>
<pre class=codeSample>&lt;browsers&gt;
&lt;browser refID="Default"&gt;
&lt;controlAdapters&gt;
&lt;adapter controlType="System.Web.UI.Page"
adapterType="SessionPageStateAdapter" /&gt;
&lt;/controlAdapters&gt;
&lt;/browser&gt;
&lt;/browsers&gt;
</pre>
<p>（您可以将文件命名为您喜欢的任何名称，只要它的扩展名为 .browsers 即可。）此后，ASP.NET 将加载页适配器并使用返回的 SessionPageStatePersister 以保留所有页面状态，包括视图状态。 </p>
<p>使用自定义页适配器的一个缺点是它全局性地作用于应用程序中的每一页。如果您更愿意将其中一些页面的视图状态保留在会话状态中而不保留其他页面的视图状态，请使用<a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig4" target=_blank>图 4</a> 中显示的方法。另外，如果用户在同一会话中创建多个浏览器窗口，您使用该方法可能会遇到问题。</p>
<h2>SQL Server 会话状态：另一个性能杀手</h2>
<p>ASP.NET 使得在数据库中存储会话状态变得简单：只需切换 web.config 中的开关，会话状态就会轻松地移动到后端数据库。对于在 Web 领域中运行的应用程序来说，这是一项重要功能，因为它允许该领域中的每个服务器共享会话状态的一个公共库。添加的数据库活动降低了单个请求的性能，但是可伸缩性的提高弥补了性能的损失。</p>
<p>这看起来都还不错，但是您略微考虑一下下列几点，情况就会有所不同： </p>
<table cellSpacing=0 cellPadding=0 border=0>
    <tbody>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>即使在使用会话状态的应用程序中，大多数页也不使用会话状态。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>默认情况下，ASP.NET 会话状态管理器对每个请求中的会话数据存储执行两个访问（一个读取访问和一个写入访问），而不管请求的页是否使用会话状态。</p>
            </td>
        </tr>
    </tbody>
</table>
<p>换句话说，当您使用 SQL Server&#8482; 会话状态选项时，您在每个请求中都要付出代价（两个数据库访问）— 甚至在与会话状态无关的页面的请求中。这会直接对整个网站的吞吐量造成负面影响。</p>
<div style="WIDTH: 400px"><img height=126 alt=a src="http://www.microsoft.com/china/msdn/library/webservices/asp.net/art/fig05.gif" width=400 border=0><br>
<p class=figureCaption><b>图 5 消除不必要的会话状态数据库访问</b></p>
<div class=figureRule></div>
</div>
<p>那么您应该怎么办呢？很简单：禁用不使用会话状态的页中的会话状态。这样做总是一个好办法，但是当会话状态存储在数据库中时，该方法尤其重要。图 5 显示如何禁用会话状态。如果页面根本不使用会话状态，请在其 Page 指令中包含 EnableSessionState="false"，如下所示：</p>
<pre class=codeSample>&lt;%@ Page EnableSessionState="false" ... %&gt;
</pre>
<p>该指令阻止会话状态管理器在每个请求中读取和写入会话状态数据库。如果页面从会话状态中读取数据，但却不写入数据（即，不修改用户会话的内容），则将 EnableSessionState 设置为 ReadOnly，如下所示：</p>
<pre class=codeSample>&lt;%@ Page EnableSessionState="ReadOnly" ... %&gt;
</pre>
<p>最后，如果页面需要对会话状态进行读/写访问，则省略 EnableSessionState 属性或将其设置为 true：</p>
<pre class=codeSample>&lt;%@ Page EnableSessionState="true" ... %&gt;
</pre>
<p>通过以这种方式控制会话状态，可以确保 ASP.NET 只在真正需要时才访问会话状态数据库。消除不必要的数据库访问是构建高性能应用程序的第一步。 </p>
<p>顺便说一下，EnableSessionState 属性是公开的。该属性自 ASP.NET 1.0 以来就已经进行了说明,但是我至今仍很少见到开发人员利用该属性。也许是因为它对于内存中的默认会话状态模型并不十分重要。但是它对于 SQL Server 模型却很重要。</p>
<h2>未缓存的角色</h2>
<p>以下语句经常出现于 ASP.NET 2.0 应用程序的 web.config 文件以及介绍 ASP.NET 2.0 角色管理器的示例中：</p>
<pre class=codeSample>&lt;roleManager enabled="true" /&gt;
</pre>
<p>但正如以上所示，该语句确实会对性能产生明显的负面影响。您知道为什么吗？ </p>
<p>默认情况下，ASP.NET 2.0 角色管理器不会缓存角色数据。相反，它会在每次需要确定用户属于哪个角色（如果有）时参考角色数据存储。这意味着一旦用户经过了身份验证，任何利用角色数据的页（例如，使用启用了安全裁减设置的网站图的页，以及使用 web.config 中基于角色的 URL 指令进行访问受到限制的页）将导致角色管理器查询角色数据存储。如果角色存储在数据库中，那么对于每个请求需要访问多个数据库的情况，您可以轻松地免除访问多个数据库。解决方案是配置角色管理器以在 Cookie 中缓存角色数据：</p>
<pre class=codeSample>&lt;roleManager enabled="true" cacheRolesInCookie="true" /&gt;
</pre>
<p>您可以使用其他&lt;roleManager&gt; 属性控制角色 Cookie 的特征 — 例如，Cookie 应保持有效的期限（以及角色管理器因此返回角色数据库的频率）。角色 Cookie 默认情况下是经过签名和加密的，因此安全风险虽然不为零，但也有所缓解。 </p>
<h2>配置文件属性序列化</h2>
<p>ASP.NET 2.0 配置文件服务为保持每个用户的状态（例如个性化首选项和语言首选项）的问题提供了一个现成的解决方案。要使用配置文件服务，您可以定义一个 XML 配置文件，其中包含要保留的代表单个用户的属性。然后，ASP.NET 编译一个包含相同属性的类，并通过添加到页的配置文件属性提供对类实例的强类型访问。</p>
<p>配置文件灵活性很强，它甚至允许将自定义数据类型用作配置文件属性。但是，其中却存在一个问题，我亲眼看到该问题导致开发人员出差错。<a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig6" target=_blank>图 6</a> 包含一个名为 Posts 的简单类，以及将 Posts 用作配置文件属性的配置文件定义。但是，该类和该配置文件在运行时会产生意外的行为。您能找出其中的原因吗？</p>
<p>问题在于 Posts 包含一个名为 _count 的私有字段，该字段必须进行序列化和反序列化，才能完全冻结和重新冻结类实例。但是 _count 却没有经过序列化和反序列化，因为它是私有的，而且默认情况下 ASP.NET 配置文件管理器使用 XML 序列化对自定义类型进行序列化和反序列化。XML 序列化程序将忽略非公共成员。因此，会对 Posts 的实例进行序列化和反序列化，但是每次反序列化类实例时，_count 都会重设为 0。</p>
<p>一种解决方案是使 _count 成为公共字段而非私有字段。另一种解决方案是使用公共读/写属性封装 _count。最佳解决方案是将 Posts 标记为可序列化（使用 SerializableAttribute），并将配置文件管理器配置为使用 .NET Framework 二进制序列化程序对类实例进行序列化和反序列化。该解决方案能够保持类本身的设计。与 XML 序列化程序不同的是，二进制序列化程序序列化字段，而不管是否可以访问。<a href="http://msdn.microsoft.com/msdnmag/issues/06/07/WebAppFollies/default.aspx?fig=true#fig7" target=_blank>图 7</a> 显示 Posts 类的修复版本并突出显示了更改的附带配置文件定义。</p>
<p>您应该牢记的一点是，如果您使用自定义数据类型作为配置文件属性，并且该数据类型具有必须序列化才能完全序列化类型实例的非公共数据成员，则在属性声明中使用 serializeAs="Binary" 属性并确保类型本身是可序列化的。否则，将无法进行完整的序列化，并且您还将浪费时间来尝试确定配置文件无法工作的原因。</p>
<h2>线程池饱和</h2>
<p>在执行数据库查询并等待 15 秒或更长时间来获得返回的查询结果时，我经常对看到的实际的 ASP.NET 页数感到非常惊讶。（我也等待了 15 分钟才看到查询结果！）有时，延迟是由于返回的数据量很大而导致的不可避免的无奈结果；而有时，延迟则是由于数据库的设计不佳导致的。但不管是什么原因，长时间的数据库查询或任何类型的长时间 I/O 操作在 ASP.NET 应用程序中都会导致吞吐量的下降。</p>
<p>关于这个问题我以前已经详细地描述过，所以在此就不再作过多的说明了。我只说一点就够了，ASP.NET 依赖于有限的线程池处理请求，如果所有线程都被占用来等待数据库查询、Web 服务调用或其他 I/O 操作完成，则在某个操作完成并且释放出一个线程之前，其他请求都必须排队等待。当请求排队时，性能会急剧下降。如果队列已满，则 ASP.NET 会使随后的请求失败并出现 HTTP 503 错误。这种情况不是我们希望在 Web 生产服务器的生产应用程序上所乐见的。</p>
<p>解决方案非异步页面莫属，这是 ASP.NET 2.0 中最佳却鲜为人知的功能之一。对异步页面的请求从一个线程上开始，但是当它开始一个 I/O 操作时，它将返回该线程以及 ASP.NET 的 IAsyncResult 接口。操作完成后，请求通过 IAsyncResult 通知 ASP.NET，ASP.NET 从池中提取另一个线程并完成对请求的处理。值得注意的是，当 I/O 操作发生时，没有占用线程池线程。这样可以通过阻止其他页面（不执行较长的 I/O 操作的页面）的请求在队列中等待，从而显著地提高吞吐量。</p>
<p>您可以在 MSDN&#174;Magazine 的 <a href="http://msdn.microsoft.com/msdnmag/issues/05/10/WickedCode" target=_blank>2005 年 10 月刊</a>中阅读有关异步页面的所有信息。I/O 绑定而不是计算机绑定且需要很长时间执行的任何页面很有可能成为异步页面。</p>
<p>当我将关于异步页面的信息告知开发人员时，他们经常回答&#8220;那真是太棒了，但是我的应用程序中并不需要它们。&#8221;对此我回答说：&#8220;你们的任何页面需要查询数据库吗？它们调用 Web 服务吗？您是否已经检查 ASP.NET 性能计数器中关于排队请求和平均等待时间的统计信息？即使您的应用程序至今运行正常，但是随着您的客户规模的增长，应用程序的负载可能会增加。&#8221; </p>
<p>实际上，绝大多数实际的 ASP.NET 应用程序都需要异步页面。请切记这一点！</p>
<div style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><a class=topOfPage href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#top"></a>&nbsp;</div>
<h2>模拟和 ACL 授权</h2>
<p>以下是一个简单的配置指令，但是每当在 web.config 中看到它时都让我眼前一亮：</p>
<pre class=codeSample>&lt;identity impersonate="true" /&gt;
</pre>
<p>此指令在 ASP.NET 应用程序中启用客户端模拟。它将代表客户端的访问令牌附加到处理请求的线程，以便操作系统执行的安全性检查针对的是客户端身份而不是辅助进程身份。ASP.NET 应用程序很少需要模拟；我的经验告诉我，开发人员通常都是由于错误的原因而启用模拟的。以下是原因所在。</p>
<p>开发人员经常在 ASP.NET 应用程序中启用模拟，以便可以使用文件系统权限来限制对页面的访问。如果 Bob 没有查看 Salaries.aspx 的权限，则开发人员将会启用模拟，以便可以通过将访问控制列表 (ACL) 设置为拒绝 Bob 的读取权限，阻止 Bob 查看 Salaries.aspx。但是存在以下隐患：对于 ACL 授权来说，模拟是不必要的。在 ASP.NET 应用程序中启用 Windows 身份验证时，ASP.NET 会自动为请求的每个 .aspx 页面检查 ACL 并拒绝没有读取文件权限的调用者的请求。即使禁用了模拟，它仍会这样操作。</p>
<p>有的时候需要证明模拟的合理性。但是您通常可以用良好的设计来避免它。例如，假定 Salaries.aspx 在数据库中查询只有管理人员才能知道的工资信息。通过模拟，您可以使用数据库权限拒绝非管理人员查询工资数据的能力。或者您可以不考虑模拟，并且通过为 Salaries.aspx 设置 ACL 以使非管理人员不具有读取权限，从而限制对工资数据的访问。后一种方法提供的性能更佳，因为它完全避免了模拟。它也消除了不必要的数据库访问。为什么查询数据库仅由于安全原因被拒绝？</p>
<p>顺便说一下，我曾经帮助对一个传统的 ASP 应用程序进行故障排除，该应用程序由于内存占用不受限制而定期重新启动。一个没有经验的开发人员将目标 SELECT 语句转换成了 SELECT *，而没有考虑要查询的表包含图像，这些图像很大而且数目很多。问题由于未检测到内存泄漏而恶化。（我的托管代码领域！）多年来运行正常的应用程序开始突然停止工作，因为以前返回一两千字节数据的 SELECT 语句现在却返回了几兆字节。如果再加上不充分的版本控制，开发团队的生活将不得不&#8220;亢奋起来&#8221;— 这里所谓的&#8220;亢奋&#8221;，就如同当您在晚上要睡觉时，还不得不看着您的孩子玩令人厌烦的足球游戏一样。</p>
<p>理论上，传统的内存泄漏不会发生在完全由托管代码组成的 ASP.NET 应用程序中。但是内存使用量不足会通过强制垃圾收集更频繁地发生而影响性能。即使是在 ASP.NET 应用程序中，也要警惕 SELECT *!</p>
<div style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px"><a class=topOfPage href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/WebAppFollies.mspx#top"></a>&nbsp;</div>
<h2>不要完全信赖它 — 请设置数据库的配置文件！</h2>
<p>作为一名顾问，我经常被询问为何应用程序没有按预期执行。最近，有人询问我的团队为何 ASP.NET 应用程序只完成请求文档所需吞吐量（每秒的请求数）的大约 1/100。我们以前所发现的问题是我们在不能正常运行的 Web 应用程序中发现的问题特有的 — 和我们所有人应该认真对待的教训。</p>
<p>我们运行 SQL Server Profiler 并监视此应用程序和后端的数据库之间的交互情况。在一个更极端的案例中，仅仅只是一个按钮单击，就导致数据库发生了 1,500 多个错误。您不能那样构建高性能的应用程序。良好的体系结构总是从良好的数据库设计开始。不管您的代码的效率有多高，如果它被编写不佳的数据库所拖累，就会不起作用。</p>
<p>糟糕的数据访问体系结构通常源于下面的一个或多个方面： </p>
<table cellSpacing=0 cellPadding=0 border=0>
    <tbody>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>拙劣的数据库设计（通常由开发人员设计，而不是数据库管理员）。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>DataSets 和 DataAdapters 的使用 — 尤其是 DataAdapter.Update，它适用于 Windows 窗体应用程序和其他胖客户端，但是对于 Web 应用程序来说通常不理想。 </p>
            </td>
        </tr>
        <tr>
            <td class=listBullet vAlign=top>&#8226;</td>
            <td class=listItem>
            <p>具有拙劣编制计算程序、以及执行相对简单的操作需消耗很多 CPU 周期的设计糟糕的数据访问层 (DAL)。</p>
            </td>
        </tr>
    </tbody>
</table>
<p>必须先确定问题才能对其进行处理。确定数据访问问题的方式是运行 SQL Server Profiler 或等效的工具以查看后台正在执行的操作。检查应用程序和数据库之间的通信之后，性能调整才完成。尝试一下 — 您可能会对您的发现大吃一惊。</p>
<img src ="http://www.cnblogs.com/ghd258/aggbug/451386.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47935/" target="_blank">暴风称新旧版更换完毕 总计超4000万用户换装</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>