<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_汤包学技术</title><subtitle type="text">好好学习，天天向上~~！</subtitle><id>http://feed.cnblogs.com/blog/u/41055/rss</id><updated>2011-10-27T09:44:28Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/41055/rss"/><entry><id>http://www.cnblogs.com/jianglai11/archive/2011/10/27/2226881.html</id><title type="text">单例模式 泛型</title><summary type="text">单例模式 泛型</summary><published>2011-10-27T09:43:00Z</published><updated>2011-10-27T09:43:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2011/10/27/2226881.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2011/10/27/2226881.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0in; font-family: SimSun; font-size: 10.5pt;"&gt;很早就知道单例模式了，但是始终没有仔细看过，虽然写代码的时候也比较常用，但是注意到的也比较少。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0in; font-family: SimSun; font-size: 10.5pt;"&gt;今天刚好有时间，突然看到项目中的好多代码都在类中直接写的单例，然后就想弄个泛型的岂不是能更好一些。就简单的写了些代码，注释和总结了一下。写完了第一种后上网查查，然后发现还有很多的实现方法&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0in; font-size: 10.5pt;"&gt;&lt;span style="font-family: SimSun;" lang="zh-CN"&gt;下面列了&lt;/span&gt;&lt;span style="font-family: Calibri;" lang="en-US"&gt;3&lt;/span&gt;&lt;span style="font-family: SimSun;" lang="zh-CN"&gt;种实现，内部类的那个是在网上看到&lt;/span&gt;&lt;span style="font-family: Calibri;" lang="en-US"&gt;java&lt;/span&gt;&lt;span style="font-family: SimSun;" lang="zh-CN"&gt;的。就算做个学习备份吧。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0in; font-size: 10.5pt;"&gt;&lt;span style="font-family: SimSun;" lang="zh-CN"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0in; font-size: 10.5pt;"&gt;&lt;span style="font-family: SimSun;" lang="zh-CN"&gt;单例类：&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('3d28c826-62d8-48d1-a40d-c4c9ccdc2676')"&gt;&#xD;
&lt;div id="cnblogs_code_open_3d28c826-62d8-48d1-a40d-c4c9ccdc2676" &gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; ConsoleSingletonTest&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;     * 单例模式（Singleton） 泛型 单例模式&lt;br /&gt;     * 定义：单例模式的意思就是只有一个实例（整个应用程序的生命周期中）。单例模式确保某一个类只有一个实例，而且自行实例化并向整个系统提供这个实例。这个类称为单例类。（百度百科~~！）&lt;br /&gt;     * 要点：  一是某个类只能有一个实例；&lt;br /&gt;     *         二是它必须自行创建这个实例；&lt;br /&gt;     *         三是它必须自行向整个系统提供这个实例。&lt;br /&gt;     * create by jt 2011-10-27&lt;br /&gt;     &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MySingleton&amp;lt;T&amp;gt; &lt;span style="color: #0000ff;"&gt;where&lt;/span&gt; T : &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;new()，new不支持非公共的无参构造函数 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;#region&lt;/span&gt; 实现一&lt;br /&gt;        &lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;         * 单线程测试通过！&lt;br /&gt;         * 多线程测试通过！&lt;br /&gt;         * 根据需要在调用的时候才实例化单例类！&lt;br /&gt;          &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; T _instance ;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;readonly&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; SyncObject = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;();&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; T GetInstance()&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (_instance == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;没有第一重 singleton == null 的话，每一次有线程进入 GetInstance()时，均会执行锁定操作来实现线程同步，&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;非常耗费性能 增加第一重singleton ==null 成立时的情况下执行一次锁定以实现线程同步&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;lock&lt;/span&gt; (SyncObject)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (_instance == &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;)&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Double-Check Locking 双重检查锁定&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                    {&lt;br /&gt;                        &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;_instance = new T();&lt;br /&gt;                        &lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;需要非公共的无参构造函数，不能使用new T() ,new不支持非公共的无参构造函数 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                        _instance = (T)Activator.CreateInstance(&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;(T), &lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;); &lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;第二个参数防止异常：&amp;ldquo;没有为该对象定义无参数的构造函数。&amp;rdquo;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; _instance;&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; SetInstance(T value)&lt;br /&gt;        {&lt;br /&gt;            _instance = value;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;#region&lt;/span&gt; 实现二&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;         * 单线程测试通过！&lt;br /&gt;         * 多线程测试通过！&lt;br /&gt;         * 主动实例化单例类！&lt;br /&gt;         * 注：使用静态初始化的话，无需显示地编写线程安全代码，C# 与 CLR 会自动解决多线程同步问题&lt;br /&gt;         * &lt;br /&gt;        &lt;br /&gt;        private static readonly T Instance = (T)Activator.CreateInstance(typeof(T), true);&lt;br /&gt;&lt;br /&gt;        public static T GetInstance()&lt;br /&gt;        {&lt;br /&gt;            return Instance;&lt;br /&gt;        }&lt;br /&gt;         &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;#region&lt;/span&gt; 实现三&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;         &lt;br /&gt;         * 单线程测试通过！&lt;br /&gt;         * 多线程测试通过！&lt;br /&gt;         *主动实例化单例类！&lt;br /&gt;         * 注：使用静态初始化的话，无需显示地编写线程安全代码，C# 与 CLR 会自动解决多线程同步问题&lt;br /&gt;          &lt;br /&gt;        MySingleton() { }&lt;br /&gt;        public static T GetInstance()&lt;br /&gt;        {&lt;br /&gt;            return SingletonCreator.Instance;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        class SingletonCreator&lt;br /&gt;        {&lt;br /&gt;            static SingletonCreator() { }&lt;br /&gt;            internal static readonly T Instance = (T)Activator.CreateInstance(typeof(T), true);// new T();&lt;br /&gt;        }&lt;br /&gt;         * &lt;br /&gt;         &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #008000;"&gt;/*&lt;/span&gt;&lt;span style="color: #008000;"&gt;内部类&lt;br /&gt;         * 创建内部类的一个目的是为了抽象外部类的某一状态下的行为，&lt;br /&gt;         * 或者C#内部类仅在外部类的某一特定上下文存在。或是隐藏实现，&lt;br /&gt;         * 通过将内部类设为private，可以设置仅有外部类可以访问该类。&lt;br /&gt;         * 内部类的另外一个重要的用途是当外部类需要作为某个特定的类工作，&lt;br /&gt;         * 而外部类已经继承与另外一个类的时候，因为C#不支持多继承，&lt;br /&gt;         * 所以创建一个对应的内部类作为外部类的一个facade来使用。 &lt;br /&gt;         &lt;/span&gt;&lt;span style="color: #008000;"&gt;*/&lt;/span&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p style="margin: 0in; font-size: 10.5pt;"&gt;&lt;span style="font-family: SimSun;" lang="zh-CN"&gt;测试：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0in; font-size: 10.5pt;"&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('7e8c074f-f1d0-4d07-a7ff-02b60197d4b8')"&gt;&#xD;
&lt;div id="cnblogs_code_open_7e8c074f-f1d0-4d07-a7ff-02b60197d4b8" &gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Diagnostics;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Text;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Threading;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; ConsoleSingletonTest&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;for&lt;/span&gt; (&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt; i = &lt;span style="color: #800080;"&gt;0&lt;/span&gt;; i &amp;lt; &lt;span style="color: #800080;"&gt;100&lt;/span&gt;; i++)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff;"&gt;var&lt;/span&gt; thread = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Thread(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ThreadStart(Run));&lt;br /&gt;                thread.Start();&lt;br /&gt;            }&lt;br /&gt;            Console.Read();&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Run()&lt;br /&gt;        {&lt;br /&gt;            Console.WriteLine(MySingleton&amp;lt;MyJob&amp;gt;.GetInstance().Write());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; MyJob&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; _timeSpan;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; MyJob()&lt;br /&gt;        {&lt;br /&gt;            _timeSpan = DateTime.Now.Millisecond.ToString();&lt;br /&gt;        }&lt;br /&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Write()&lt;br /&gt;        {&lt;br /&gt;            Debug.WriteLine(_timeSpan);&lt;br /&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; _timeSpan;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p style="margin: 0in; font-size: 10.5pt;"&gt;&lt;/p&gt;&#xD;
&lt;p style="margin: 0in; font-size: 10.5pt;"&gt;&lt;span style="font-family: SimSun;" lang="zh-CN"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/2226881.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2011/10/27/2226881.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2011/01/07/1929702.html</id><title type="text">看《.net， 哥已心灰意冷 》这篇文章有感</title><summary type="text">原文地址：http://www.cnblogs.com/zlfucku/archive/2010/11/29/1891463.html?page=1#pagedcomment很久没看博客园了，今天再导数据700多w。。要等一阵子，忙里偷闲就逛了逛。看了上面那个文章，虽然是牢骚一大堆，但说的东西不免有些现状，它就是事实嘛。看了n页的评论呵呵各样的都有吧。居然还有说是五毛的。。。我觉得应该不会是水军或者5m之类的吧。我也发发牢骚吧呵呵。从毕业到现在也有3年半了吧，自己本身也不是个科班出身的程序员，专业是管理信息系统。上学的时候其实是以理论为主吧，上完了脑子里也没什么大概的概念只知道mis系统就是把</summary><published>2011-01-07T06:01:00Z</published><updated>2011-01-07T06:01:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2011/01/07/1929702.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2011/01/07/1929702.html"/><content type="html">&lt;p&gt;原文地址：&lt;a href="http://www.cnblogs.com/zlfucku/archive/2010/11/29/1891463.html?page=1#pagedcomment"&gt;http://www.cnblogs.com/zlfucku/archive/2010/11/29/1891463.html?page=1#pagedcomment&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;很久没看博客园了，今天再导数据700多w。。要等一阵子，忙里偷闲就逛了逛。&lt;/p&gt;&#xD;
&lt;p&gt;看了上面那个文章，虽然是牢骚一大堆，但说的东西不免有些现状，它就是事实嘛。看了n页的评论呵呵各样的都有吧。居然还有说是五毛的。。。&lt;/p&gt;&#xD;
&lt;p&gt;我觉得应该不会是水军或者5m之类的吧。&lt;/p&gt;&#xD;
&lt;p&gt;我也发发牢骚吧呵呵。&lt;/p&gt;&#xD;
&lt;p&gt;从毕业到现在也有3年半了吧，自己本身也不是个科班出身的程序员，专业是管理信息系统。上学的时候其实是以理论为主吧，上完了脑子里也没什么大概的概念&lt;/p&gt;&#xD;
&lt;p&gt;只知道mis系统就是把纸办公变成电子办公~~！（不仅是办公吧，也找不到什么好词来修饰）。学了一点点编程的基础，还有乱七八糟的一堆诸如管理，会计，金融，纺织，编程，硬件的课程。脑子都乱了。。。&lt;/p&gt;&#xD;
&lt;p&gt;出来找工作的时候就麻烦。不知道究竟要找什么方向的，经过考虑，软件开发吧，听说是比较赚钱吧。其他与人打交道的工作也不是很拿手，听说工作后都勾心斗角的，还是面对计算机心里坦诚些。&lt;/p&gt;&#xD;
&lt;p&gt;现状：转眼就工作了3年了，自己水平也就一般吧，赚 的不多，还能混口饭吃。基本上也属于月光一族。&lt;/p&gt;&#xD;
&lt;p&gt;在工作这几年发现了自己的很多问题，因为不是科班出身吧，做起工作来也只是碰到问题再去解决问题。一开始就从事了.net的开发。首先就是因为上手快，毕业的时候有的同学用java写的毕设，当时看了看，感觉搭个java环境还得手工去做那么多东西，然后写代码还一大堆东西找个控件都费劲，感觉java开发起来挺痛苦。。。所以也选择了。net呵呵。不过现在回想起来，自己当时的想法挺给力的，虽然现在也很想学java，做到两手抓，两手都要硬。但基于工作时间，暂时就先放弃了。毕竟.NET还在不断更细，有那多的东西要去学。（不学就落伍了）&lt;/p&gt;&#xD;
&lt;p&gt;3年的时间大部分时间都在curd吧，算起来可能有一年的时间做了一些非curd的工作。呵呵，都是初级的东西无非就是线程和一些公司内部的工具之类的。&lt;/p&gt;&#xD;
&lt;p&gt;刚毕业的时候，年轻而且很多东西确实都不会，努力是应该的。那时候加班也是比较狠吧，加班回家，从晚上6点到早晨6点基本上都打过车回家，而且几乎加班后第二天还是正常点去上班。只有一次是加到6点多吧（应该是2007年末的第一场雪），那次是下午上的班，结果更惨的是一只上到了第二天下午2点，然后回家休息。然后最惨的是回家就睡，6点的时候又被经理打电话喊回来加班了。&lt;/p&gt;&#xD;
&lt;p&gt;唉，现在回想起来，当时自己也是有不少怨言，但是自己也没有放弃，因为毕竟自己是个新手，肯定拖了项目不少的进度。那个时候能发个200块的新年福利就是美的屁颠屁颠的（虽然现在也是这副嘴脸。。）当时为什么没有放弃呢，一是真没钱，放弃了就该睡马路了。二是确实自己懂的少，很多真的是时间砸出来的。三，给别人打工做东西，至少要做完，不能做到一半就放弃了，这样不好。&lt;/p&gt;&#xD;
&lt;p&gt;。。会不会有新人说我这是在开导新人。呵呵真不是开导，算自己忏悔吧。&lt;/p&gt;&#xD;
&lt;p&gt;第一个公司干了一年，因为&amp;ldquo;个人原因&amp;rdquo;（md为什么员工离职都是因为个人原因，其实lztmd是因为跟ld意见****，算了不提了，唉只恨年少轻狂啊！）&lt;/p&gt;&#xD;
&lt;p&gt;然后刚好赶上奥运会快开幕了，俺离职了。继续求职，结果是，投了一月简历，在家看了20多天奥运会。NND，期间一个要面试的电话都没，难道所有公司都放假去看奥运会了？（奥运真的能拉动经济啊~~！）奥运会闭幕第二天，一下子来了5个要去面试的电话。。。我只好往后推日程。（现在想起来还美的不行。md老子也风光一次，推hr呵呵）&lt;/p&gt;&#xD;
&lt;p&gt;&amp;hellip;&amp;hellip;&amp;hellip;&amp;hellip;有工作了一会再写&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1929702.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2011/01/07/1929702.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/09/07/1820784.html</id><title type="text">如何成为一名合格的软件研发人员，或者说软件研发人员必备的素质有哪些！</title><summary type="text">如题，求解~~！如题，求解~~！如题，求解~~！如题，求解~~！如题，求解~~！</summary><published>2010-09-07T08:59:00Z</published><updated>2010-09-07T08:59:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/09/07/1820784.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/09/07/1820784.html"/><content type="html">&lt;p&gt;如题，求解~~！&lt;/p&gt;&#xD;
&lt;p&gt;如题，求解~~！&lt;/p&gt;&#xD;
&lt;p&gt;如题，求解~~！&lt;/p&gt;&#xD;
&lt;p&gt;如题，求解~~！&lt;/p&gt;&#xD;
&lt;p&gt;如题，求解~~！&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1820784.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/09/07/1820784.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/09/01/1815110.html</id><title type="text">GridView动态列绑定</title><summary type="text">动态绑定模板列的时候需要在需要再RowDataBind事件里面处理 1.因为在静态绑定中处理每一行的绑定都需要去实例化一个模板列itemplate，所以在动态绑定中具体的某一行绑定需要在ITemplate的InstantiateIn实现中去实例化一个控件，否则会出现只有最后一行记录出现该模板控件。2.同时需要注意的问题：a.skinid的绑定是需要在protected void Page_PreI...</summary><published>2010-09-01T09:48:00Z</published><updated>2010-09-01T09:48:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/09/01/1815110.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/09/01/1815110.html"/><content type="html">&lt;p&gt;&lt;span style="font-size:10pt"&gt;动态绑定模板列的时候&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;需要在&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;需要再RowDataBind事件里面处理 &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;1.因为在静态绑定中处理每一行的绑定都需要去实例化一个模板列itemplate，所以在动态绑定中具体的某一行绑定需要在ITemplate的InstantiateIn实现中去实例化一个控件，否则会出现只有最后一行记录出现该模板控件。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;2.同时需要注意的问题：&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;a.skinid的绑定是需要在protected void Page_PreInit(Object sender, EventArgs e)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;事件中去处理，所以不建议在动态列绑定的时候使用skinid，可以再相应的&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)里面去处理ImageUrl，或者相应的cssclass&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#0070c0; font-size:10pt"&gt;示例代码如下:&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table style="border-collapse:collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="width:485px"/&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;using System;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;using System.Collections.Generic;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;using System.Linq;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;using System.Text;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;using System.Web.UI;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;using System.Web.UI.WebControls;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;namespace Ths.DataCenter.Data.Common&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;{&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;    public class GridViewTemplate : ITemplate&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;    {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        private string _innerContorlName;       &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        private bool _isImgBtn = false;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        private string _ImageUrl = "Images/ico/delete.gif";&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        private string _SkinID = "link_Delete";&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        public GridViewTemplate(string lbName, bool isImgBtn, string strSkinID)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            _innerContorlName = lbName;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            _isImgBtn = isImgBtn;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            //_ImageUrl = ImageUrl;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        #region ITemplate 成员&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        public void InstantiateIn(Control container)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            if (!_isImgBtn)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                Label lb = new Label();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                lb.ID = _innerContorlName + "Lable";&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                lb.DataBinding += new EventHandler(lb_DataBinding);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                container.Controls.Add(lb);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            else&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                //连接按钮&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                //&amp;lt;asp:ImageButton skinid="link_Delete" runat="server" ImageUrl="Images/ico/delete.gif"&amp;gt;&amp;lt;/asp:ImageButton&amp;gt;    &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                ImageButton ib = new ImageButton();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                ib.ID = _innerContorlName + "ImageButton";&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;               ib.ImageUrl = _ImageUrl;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                ib.SkinID = _SkinID;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                ib.DataBinding += new EventHandler(ib_DataBinding);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                container.Controls.Add(ib);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        void ib_DataBinding(object sender, EventArgs e)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            ImageButton lbl = sender as ImageButton;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            GridViewRow gr = lbl.NamingContainer as GridViewRow;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            lbl.ToolTip = DataBinder.Eval(gr.DataItem, _innerContorlName).ToString();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            //           lbl. = DataBinder.Eval(gr.DataItem, _innerContorlName).ToString();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        void lb_DataBinding(object sender, EventArgs e)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            Label lbl = sender as Label;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            GridViewRow gr = lbl.NamingContainer as GridViewRow;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            lbl.Text = DataBinder.Eval(gr.DataItem, _innerContorlName).ToString();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        #endregion&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;    }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;调用如下：&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;table style="border-collapse:collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="width:485px"/&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr&gt;&lt;td style="padding-top: 5px; padding-left: 5px; padding-bottom: 5px; padding-right: 5px; border-top:  solid #a3a3a3 1.0pt; border-left:  solid #a3a3a3 1.0pt; border-bottom:  solid #a3a3a3 1.0pt; border-right:  solid #a3a3a3 1.0pt"&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;     private void SetHeaderVisable(GridView gridView)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            gridView.Columns.Clear();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            var selectFields = SelectColumns;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            BoundField bf = new BoundField();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            bf.HeaderText = "序号";&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            bf.DataField = "ROW_NUMBER";//固定序号列&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            gridView.Columns.Add(bf);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            TemplateField tf = new TemplateField();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            foreach (var obj in selectFields)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                switch (obj.Value)&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                    case "Longitude":&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        //模板绑定&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        tf = new TemplateField();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        tf.HeaderText = obj.Text;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        tf.HeaderStyle.Width = 40;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        tf.HeaderStyle.CssClass = "gd_center";&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        tf.ItemStyle.CssClass = "gd_center";&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        tf.ItemTemplate = new Ths.DataCenter.Data.Common.GridViewTemplate("Longitude", true, "link_GIS");&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        gridView.Columns.Add(tf);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        //绑定方式&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        break;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                    default:&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        bf = new BoundField();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        bf.ItemStyle.HorizontalAlign = HorizontalAlign.Center;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        bf.HeaderText = obj.Text;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        bf.DataField = obj.Value;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        bf.SortExpression = obj.Value;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        gridView.Columns.Add(bf);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                        break;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;                }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;            }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;        }&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:10pt"&gt;&lt;span style="background-color:yellow"&gt;扩展知识点：&lt;/span&gt;&lt;span style="font-family:宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333333; font-size:9pt"&gt;通过编程指定外观时，静态控件的&lt;span style="font-family:Times New Roman"&gt;SkinId&lt;/span&gt;属性只能在&lt;span style="font-family:Times New Roman"&gt;Page_PreInit&lt;/span&gt;事件之中或之前设置。动态创建的控件，应该在将该属性添加到控件集合之前设置。&lt;/span&gt;&lt;span style="font-size:10pt"&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1815110.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/09/01/1815110.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/07/23/1783874.html</id><title type="text">SqlDataReader.GetSchemaTable</title><summary type="text">Ado.net 获取数据库元数据信息最近一直和元数据打交道SqlDataReader.GetSchemaTable 方法	一定要创建一个可用的reader。。不要通过datatable.creater...</summary><published>2010-07-23T09:02:00Z</published><updated>2010-07-23T09:02:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/07/23/1783874.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/07/23/1783874.html"/><content type="html">&lt;p&gt;Ado.net 获取数据库元数据信息&#xD;
&lt;/p&gt;&lt;p&gt;最近一直和元数据打交道&#xD;
&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3f529c; font-size:15pt"&gt;&lt;strong&gt;&lt;span style="font-family:Segoe UI"&gt;SqlDataReader.GetSchemaTable &lt;/span&gt;&lt;span style="font-family:宋体"&gt;方法&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;一定要创建一个可用的reader。。&#xD;
&lt;/p&gt;&lt;p&gt;不要通过datatable.createreader.getshematable---这样获取出来的信息是不完全的。&#xD;
&lt;/p&gt;&lt;p&gt;简单copy了一下msdn的东西，做一个记录&#xD;
&lt;/p&gt;&lt;div&gt;&lt;table style="border-collapse:collapse" border="0"&gt;&lt;colgroup&gt;&lt;col style="width:201px"/&gt;&lt;col style="width:383px"/&gt;&lt;/colgroup&gt;&lt;tbody valign="top"&gt;&lt;tr style="height: 19px; background: #e5e5e5"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  solid #bbbbbb 0.75pt; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="color:black; font-size:13pt"&gt;&lt;span style="font-family:Segoe UI"&gt;DataReader &lt;/span&gt;&lt;span style="font-family:宋体"&gt;列&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  solid #bbbbbb 0.75pt; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="color:black; font-family:宋体; font-size:13pt"&gt;说明&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;ColumnName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;列的名称；它可能不唯一。如果无法确定该名称，则返回空值。此名称始终反映最近对当前视图或命令文本中的列进行的重命名。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;ColumnOrdinal&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;列的序号。它对于行的书签列（如果有的话）为零。其他列从一开始编号。该列不能包含空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;ColumnSize&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;列中值的最大可能长度。对于采用固定长度数据类型的列，它是该数据类型的大小。对于存储在 SQL Server 数据库中的 &lt;strong&gt;nvarchar(MAX)&lt;/strong&gt;、&lt;strong&gt;varchar(MAX)&lt;/strong&gt; 和&lt;strong&gt;varbinary(MAX)&lt;/strong&gt; 列，最大大小为 2GB。如果这些列以文件形式存储并访问，则对最大大小的限制由文件系统设定。在连接字符串中使用 &lt;strong&gt;Type System Version&lt;/strong&gt; 关键字时，该值会更改。对于新的类型，它们表示为下层类型。对于 &lt;strong&gt;nvarchar &lt;/strong&gt;，MAX 数据类型返回正常的 4k，而对于 &lt;strong&gt;varchar&lt;/strong&gt;，则为 8000。有关更多信息，请参见"SQL Server 联机丛书"中的"Transact-SQL 参考"。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;NumericPrecision&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果 &lt;strong&gt;ProviderType&lt;/strong&gt; 是数值数据类型，则它是列的最大精度。精度取决于列的定义。如果 &lt;strong&gt;ProviderType&lt;/strong&gt; 不是数值数据类型，则它为空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;NumericScale&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果 &lt;strong&gt;ProviderType&lt;/strong&gt; 是 DBTYPE_DECIMAL 或 DBTYPE_NUMERIC，则为小数点右侧的位数。否则，它为空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsUnique&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;只有对于 &lt;strong&gt;timestamp&lt;/strong&gt; 列才为 &lt;strong&gt;true&lt;/strong&gt;，而对于其他所有列，为 &lt;strong&gt;false&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsKey&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;true&lt;/strong&gt;：此列是行集合中合起来可唯一地标识该行的一组列中的一列。&lt;strong&gt;IsKey&lt;/strong&gt; 设置为&lt;strong&gt;true&lt;/strong&gt; 的一组列必须唯一地标识行集合中的一行。不要求此列集是最小列集。这组列可以从基表主键、唯一约束或唯一索引生成。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;false&lt;/strong&gt;：唯一地标识该行时不需要此列。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;BaseServerName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;SqlDataReader&lt;/strong&gt; 使用的 Microsoft SQL Server 实例的名称。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;BaseCatalogName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;包含列的数据存储区中的目录的名称。如果不能确定基目录名称，则为 NULL。该列的默认值为空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;BaseColumnName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;数据存储区中列的名称。如果使用别名，它可能不同于在 ColumnName 列中返回的列名称。如果无法确定基列名称，或者如果行集合列从数据存储区中的列导出但不等于该列，则为空值。该列的默认值为空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;BaseSchemaName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;包含列的数据存储区中的架构的名称。如果无法确定基架构名称，则为空值。该列的默认值为空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;BaseTableName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;包含列的数据存储区中的表或视图的名称。如果无法确定基表名称，则为空值。该列的默认值为空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;DataType&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;映射到列的 .NET Framework 类型。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;AllowDBNull&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果使用者可以将该列设置为空值，或者如果提供程序不能确定使用者是否可以将该列设置为空值，则设置该值。否则，不设置该值。即使列无法设置为空值，它仍可能包含空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;ProviderType&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;列的数据类型的指示符。如果不同行的列数据类型不同，则它必须为 Object。该列不能包含空值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsAliased&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果列名称为别名，则为 &lt;strong&gt;true&lt;/strong&gt;；否则为 &lt;strong&gt;false&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsExpression&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果此列为表达式，则为 &lt;strong&gt;true&lt;/strong&gt;；否则为 &lt;strong&gt;false&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsIdentity&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果此列为标识列，则为 &lt;strong&gt;true&lt;/strong&gt;；否则为 &lt;strong&gt;false&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsAutoIncrement&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;true&lt;/strong&gt;：该列以固定的增量向新行赋值。&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;&lt;strong&gt;false&lt;/strong&gt;：该列不以固定的增量向新行赋值。该列的默认值为 &lt;strong&gt;false&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsRowVersion&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果列包含无法写入的不变的行标识符，并且除了标识行外没有其他有意义的值，则设置该值。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsHidden&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果列是隐藏的，则为 &lt;strong&gt;true&lt;/strong&gt;；否则为 &lt;strong&gt;false&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsLong&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果列包含二进制长对象 (BLOB)（它包含非常长的数据），则设置该值。非常长的数据的定义针对于提供程序。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;IsReadOnly&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;如果不能修改该列，则为 &lt;strong&gt;true&lt;/strong&gt;；否则为 &lt;strong&gt;false&lt;/strong&gt;。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;ProviderSpecificDataType&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;根据连接字符串中的 &lt;strong&gt;Type System Version&lt;/strong&gt; 关键字，返回列的提供程序特定的数据类型。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;DataTypeName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;返回表示指定列的数据类型的字符串。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;XmlSchemaCollectionDataBase&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;此 XML 实例的架构集合所在的数据库的名称（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 空引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 &lt;strong&gt;Nothing&lt;/strong&gt;）。如果没有架构集合，则它也为空，这时 &lt;strong&gt;XmlSchemaCollectionName&lt;/strong&gt; 和&lt;strong&gt;XmlSchemaCollectionOwningSchema&lt;/strong&gt; 列也为空。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;XmlSchemaCollectionOwningSchema&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;此 XML 实例的架构集合所在的所属关系架构（如果该行包含有关 XML 列的信息）。如果在当前数据库中定义了该集合，则此值为 空引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 &lt;strong&gt;Nothing&lt;/strong&gt;）。如果没有架构集合，则它也为空，这时 &lt;strong&gt;XmlSchemaCollectionDatabase&lt;/strong&gt; 和 &lt;strong&gt;XmlSchemaCollectionName&lt;/strong&gt; 列也为空。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="background: white"&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  solid #bbbbbb 0.75pt; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;XmlSchemaCollectionName&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="padding-top: 4px; padding-left: 4px; padding-bottom: 4px; padding-right: 4px; border-top:  none; border-left:  none; border-bottom:  solid #bbbbbb 0.75pt; border-right:  solid #bbbbbb 0.75pt"&gt;&lt;p&gt;&lt;span style="font-family:宋体; font-size:12pt"&gt;此 XML 实例的架构集合的名称（如果该行包含有关 XML 列的信息）。如果没有关联的架构集合，则此值为 空引用（在 Visual Basic 中为 Nothing）（在 Visual Basic 中为 &lt;strong&gt;Nothing&lt;/strong&gt;）。如果此值为空，则 &lt;strong&gt;XmlSchemaCollectionDatabase&lt;/strong&gt; 和&lt;strong&gt;XmlSchemaCollectionOwningSchema&lt;/strong&gt; 列也为空。&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1783874.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/07/23/1783874.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/07/16/1779036.html</id><title type="text">随机GPS数据（地图坐标）</title><summary type="text">随机GPS数据（地图坐标）昨天又接了个小任务，还是GPS的，要做一个随机生成GPS坐标数据的工具，而且要求生成的数据不能太"离谱"，也就是说要在一定范围之内，因为是模拟车行，所以可能有个限速的要求吧，不能一辆汽车每小时1w公里的速度行驶。。那就~~！快下班接的任务~~！然后。。马上关机回家。。吃饭，看了会电视~~！11点了。。才想起来有任务。打开电脑~~！既然是不能太离谱。。那就要在某个范围内移动...</summary><published>2010-07-16T08:33:00Z</published><updated>2010-07-16T08:33:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/07/16/1779036.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/07/16/1779036.html"/><content type="html">&lt;p&gt;随机GPS数据（地图坐标）&#xD;
&lt;/p&gt;&lt;p&gt;昨天又接了个小任务，还是GPS的，要做一个随机生成GPS坐标数据的工具，而且要求生成的数据不能太"离谱"，也就是说要在一定范围之内，因为是模拟车行，所以可能有个限速的要求吧，不能一辆汽车每小时1w公里的速度行驶。。那就~~！&#xD;
&lt;/p&gt;&lt;p&gt;快下班接的任务~~！然后。。马上关机回家。。吃饭，看了会电视~~！11点了。。才想起来有任务。打开电脑~~！&#xD;
&lt;/p&gt;&lt;p&gt;既然是不能太离谱。。那就要在某个范围内移动。。唉，百度了下经纬度的2点距离公式~~！&#xD;
&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;double lat1,long1;//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;经度&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;,&lt;/span&gt;&lt;span style="font-family:宋体"&gt;纬度&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;1&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;double lat2,long2;//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;经度&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;,&lt;/span&gt;&lt;span style="font-family:宋体"&gt;纬度&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;2&#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;const float pi = float(3.1415926);//pi&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;const float EarthRadiu = float(6378.245);//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;地球半径&lt;/span&gt;&lt;span style="font-family:Verdana"&gt; &#xD;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;float Wei_Km = ( pi * EarthRadiu )/180 ; //&lt;/span&gt;&lt;span style="font-family:宋体"&gt;每度纬度多少公里&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;double lat0; //&lt;/span&gt;&lt;span style="font-family:宋体"&gt;比较纬度，取两点小纬度的那个&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;if(lat1&amp;lt;lat2) lat0 = lat1;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;else lat0 = lat2;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;Jing_Km = (pi * (EarthRadiu * float( cos(Lat*pi/180 ))))/180;//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;在&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;lat0&lt;/span&gt;&lt;span style="font-family:宋体"&gt;上，每度经度间的距离&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;double cx, cy, r;//x&lt;/span&gt;&lt;span style="font-family:宋体"&gt;方向距离，&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;y&lt;/span&gt;&lt;span style="font-family:宋体"&gt;方向距离，两点距离；&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;cx = abs(lat2-lat1) * Wei_Km;//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;根据纬度差计算距离&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-size:8pt"&gt;&lt;span style="font-family:Verdana"&gt;cy = abs(long2-long1)*Jing_Km;//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;根据经度差计算距离&lt;/span&gt;&lt;span style="font-family:Verdana"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:black; font-family:Verdana; font-size:8pt"&gt;r = sqrt(cx*cx + cy *cy);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;唉看了一大堆，三角函数。。。弧度。。。。公里。。英尺。。弄的头晕了。&#xD;
&lt;/p&gt;&lt;p&gt;以前算这个都是口算啊，唉，大学几年以后。。什么都忘记了~~！&#xD;
&lt;/p&gt;&lt;p&gt;还好我们有google，baidu，还有"病"。。信息检索这么发达的社会，还愁什么呢。唉~~！不会玩检索的人怎么冲浪呢~~！&#xD;
&lt;/p&gt;&lt;p&gt;检索了半天中文网页~~！没发现一个有用的，唉，直接google英文吧。Random longitude latitude  第一条记录俺就发现了想要的东西。。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.geomidpoint.com/random/calculation.html"&gt;http://www.geomidpoint.com/random/calculation.html&lt;/a&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;Calculation Methods - Random Points&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/071610_0832_GPS1.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;详细内容自己看去吧，呵呵看不懂有google翻译。&#xD;
&lt;/p&gt;&lt;p&gt;意思大概就是2种方法，一个圆形区域一个矩形区域。详细内容只能意会不能言转，因为感觉把英语翻译成汉语是件十分恶心的事情，所以就不多说了，&#xD;
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div style="text-align: justify"&gt;Circular region&#xD;
&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify"&gt;B. Rectangular region&#xD;
&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="color:blueviolet; font-family:Arial; font-size:12pt"&gt;&lt;strong&gt;Circular region calculation detail&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol style="margin-left: 58pt"&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Convert all latitudes and longitudes to radians.&#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;rand1 and rand2 are unique random numbers generated in the range 0 to 1.0.&#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Given the initial values startlat, startlon and maxdist. (maxdist is in miles or kms). &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;For the mean radius of the earth use:&lt;br/&gt;radiusEarth = 3960.056052 miles or radiusEarth = 6372.796924 km &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Convert maximum distance to radians.&lt;br/&gt;maxdist=maxdist/radiusEarth &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Compute a random distance from 0 to maxdist scaled so that points on larger circles have a greater probability of being chosen than points on smaller circles as described earlier.&lt;br/&gt;dist = acos(rand1*(cos(maxdist) - 1) + 1) &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Compute a random bearing from 0 to 2*PI radians (0 to 360 degrees), with all bearings having an equal probability of being chosen.&lt;br/&gt;brg = 2*PI*rand2 &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Use the starting point, random distance and random bearing to calculate the coordinates of the final random point.&lt;br/&gt;lat = asin(sin(startlat)*cos(dist) + cos(startlat)*sin(dist)*cos(brg))&lt;br/&gt;lon = startlon + atan2(sin(brg)*sin(dist)*cos(startlat), cos(dist)-sin(startlat)*sin(lat)) &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;If lon is less than -PI then:&lt;br/&gt;lon = lon + 2*PI&lt;br/&gt;If lon is greater than PI then:&lt;br/&gt;lon = lon - 2*PI &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="color:blueviolet; font-family:Arial; font-size:12pt"&gt;&lt;strong&gt;Circular region calculation detail&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol style="margin-left: 58pt"&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Convert all latitudes and longitudes to radians.&#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;rand1 and rand2 are unique random numbers generated in the range 0 to 1.0.&#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Given the initial values startlat, startlon and maxdist. (maxdist is in miles or kms). &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;For the mean radius of the earth use:&lt;br/&gt;radiusEarth = 3960.056052 miles or radiusEarth = 6372.796924 km &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Convert maximum distance to radians.&lt;br/&gt;maxdist=maxdist/radiusEarth &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Compute a random distance from 0 to maxdist scaled so that points on larger circles have a greater probability of being chosen than points on smaller circles as described earlier.&lt;br/&gt;dist = acos(rand1*(cos(maxdist) - 1) + 1) &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Compute a random bearing from 0 to 2*PI radians (0 to 360 degrees), with all bearings having an equal probability of being chosen.&lt;br/&gt;brg = 2*PI*rand2 &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;Use the starting point, random distance and random bearing to calculate the coordinates of the final random point.&lt;br/&gt;lat = asin(sin(startlat)*cos(dist) + cos(startlat)*sin(dist)*cos(brg))&lt;br/&gt;lon = startlon + atan2(sin(brg)*sin(dist)*cos(startlat), cos(dist)-sin(startlat)*sin(lat)) &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:black; font-family:Arial"&gt;If lon is less than -PI then:&lt;br/&gt;lon = lon + 2*PI&lt;br/&gt;If lon is greater than PI then:&lt;br/&gt;lon = lon - 2*PI &#xD;
&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;大概讲述了计算过程，正准备还是用c#进行解析上面的内容。。。看了一下首页的图标突然发现了很多功能~~！唉，有的时候还是要多点击一下的~~！&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/071610_0832_GPS2.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;Random point Generator哈哈这不是我正需要的么？&#xD;
&lt;/p&gt;&lt;p&gt;爱因斯坦都不记自己家的电话，咱何必费那劲用c#解释那2段方法呢？&#xD;
&lt;/p&gt;&lt;p&gt;打开&lt;a href="http://www.geomidpoint.com/random/"&gt;http://www.geomidpoint.com/random/&lt;/a&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;右键查看源码Ctrl+f 输入.js只有一个结果&#xD;
&lt;/p&gt;&lt;p style="background: white"&gt;&lt;span style="font-family:Courier New; font-size:12pt"&gt;&lt;span style="color:blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:maroon"&gt;script&lt;/span&gt;&lt;span style="color:blue"&gt;&#xD;
			&lt;/span&gt;&lt;span style="color:red"&gt;type&lt;/span&gt;&lt;span style="color:blue"&gt;="text/javascript" &lt;/span&gt;&lt;span style="color:red"&gt;src&lt;/span&gt;&lt;span style="color:blue"&gt;="jFunc.js"&amp;gt;&lt;/span&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;下载吧呵呵，虽然js方面是个小菜鸟，但是学习的精神是挡不住的~~！&#xD;
&lt;/p&gt;&lt;p&gt;点了跟烟，开始研究js~~！…………&#xD;
&lt;/p&gt;&lt;p&gt;主要算法&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;calculate()&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:宋体"&gt;其实就是用&lt;/span&gt;&lt;span style="font-family:微软雅黑"&gt;JavaScript&lt;/span&gt;&lt;span style="font-family:宋体"&gt;解释了一下上面那&lt;/span&gt;&lt;span style="font-family:微软雅黑"&gt;2&lt;/span&gt;&lt;span style="font-family:宋体"&gt;段英文&lt;/span&gt;&lt;span style="font-family:微软雅黑"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;好，c#转码~~！…………15分钟搞定，测试一下&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/071610_0832_GPS3.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/071610_0832_GPS4.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;~~!怎么随机出来的都是一样的。。。好吧线程休息一下&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/071610_0832_GPS5.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/071610_0832_GPS6.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;这次就对了，距离在设定的500Km以内，没什么问题。&#xD;
&lt;/p&gt;&lt;p&gt;睡了~~！&#xD;
&lt;/p&gt;&lt;p&gt;话说第二天~~！&#xD;
&lt;/p&gt;&lt;p&gt;来弄数据库的东西，根据数据库的设备生成"合理"数据&#xD;
&lt;/p&gt;&lt;p&gt;直接上图&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/071610_0832_GPS7.jpg" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;根据最大速度，在间隔时间内生成一个点，然后继续以最后的点为中心继续移动~~！&#xD;
&lt;/p&gt;&lt;p&gt;主要方法:&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;var&lt;/span&gt; cosdif = &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Cos(maxdist) - 1;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;var&lt;/span&gt; sinstartlat = &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Sin(startlat);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;var&lt;/span&gt; cosstartlat = &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Cos(startlat);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;double&lt;/span&gt; dist = 0;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:微软雅黑"&gt;&#xD;
				&lt;span style="color:blue"&gt;var&lt;/span&gt; rad360 = 2 * &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.PI;&lt;span style="color:green"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;圆&lt;span style="color:green"&gt;周率&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:微软雅黑"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:微软雅黑"&gt;&#xD;
				&lt;span style="color:blue"&gt;for&lt;/span&gt; (&lt;span style="color:blue"&gt;var&lt;/span&gt; i = 0; i &amp;lt; p; i++)&lt;span style="color:green"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;点&lt;span style="color:green"&gt;数&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:微软雅黑"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;            {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;&#xD;
			&lt;span style="color:green"&gt;//Thread.Sleep(100);&lt;/span&gt;&#xD;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:微软雅黑"&gt;                dist = &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Acos((&lt;span style="color:blue"&gt;new&lt;/span&gt;&#xD;
				&lt;span style="color:#2b91af"&gt;Random&lt;/span&gt;().NextDouble() * cosdif + 1));&lt;span style="color:green"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;随&lt;span style="color:green"&gt;机数&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:微软雅黑"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;                brg[0] = rad360 * &lt;span style="color:blue"&gt;new&lt;/span&gt;&#xD;
			&lt;span style="color:#2b91af"&gt;Random&lt;/span&gt;().NextDouble();&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;                lat = &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Asin(sinstartlat * &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Cos(dist) + cosstartlat * &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Sin(dist) * &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Cos(brg[0]));&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;                lon = deg(normalizeLongitude(startlon * 1 + &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Atan2(&lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Sin(brg[0]) * &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Sin(dist) * cosstartlat, &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Cos(dist) - sinstartlat * &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Sin(lat))));&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;                lat = deg(lat);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;                dist = &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Round(dist * radiusEarth * 10000) / 10000;&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:微软雅黑"&gt;                brg[0] = &lt;span style="color:#2b91af"&gt;Math&lt;/span&gt;.Round(deg(brg[0]) * 1000) / 1000;&lt;span style="color:green"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;随&lt;span style="color:green"&gt;机距离&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:微软雅黑"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;                rtnList.Add(&lt;span style="color:blue"&gt;new&lt;/span&gt;&#xD;
			&lt;span style="color:#2b91af"&gt;GPSData&lt;/span&gt;() { Latitude = padZeroRight(lat), longtitude = padZeroRight(lon), distance = dist.ToString(), bearing = brg[j].ToString() });&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:微软雅黑; font-size:9pt"&gt;            }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;就写到这里吧，也算个记录了~~！&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1779036.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/07/16/1779036.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/06/24/1764638.html</id><title type="text">Gridview行编辑，备份一下</title><summary type="text">一年前因为项目需要碰到了大量行编辑的表单~~！，写过一次gridview的行编辑。今天又碰到这个问题~~！ 看了下网上的写法大多数都是通过findcontrol的方法实现的，我也没想到好的办法，就简单的封装了一下。写的不好见谅~~！ 同事帮改成多表模式的了。现在拿出来看看感觉累赘了。。 先说说功能支持gridview增加行删除行，保持gridview中已存在的数据。 保存数据的处理方法写的不太好，...</summary><published>2010-06-24T10:23:00Z</published><updated>2010-06-24T10:23:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/06/24/1764638.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/06/24/1764638.html"/><content type="html">&lt;p&gt;一年前因为项目需要碰到了大量行编辑的表单~~！，写过一次gridview的行编辑。今天又碰到这个问题~~！ &lt;/p&gt;&#xD;
&lt;p&gt;看了下网上的写法大多数都是通过findcontrol的方法实现的，我也没想到好的办法，就简单的封装了一下。写的不好见谅~~！ &lt;/p&gt;&#xD;
&lt;p&gt;同事帮改成多表模式的了。现在拿出来看看感觉累赘了。。 &lt;/p&gt;&#xD;
&lt;p&gt;先说说功能支持gridview增加行删除行，保持gridview中已存在的数据。 &lt;/p&gt;&#xD;
&lt;p&gt;保存数据的处理方法写的不太好，想改进一下，但是没时间搞，先贴出来备份一下吧。欢迎指点。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在gridview中配置&lt;span style="font-size: 10pt;"&gt;DataFields（即要绑定到gridview的字段，也是后台构建临时dt的字段名） &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 10pt;"&gt;通过FooterTemplate&lt;/span&gt;中的添加按钮来执行添加，相应的事件在下面 &lt;/p&gt;&#xD;
&lt;p&gt;主要是为绑定的空间增加&lt;span style="color: #a31515; font-family: 微软雅黑; font-size: 9pt;"&gt;&lt;span style="background-color: yellow;"&gt;DataField&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: 10pt;"&gt;自定义属性&lt;/span&gt;，这样可以根据需要进行扩展。 &lt;/p&gt;&#xD;
&lt;p&gt;但是现在用起来感觉配置起来有些麻烦呵呵。如果不是大量表单使用行编辑，不推荐使用 &lt;/p&gt;&#xD;
&lt;p&gt;这个方法主要是可以把编辑下的gridview直接反向成dt，然后根据需要进行操作。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;pre &gt;&amp;lt;asp:UpdatePanel ID="UpdatePanel1" runat="server"&amp;gt; &#xD;
&#xD;
&amp;lt;ContentTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;asp:GridView ID="gvList1" runat="server" AutoGenerateColumns="False" CssClass="grid_bd" &#xD;
&#xD;
EmptyDataText="没有记录。" Width="100%" ShowFooter="True" DataFields="SampleID,SampleFolderID,SampleType,SampleCode,PointID,PointName,SampleTime,Temp, Smell, WaterColor,Eutrophication, remark,PointCategory,CheckItems,CheckItemsID" &#xD;
&#xD;
OnRowDataBound="gvList1_RowDataBound" OnRowDeleting="gvList1_RowDeleting"&amp;gt; &#xD;
&#xD;
&amp;lt;RowStyle CssClass="gridItem" /&amp;gt; &#xD;
&#xD;
&amp;lt;HeaderStyle CssClass="gridHeader" /&amp;gt; &#xD;
&#xD;
&amp;lt;EmptyDataRowStyle CssClass="gridEmpty" /&amp;gt; &#xD;
&#xD;
&amp;lt;Columns&amp;gt; &#xD;
&#xD;
&amp;lt;asp:TemplateField HeaderText="序号"&amp;gt; &#xD;
&#xD;
&amp;lt;HeaderStyle CssClass="gd_center" /&amp;gt; &#xD;
&#xD;
&amp;lt;ItemStyle HorizontalAlign="Center"&amp;gt;&amp;lt;/ItemStyle&amp;gt; &#xD;
&#xD;
&amp;lt;ItemTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;asp:Label ID="Label1" runat="server" Text='&amp;lt;%# Bind("SampleID") %&amp;gt;' Style="display: none;"&amp;gt;&amp;lt;/asp:Label&amp;gt; &#xD;
&#xD;
&amp;lt;asp:Label ID="lb_senquens" runat="server" Text=''&amp;gt;&amp;lt;/asp:Label&amp;gt; &#xD;
&#xD;
&amp;lt;/ItemTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;/asp:TemplateField&amp;gt; &#xD;
&#xD;
&amp;lt;asp:TemplateField HeaderText="测点位置"&amp;gt; &#xD;
&#xD;
&amp;lt;HeaderStyle CssClass="gd_center" /&amp;gt; &#xD;
&#xD;
&amp;lt;ItemStyle HorizontalAlign="Center"&amp;gt;&amp;lt;/ItemStyle&amp;gt; &#xD;
&#xD;
&amp;lt;ItemTemplate&amp;gt; &#xD;
&#xD;
***省略业务数据 &#xD;
&#xD;
&amp;lt;asp:TemplateField HeaderText="备注" Visible="false"&amp;gt; &#xD;
&#xD;
&amp;lt;ItemTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;asp:TextBox ID="txtRemark" runat="server" Width="80px" TBName="T_Bas_Sample" Text='&amp;lt;%# Bind("remark") %&amp;gt;' &#xD;
&#xD;
Msg="备注" DataField="remark" IsNull="True" FieldType="string"&amp;gt;&amp;lt;/asp:TextBox&amp;gt; &#xD;
&#xD;
&amp;lt;/ItemTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;/asp:TemplateField&amp;gt; &#xD;
&#xD;
&amp;lt;asp:TemplateField HeaderText="删除" ItemStyle-HorizontalAlign="Center"&amp;gt; &#xD;
&#xD;
&amp;lt;HeaderStyle CssClass="gd_center" /&amp;gt; &#xD;
&#xD;
&amp;lt;ItemStyle HorizontalAlign="Center"&amp;gt;&amp;lt;/ItemStyle&amp;gt; &#xD;
&#xD;
&amp;lt;FooterStyle CssClass="gd_center" /&amp;gt; &#xD;
&#xD;
&amp;lt;ItemTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;asp:ImageButton ID="DeleteLink0" runat="server" CommandName="delete" ImageUrl="../_Images/btn/del.gif" &#xD;
&#xD;
isshow="false" /&amp;gt; &#xD;
&#xD;
&amp;lt;/ItemTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;FooterTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;asp:Button ID="Btn_add11" Text="添加" runat="server" OnClick="Btn_add21_Click" isshow="false" /&amp;gt; &#xD;
&#xD;
&amp;lt;/FooterTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;/asp:TemplateField&amp;gt; &#xD;
&#xD;
&amp;lt;/Columns&amp;gt; &#xD;
&#xD;
&amp;lt;/asp:GridView&amp;gt; &#xD;
&#xD;
&amp;lt;/ContentTemplate&amp;gt; &#xD;
&#xD;
&amp;lt;/asp:UpdatePanel&amp;gt; &#xD;
&#xD;
&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: blue; font-family: 微软雅黑; font-size: 9pt;"&gt;事件 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: blue; font-family: 微软雅黑; font-size: 9pt;"&gt;添加 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: blue; font-family: 微软雅黑; font-size: 9pt;"&gt;&lt;/span&gt;&#xD;
&lt;p&gt;&lt;p&gt;&lt;span style="font-family: 微软雅黑; font-size: 9pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;span style="font-family: 微软雅黑; font-size: 9pt;"&gt;删除 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div onclick="cnblogs_code_show('512739d3-b2e9-4df6-8764-bf81c3133fc5')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div  id="cnblogs_code_open_512739d3-b2e9-4df6-8764-bf81c3133fc5"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; gvList1_RowDeleting(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, GridViewDeleteEventArgs e) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; e.RowIndex; &lt;br /&gt;&lt;br /&gt;DataTable dtTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Common.GetDataTableByGridView(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.gvList1); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; dtTmp.Rows.Count)&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;保留一个空行 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;dtTmp.Rows.RemoveAt(i); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.gvList1.DataSource &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dtTmp; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.gvList1.DataBind(); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family: 微软雅黑; font-size: 9pt;"&gt;封装部分 &lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div onclick="cnblogs_code_show('02edef18-3f75-44ff-b26f-4785b1332b4e')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div  id="cnblogs_code_open_02edef18-3f75-44ff-b26f-4785b1332b4e"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 编辑 &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="gv"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataTable GetDataTableByGridView(GridView gv) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetDataTableByGridView(gv, &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 根据GridView获取DataTable &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="gv"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="keyField"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;主键字段名，通过该字段清除无效记录&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="fieldValues"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;需要遍历指定字段值的字典&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataTable GetDataTableByGridView(GridView gv, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; keyField) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetDataTableByGridView(gv, keyField, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 根据GridView获取DataTable &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="gv"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="keyField"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;主键字段名，通过该字段清除无效记录&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="fieldValues"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;需要遍历指定字段值的字典,主要用于关联字段&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataTable GetDataTableByGridView(GridView gv, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; keyField, Dictionary&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; fieldValues) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetDataTableByGridView(gv, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;, keyField, fieldValues); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; 根据GridView获取DataTable &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="gv"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="keyField"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;主键字段名，通过该字段清除无效记录&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param name="fieldValues"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;需要遍历指定字段值的字典,主要用于关联字段&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataTable GetDataTableByGridView(GridView gv, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; tableName, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; keyField, Dictionary&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; fieldValues) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;DataTable dt &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataTable(); &lt;br /&gt;&lt;br /&gt;TextBox tmpTxtbox &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; TextBox(); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; iColumnCount &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; gv.Columns.Count;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;列数 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;gv.ShowHeader &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; gv.Columns.Count &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; dt; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;GridViewRow headerRow &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; gv.HeaderRow; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; columnCount &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; headerRow.Cells.Count; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;创建列 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(gv.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataFields&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;])) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] arrTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; gv.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataFields&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Split(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;,&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] valueAndType; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; s &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; arrTmp) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;valueAndType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; s.Split(&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;|&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;Type theType &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetFieldType(valueAndType); &lt;br /&gt;&lt;br /&gt;dt.Columns.Add(valueAndType[&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;].Trim(), theType); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;新增不存在的关联字段 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (fieldValues &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (KeyValuePair&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; entry &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; fieldValues) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.IndexOf(entry.Key) &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; dt.Columns.IndexOf(entry.Key.ToLower()) &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;dt.Columns.Add(entry.Key, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;)); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;追加textbox中的记录 &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt; string strTxtTmp = ""; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (GridViewRow gvr &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; gv.Rows) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (gvr.RowType &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; DataControlRowType.DataRow) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;DataRow drTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dt.NewRow(); &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; iColumnCount; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;遍历所有列 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;SetFieldValue(dt, drTmp, gvr.Cells[i]); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;dt.Rows.Add(drTmp); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;给关联字段赋值 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (fieldValues &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (KeyValuePair&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; entry &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; fieldValues) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(entry.Key)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (DataRow dr &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; dt.Rows) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;dr[entry.Key] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; entry.Value; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;清除空记录 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(keyField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(keyField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;; i &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; dt.Rows.Count; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;DataRow dr &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dt.Rows[i]; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dr[keyField].ToString().Length &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;dt.Rows.Remove(dr); &lt;br /&gt;&lt;br /&gt;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;--&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Exception(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;指定的字段不存在，字段名为：&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt; keyField); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; dt; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; SetFieldValue(DataTable dt, DataRow drTmp, TableCell tcell) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; strField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; strFieldTyp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; tcell.Text; &lt;br /&gt;&lt;br /&gt;TextBox txTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; TextBox(); &lt;br /&gt;&lt;br /&gt;Label lbTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt;&lt;span style="color: #000000;"&gt; Label(); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(text)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;strField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; tcell.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(tcell.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;])) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; text; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Control control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; tcell.Controls) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (control &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;is&lt;/span&gt;&lt;span style="color: #000000;"&gt; TextBox) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;txTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (TextBox)control; &lt;br /&gt;&lt;br /&gt;strField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; txTmp.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;&lt;br /&gt;strFieldTyp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; txTmp.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;FieldType&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (GetFieldType(strFieldTyp) &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;decimal&lt;/span&gt;&lt;span style="color: #000000;"&gt;)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (txTmp.Text &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;drTmp[strField] = DBNull.Value; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; txTmp.Text; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (GetFieldType(strFieldTyp) &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(DateTime)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (txTmp.Text &lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; DBNull.Value; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; txTmp.Text; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; txTmp.Text; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;break; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (control &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;is&lt;/span&gt;&lt;span style="color: #000000;"&gt; Label) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;lbTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Label)control; &lt;br /&gt;&lt;br /&gt;strField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; lbTmp.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; lbTmp.Text; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;break; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (control &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;is&lt;/span&gt;&lt;span style="color: #000000;"&gt; DropDownList) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;DropDownList ddl &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (DropDownList)control; &lt;br /&gt;&lt;br /&gt;strField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ddl.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; strTextField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ddl.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataDispalyField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;DropDownList的文本存储字段 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ddl.SelectedValue; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;break; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;/DropDownList的文本存储字段处理 &lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strTextField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(strTextField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (ddl.SelectedItem &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strTextField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; ddl.SelectedItem.Text; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;break; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (control &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;is&lt;/span&gt;&lt;span style="color: #000000;"&gt; RadioButtonList) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;RadioButtonList rbl &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; (RadioButtonList)control; &lt;br /&gt;&lt;br /&gt;strField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; rbl.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;]; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; strTextField &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; rbl.Attributes[&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;DataDispalyField&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;];&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;DropDownList的文本存储字段 &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(strField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; rbl.SelectedValue; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;break; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;/DropDownList的文本存储字段处理 &lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(strTextField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (dt.Columns.Contains(strTextField)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (rbl.SelectedItem &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;drTmp[strTextField] &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; rbl.SelectedItem.Text; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;break; &lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;public&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetCellText(TableCell cell) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; cell.Text; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;.IsNullOrEmpty(text)) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; text; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Control control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;in&lt;/span&gt;&lt;span style="color: #000000;"&gt; cell.Controls) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (control &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;is&lt;/span&gt;&lt;span style="color: #000000;"&gt; IButtonControl) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;IButtonControl btn &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; IButtonControl; &lt;br /&gt;&lt;br /&gt;text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; btn.Text.Replace(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;).Trim(); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (control &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;is&lt;/span&gt;&lt;span style="color: #000000;"&gt; ITextControl) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;LiteralControl lc &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; LiteralControl; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (lc &lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;continue&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;ITextControl l &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; control &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;as&lt;/span&gt;&lt;span style="color: #000000;"&gt; ITextControl; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;text &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; l.Text.Replace(&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\r\n&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;, &lt;/span&gt;&lt;span style="color: #800000;"&gt;""&lt;/span&gt;&lt;span style="color: #000000;"&gt;).Trim(); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; text; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; Type GetFieldType(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;[] valueAndType) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;Type t; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt; (valueAndType.Length &lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;t &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; GetFieldType(valueAndType[&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;]); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;t &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; t; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;private&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;static&lt;/span&gt;&lt;span style="color: #000000;"&gt; Type GetFieldType(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt; Field) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;Type type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;switch&lt;/span&gt;&lt;span style="color: #000000;"&gt; (Field.ToLower()) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;string&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;int&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(Int32); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;decimal&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;decimal&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;char&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;datetime&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(DateTime); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;time&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(DateTime); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;date&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(DateTime); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;case&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;text&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;default&lt;/span&gt;&lt;span style="color: #000000;"&gt;: &lt;br /&gt;&lt;br /&gt;type &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;typeof&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt;&lt;span style="color: #000000;"&gt;); &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;return&lt;/span&gt;&lt;span style="color: #000000;"&gt; type; &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;/p&gt;&#xD;
&lt;div onclick="cnblogs_code_show('c5c108f0-456c-4cda-b6e3-171a9ab95cc2')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div  id="cnblogs_code_open_c5c108f0-456c-4cda-b6e3-171a9ab95cc2"&gt;&#xD;
&lt;pre&gt;&lt;div&gt;&lt;!--&lt;br /&gt;&lt;br /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br /&gt;http://www.CodeHighlighter.com/&lt;br /&gt;&lt;br /&gt;--&gt;&lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt;&lt;span style="color: #000000;"&gt; Btn_add21_Click(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt;&lt;span style="color: #000000;"&gt; sender, EventArgs e) &lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;DataTable dtTmp &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; Common.GetDataTableByGridView(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.gvList1); &lt;br /&gt;&lt;br /&gt;dtTmp.Rows.Add(dtTmp.NewRow()); &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.gvList1.DataSource &lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; dtTmp; &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;this&lt;/span&gt;&lt;span style="color: #000000;"&gt;.gvList1.DataBind(); &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1764638.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/06/24/1764638.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/06/03/1751089.html</id><title type="text">工作日志2010-6-3</title><summary type="text">最近忙着帮人弄gis的项目，唉，可惜咱从没搞过gis，不过还好有现成的框架，只用一些js方法吧，可是js方面又是个大菜鸟。搞得我焦头烂额的。先说碰到的问题吧，公司电脑的环境装了个vs2010 也不晓得...</summary><published>2010-06-03T15:28:00Z</published><updated>2010-06-03T15:28:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/06/03/1751089.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/06/03/1751089.html"/><content type="html">&lt;p&gt;最近忙着帮人弄gis的项目，唉，可惜咱从没搞过gis，不过还好有现成的框架，只用一些js方法吧，可是js方面又是个大菜鸟。搞得我焦头烂额的。&#xD;
&lt;/p&gt;&lt;p&gt;先说碰到的问题吧，公司电脑的环境装了个vs2010 也不晓得是怎么搞的，加了jquery1.4.2之后，vs2010 只要在html页面编写js左下角就一直提示updating Jscript intellisence。然后IDE就假死在那里，调试的我那叫一个哭啊~~！不过还好这个现象是偶尔的，一天大概出现个几十次吧。唉，感觉RP再次下降了。可以家里的本子就没这个现象，感觉是自己vs装的版本问题。&#xD;
&lt;/p&gt;&lt;p&gt;言归正传，今天搞了个图线轨迹的，弄的有点头大，框架里提供的是点到点的移动，但是线是多个点组成的，所以要多个点移动。。开始考虑到是循环执行~~！（考虑的挺弱智的），然后发现不对，应该是顺序运行（先贴个图）&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/060310_1528_2010631.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;上面这条线是ABCDEFGHI，n个点组成，所以要先从A移动到b，然后从B到c~~！&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/060310_1528_2010632.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;因为框架中是一个js方法调用的服务，所以循环肯定不行，然后按照循环的思路就想到了sleep和timeout，唉可是js里的单线程又搞不定sleep，下班的路上在想怎么能搞定这个问题。突然就想到了递归+timeout，感觉了一下应该可以实现。最后回家搞了一下，证实了想法是对的。唉，做开发是不能靠蛮力的。。有个清醒的大脑还是很重要的~~！抽了几根烟都不管用。先把方法贴上来吧，自己记录一下教训吧。想了一下，这个方法应该可以实现pause，加一个外部参数就可以了。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;不过目前还有个问题，就是图片如果换成飞机的话，飞机头好像不能随着线路进行旋转，这个目前还没有思路，希望哪位高手指点一下。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;&lt;span style="color:blue"&gt;function&lt;/span&gt; carMoveStart() {           &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
				&lt;span style="color:blue"&gt;var&lt;/span&gt; myline = lines[0]; &lt;span style="color:darkgreen"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;线集合&lt;/span&gt;&lt;span style="color:darkgreen; font-family:新宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
				&lt;span style="color:blue"&gt;var&lt;/span&gt; car1overlay = &lt;span style="color:blue"&gt;null&lt;/span&gt;;//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;承载图层&lt;/span&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
				&lt;span style="color:blue"&gt;var&lt;/span&gt; mycost = 5000;//&lt;/span&gt;&lt;span style="font-family:宋体"&gt;可以计算初始值&lt;/span&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;            carMoveRecursion(car1overlay, myline, 0, mycost);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;        }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
				&lt;span style="color:darkgreen"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;递&lt;span style="color:darkgreen"&gt;归&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;function&lt;/span&gt; carMoveRecursion(overlay, line, index, mycost) {           &#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
				&lt;span style="color:blue"&gt;if&lt;/span&gt; (index &amp;lt; line[0].length - 1) {&lt;span style="color:darkgreen"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;最&lt;span style="color:darkgreen"&gt;后一个点不循&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新宋体"&gt;-&lt;/span&gt;&lt;span style="color:darkgreen; font-family:宋体"&gt;环&lt;/span&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
				&lt;span style="color:darkgreen"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;继&lt;span style="color:darkgreen"&gt;续移动&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;var&lt;/span&gt; ptStart = &lt;span style="color:blue"&gt;new&lt;/span&gt; Point(line[0][index].x, line[0][index].y);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;var&lt;/span&gt; ptEnd = &lt;span style="color:blue"&gt;new&lt;/span&gt;  Point(line[0][index + 1].x, line[0][index + 1].y);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;if&lt;/span&gt; (overlay == &lt;span style="color:blue"&gt;null&lt;/span&gt;) {&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;                    overlay = &lt;span style="color:blue"&gt;new &lt;/span&gt;MarkerOverlay({ layerName: &lt;span style="color:maroon"&gt;"MarkerMove"&lt;/span&gt;, geometry: ptStart, icon: &lt;span style="color:maroon"&gt;"http://google-maps-icons.googlecode.com/files/sledgerental.png"&lt;/span&gt;, width: 20, height: 20, color: &lt;span style="color:maroon"&gt;"#FF345678"&lt;/span&gt;, id: &lt;span style="color:maroon"&gt;"1"&lt;/span&gt; });&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;                    map.addOverlay(overlay);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;                }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;&#xD;
			&lt;span style="color:blue"&gt;var&lt;/span&gt; moveInfo = &lt;span style="color:blue"&gt;new &lt;/span&gt;MoveInfo({ fromPoint: ptStart, toPoint: ptEnd, cost: mycost, isCenter: &lt;span style="color:blue"&gt;true&lt;/span&gt;, scale: 0.1 });&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;                overlay.move(moveInfo);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:9pt"&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
				&lt;span style="color:darkgreen"&gt;//&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:宋体"&gt;等&lt;span style="color:darkgreen"&gt;待&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:新宋体"&gt;&#xD;
			&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;                setTimeout(&lt;span style="color:blue"&gt;function&lt;/span&gt; () { carMoveRecursion(overlay, line, index + 1, mycost); }, mycost);&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;            }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:新宋体; font-size:9pt"&gt;        }&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;效果如下吧。编程还是个小菜鸟，勿笑，嘿嘿。写到这里吧，睡了。年纪大了注意身体。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/060310_1528_2010633.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/060310_1528_2010634.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/060310_1528_2010635.png" alt=""/&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1751089.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/06/03/1751089.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/05/17/1737023.html</id><title type="text">Vs2010学习笔记-5</title><summary type="text">新学习			客户端开发变的更容易 新的ajax TamplateControl clientSeo===roting （url 更整洁精干为seo提供支持）Viewstate 	 ClientID 	...</summary><published>2010-05-16T16:42:00Z</published><updated>2010-05-16T16:42:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/05/17/1737023.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/05/17/1737023.html"/><content type="html">&lt;p&gt;新学习&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201051.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201052.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201053.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div style="text-align: justify"&gt;客户端开发变的更容易&#xD;
&lt;/div&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;新的ajax Tamplate&#xD;
&lt;/p&gt;&lt;p&gt;Control client&#xD;
&lt;/p&gt;&lt;p&gt;Seo===roting （url 更整洁精干为seo提供支持）&#xD;
&lt;/p&gt;&lt;p&gt;Viewstate &#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201054.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;ClientID&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201055.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;控件本身设置viewstate&#xD;
&lt;/p&gt;&lt;p&gt;页面关闭viewstate内容。（局部使用viewstate）&#xD;
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;感觉很鸡肋，没有解决实际问题&#xD;
&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Demo&#xD;
&lt;/p&gt;&lt;p&gt;新project，提供基本的membership的支持，默认的masterpage&#xD;
&lt;/p&gt;&lt;p&gt;Webconfig 根据编译版本发布不同的webconfig&#xD;
&lt;/p&gt;&lt;p&gt;Script提供jQuery的脚本库&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201056.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;ClientID使用方式—四种方式&#xD;
&lt;/p&gt;&lt;p&gt;静态，可预测性ID&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201057.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;静态模式，前后端相同&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201058.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs201059.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Routing 路由&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010510.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;实现：&#xD;
&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div style="text-align: justify"&gt;配置webconfig 加入httpmode方式，加入新的provider&#xD;
&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010511.png" alt=""/&gt;&#xD;
			&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div style="text-align: justify"&gt;Global&#xD;
&lt;/div&gt;&lt;p&gt;Application_start&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010512.png" alt=""/&gt;&#xD;
			&lt;/p&gt;&lt;p&gt;Default.aspx处理&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010513.png" alt=""/&gt;&#xD;
			&lt;/p&gt;&lt;p&gt;路由标记：路由列表名称，参数值&#xD;
&lt;/p&gt;&lt;p&gt;后台创建&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010514.png" alt=""/&gt;&#xD;
			&lt;/p&gt;&lt;p&gt;解析参数&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010515.png" alt=""/&gt;&#xD;
			&lt;/p&gt;&lt;p&gt;Routedata.value 代替了request[变量名]&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;查询扩展&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010516.png" alt=""/&gt;&#xD;
			&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Linq to sql &amp;amp;&amp;amp;实体数据源&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;已有控件的扩展&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010517.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
					&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010518.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
					&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010519.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
					&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;div&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Review Configuration int asp.net &#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010520.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
							&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Web部署&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010521.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
							&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Webconfig 多版本并存机制&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010522.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
							&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010523.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
							&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010524.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;&#xD;
							&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;Webconfig的灵活配置说明&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;MS Deploy 分发整合部署工具&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;One-Click Deployment快速部署&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;智能代码管理&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Ctrl+K+x&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;新建XML 另存.Snippet 放到直径文件夹&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Tools-codesnippets Manager 添加指定路径 说明模板语言&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;多版本并存webconfig&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;&lt;strong&gt;Configrationmanger 新添加config模式&#xD;
&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010525.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&#xD;
						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;打包发布&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010526.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&#xD;
						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;Building package&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010527.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&#xD;
						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;Iis设置好相应虚拟目录后&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;修改xml文件&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010528.png" alt=""/&gt;&lt;span style="font-size:12pt"&gt;&#xD;
						&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:12pt"&gt;进入is 本身的部署环境目录，执行cmd文件夹&#xD;
&lt;/span&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051610_1641_Vs2010529.png" alt=""/&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1737023.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/05/17/1737023.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/jianglai11/archive/2010/05/10/1732172.html</id><title type="text">4.0更新—webcast视频笔记3（C#4.0和vB10更新）</title><summary type="text">C#4.0和vB10更新	2010-5-10The Evolution of C#	发展历程2.0提供泛型的支持3.0  linq- C#4.0动态 ruby 。。动态语言dynamic动态语言和静态...</summary><published>2010-05-10T15:39:00Z</published><updated>2010-05-10T15:39:00Z</updated><author><name>汤包</name><uri>http://www.cnblogs.com/jianglai11/</uri></author><link rel="alternate" href="http://www.cnblogs.com/jianglai11/archive/2010/05/10/1732172.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/jianglai11/archive/2010/05/10/1732172.html"/><content type="html">&lt;p&gt;C#4.0和vB10更新&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast1.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;2010-5-10&#xD;
&lt;/p&gt;&lt;p&gt;The Evolution of C#&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast2.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;发展历程&#xD;
&lt;/p&gt;&lt;p&gt;2.0提供泛型的支持&#xD;
&lt;/p&gt;&lt;p&gt;3.0  linq-&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;C#4.0&#xD;
&lt;/p&gt;&lt;p&gt;动态 ruby 。。&#xD;
&lt;/p&gt;&lt;p&gt;动态语言dynamic&#xD;
&lt;/p&gt;&lt;p&gt;动态语言和静态语言的对比&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast3.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;strong&gt;动态语言不编译直接解析执行&#xD;
&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast4.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;C# language innovations&#xD;
&lt;/p&gt;&lt;p&gt;--Dynamically Typed Objects&#xD;
&lt;/p&gt;&lt;p&gt;--Optional and Named Parameters&#xD;
&lt;/p&gt;&lt;p&gt;--Improved COM Interoperability ( 语法支持)&#xD;
&lt;/p&gt;&lt;p&gt;--Co- and Contra-variance（逆协变）&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Dynamic language Runtime（DLR）&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast5.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast6.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;性能不一定比反射有优势但是语法要简洁很多&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;下图&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast7.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;1运行时环境决定&#xD;
&lt;/p&gt;&lt;p&gt;2转换为系统数据类型&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast8.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;高级应用&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast9.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;调用&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast10.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;OptionsnalandNamedParameters---编译器特性&#xD;
&lt;/p&gt;&lt;p&gt;参数可选化并可命名&#xD;
&lt;/p&gt;&lt;p&gt;例子：&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast11.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;即：指定defaultValue&#xD;
&lt;/p&gt;&lt;p&gt;调用方法，只需写上参数名（与定义参数名匹配）：参数值，不需要指定顺序，不需要写入全部参数。&#xD;
&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;COM互调用Improved COM Interoperability&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast12.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;Vs2010提升&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast13.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Co-and Contra-variance 协变和逆变&#xD;
&lt;/p&gt;&lt;p&gt;以前的操作存在如下风险，不允许build&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast14.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;子类转成父类（协变）-----详细学习一下。In或者out可以编译通过，子类与父类的写和入操作&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast15.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;例如：out可以传子类型，in可以传父类型&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast16.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Complier as a Service&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast17.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;C#和vb10区别&#xD;
&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast18.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/jianglai11/051010_1538_40webcast19.png" alt=""/&gt;&#xD;
	&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;该睡了，明天继续听吧，慢慢理解。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/jianglai11/aggbug/1732172.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/jianglai11/archive/2010/05/10/1732172.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
