<?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/13890/rss</id><updated>2010-11-13T01:25:56Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/13890/rss"/><entry><id>http://www.cnblogs.com/flxa/archive/2010/11/13/1876298.html</id><title type="text">在自己订阅的GOOGLE快讯中,看到自己的文章</title><summary type="text">在自己订阅的GOOGLE快讯中,看到自己的文章打开发现不是CNBLOGS上面的,已经被转了....郁闷中....</summary><published>2010-11-13T01:26:00Z</published><updated>2010-11-13T01:26:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/11/13/1876298.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/11/13/1876298.html"/><content type="html">&lt;p&gt;在自己订阅的GOOGLE快讯中,看到自己的文章&lt;/p&gt;&#xD;
&lt;p&gt;打开发现不是CNBLOGS上面的,已经被转了....郁闷中....&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flxa/aggbug/1876298.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/11/13/1876298.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/11/11/1873720.html</id><title type="text">想法:</title><summary type="text">1:做一设计器,进行类的设计和生成,或是用CODESMITH之类的生成,根据数据库的内容生成一个类,类定义成partial的,这一部分是不允许修改的,只能由编辑器进行修改和维护(和FROM和FROM.DESIGNER一样处理).2:事件写在另外一个类里面...这样 属性和事件可以分开....3:挂接到XAF中后,即有相关的视图设置等...4:处理好相关事件即可5:要解决的问题: 1:二维表属性的问...</summary><published>2010-11-11T15:07:00Z</published><updated>2010-11-11T15:07:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/11/11/1873720.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/11/11/1873720.html"/><content type="html">&lt;p&gt;1:做一设计器,进行类的设计和生成,或是用CODESMITH之类的生成,根据数据库的内容生成一个类,类定义成partial的,这一部分是不允许修改的,只能由编辑器进行修改和维护(和FROM和FROM.DESIGNER一样处理).&lt;/p&gt;&#xD;
&lt;p&gt;2:事件写在另外一个类里面...这样 属性和事件可以分开....&lt;/p&gt;&#xD;
&lt;p&gt;3:挂接到XAF中后,即有相关的视图设置等...&lt;/p&gt;&#xD;
&lt;p&gt;4:处理好相关事件即可&lt;/p&gt;&#xD;
&lt;p&gt;5:要解决的问题:&lt;/p&gt;&#xD;
&lt;p&gt;1:二维表属性的问题...&lt;/p&gt;&#xD;
&lt;p&gt;2:表格横向表示的问题..&lt;/p&gt;&#xD;
&lt;p&gt;3:主要属性的表现形式...&lt;/p&gt;&#xD;
&lt;p&gt;4:窗体 报表&lt;/p&gt; &lt;img src="http://www.cnblogs.com/flxa/aggbug/1873720.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/11/11/1873720.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/11/06/1870863.html</id><title type="text">PDA中几个常用数据取得方法</title><summary type="text">1:取得运行文件当前路径:string WorkPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);2:获取电量:SystemProperty.PowerBatteryStrength3:获取信号:SystemProperty.PhoneSignalSt...</summary><published>2010-11-06T15:24:00Z</published><updated>2010-11-06T15:24:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870863.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870863.html"/><content type="html">&lt;p&gt;1:取得运行文件当前路径:string WorkPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);&lt;/p&gt;&#xD;
&lt;p&gt;2:获取电量:SystemProperty.PowerBatteryStrength&lt;/p&gt;&#xD;
&lt;p&gt;3:获取信号:SystemProperty.PhoneSignalStrength&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flxa/aggbug/1870863.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870863.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/11/06/1870660.html</id><title type="text">HOWTO:如何分别把每个用户的自定义模型数据保存到数据库</title><summary type="text">如何分别把每个用户的自定义模型数据保存到数据库</summary><published>2010-11-06T13:55:00Z</published><updated>2010-11-06T13:55:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870660.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870660.html"/><content type="html">&lt;p&gt;HOWTO:如何分别把每个用户的自定义模型数据保存到数据库&lt;/p&gt;&#xD;
&lt;p&gt;英文原文地址:&amp;lt;&lt;u&gt;&lt;font color="#800080"&gt;&lt;a href="http://www.devexpress.com/Support/Center/KB/p/K18137.aspx"&gt;http://www.devexpress.com/Support/Center/KB/p/K18137.aspx&lt;/a&gt;&amp;gt;&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;u&gt;&lt;font color="#800080"&gt;&lt;/font&gt;&lt;/u&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;u&gt;&lt;font color="#800080"&gt;&lt;/font&gt;&lt;/u&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;Description:&lt;br /&gt;By default, an XAF Windows Forms application stores users' customizations in the Model.User.xafml file, located in the application's directory. If the application is localized into several languages, an additional file, named Model.User.xafm postfixed by the language identifier may exist for each language. In certain scenarios, this approach may be inappropriate in the following cases:&lt;/p&gt;&#xD;
&lt;p&gt;在默认的情况,XAF在WINDOWS FORM 应用程序把每个用户的自定义模型文件(Model.User.xafml)保存在应用程序目录下面.如果应用程序有多种本地化语言,会在每种语言的模型文件后面加上语言ID,但在实际使用中会出现下列一些情况,使这个方法不是很适用:&lt;/p&gt;&#xD;
&lt;p&gt;1. If two or more users share the same copy of the application, their customizations (e.g. to the UI) get overwritten. For instance, user A logs on, reorders columns in a certain List View and logs off. Then, user B does the same. User A launches the application and finds that the customizations are gone. &lt;br /&gt;Note: Using the configuration file, you can specify that the Model.User.xafml must be saved to the current Windows user's ApplicationData folder (C:\Documents and Settings\username\Application Data). But, if users launch the application using the same Windows logon, the above still applies.&lt;/p&gt;&#xD;
&lt;p&gt;1:如果有二个或多个用户共同使用一台电脑上的应用程序,他们的自定义文件会相互覆盖.如:用户A登录系统,在一个列表中定义了一个列并且退出,用户B是不一样的设置,用户A的应用程序设置就会被覆盖&lt;/p&gt;&#xD;
&lt;p&gt;备注:在配置文件中,你可以指定Model.User.xafml 必须保存在当前WINDOWS用户的ApplicationData 目录下面(C:\Documents and Settings\username\Application Data),但是,如果所有的用户都使用同一个WINDOWS用户登录,上面的情况依旧会发生.&lt;/p&gt;&#xD;
&lt;p&gt;2. Since the Model.User.xafml file is stored in the plain XML format, anyone who has access to it, can easily influence the work of the application. For instance, it is possible to affect a critical setting that will cause the application to stop functioning.&lt;/p&gt;&#xD;
&lt;p&gt;This article illustrates how to resolve these issues by storing each user's customizations separately in the database.&lt;/p&gt;&#xD;
&lt;p&gt;Note:&lt;br /&gt;In XAF ASP.NET Web applications, users' customizations aren't stored anywhere by default. You can store the customizations made to List Views in the web browser cookies by setting the SaveListViewStateInCookies property of the Application | Options node or SaveStateInCookies property of the Application | Views | ListView nodes to true.&lt;/p&gt;&#xD;
&lt;p&gt;2:由于Model.User.xafml 文件保存的文件格式是XML格式,所以任何人都可以修改他,用户可以很容易的修改影响应用程序...如:用户可能去修改一个条件字符串,导致应用程序的一些权限判断失效.&lt;/p&gt;&#xD;
&lt;p&gt;这一举例说明了为何要把每一个客户的自定义文件保存到数据库的原因.&lt;/p&gt;&#xD;
&lt;p&gt;备注:&lt;/p&gt;&#xD;
&lt;p&gt;在XAF ASP.NET 的WEB应用程序中,用户的自定义文件是默认是不会被保存的.你可以把列表的自定义信息保存在浏览器的cookies中,设置Application | Options节点中的SaveListViewStateInCookies属性或是Application | Views | ListView 节点下的SaveStateInCookies 属性为TRUE.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;To begin, create a new Windows Forms XAF application solution named "UserDiffsToDB". Using the Application Designer, set the authentication type to the standard authentication, the security strategy to the Security Simple and the Security System's user class type to SimpleUser.&lt;/p&gt;&#xD;
&lt;p&gt;新建一个WINFOWS FORM 的XAF的应用程序,名称为:UserDiffsToDB,使用应用程序设计器,把认证模式的标准认证模块,设置安全系统的用户类型为 SimpleUser&lt;/p&gt;&#xD;
&lt;p&gt;&amp;lt;注:打开应用程序设计器,把Security Complex 和Authention Standard二块模块新增到安全认证上面.点击:Security Complex,属性窗体.有 一个UserType 选择 SimpleUser,如果已经选择了其他的用户类型,如User,则只要把下列代码中的SimpleUser更改成对应的用户类型就可以了&amp;gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1. Define the Persistent Classes Used to Store User Model Differences&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;1:定义用于保存每个用户自定义模型的持久类.&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;To store users' Model differences in the database, we use two persistent classes - the &lt;strong&gt;XmlUser&lt;/strong&gt; and &lt;strong&gt;XmlStore&lt;/strong&gt;. An &lt;strong&gt;XmlStore&lt;/strong&gt; object stores a user's Model differences for one language. An &lt;strong&gt;XmlUser&lt;/strong&gt; object stores a user's identifier and a collection of &lt;strong&gt;XmlStore&lt;/strong&gt; objects. To retrieve the identifier of the currently logged on user, we use the &lt;strong&gt;SecuritySystem.CurrentUser&lt;/strong&gt; property. This property returns the user class instance that represents the currently logged on user. In this example, we have the &lt;strong&gt;SimpleUser&lt;/strong&gt; class set as the Security System's user type. If you use another user class, change the &lt;strong&gt;User&lt;/strong&gt; type as required. &lt;/p&gt;&#xD;
&lt;p&gt;We decorate both classes with the &lt;strong&gt;Browsable(false)&lt;/strong&gt; attribute, so that they aren't displayed in the UI and the Model Editor.&lt;/p&gt;&#xD;
&lt;p&gt;Add a new XmlStorage.cs (&lt;em&gt;XmlStorage.vb&lt;/em&gt;) file to the UserDiffsToDB.Module project using the Domain Object template. Copy the following code to the XmlStorage file.&lt;/p&gt;&#xD;
&lt;p&gt;为了保存每个用户不同的模型信息到数据库中,我们需要用到二个持久类:&lt;strong&gt;XmlUser&lt;/strong&gt; 和&lt;strong&gt;XmlStore&lt;/strong&gt;,&lt;strong&gt;XmlStore&lt;/strong&gt;对象保存每个用户每种语言的自定义模型信息.&lt;strong&gt;XmlUser&lt;/strong&gt;&amp;nbsp; 对象保存每个用户的主键并且有一个XmlStore的对象集合.我们使用&lt;strong&gt;SecuritySystem.CurrentUser&lt;/strong&gt; 属性取得当前登录用户的主键.这个属性返回当前登录用户类的实例.在这个实例中,我们设置了&lt;strong&gt;SimpleUser&lt;/strong&gt;&amp;nbsp; 类为Security System的用户类型,如果你使用了其他的用户类型,就需要更改相应的用户类型设置.&lt;/p&gt;&#xD;
&lt;p&gt;把二个类的&lt;strong&gt;Browsable(false)&lt;/strong&gt; 属性加上,这样它们就不会显示在界面和模型设计器中.&lt;/p&gt;&#xD;
&lt;p&gt;新增一个Domain Object 类型的 XmlStorage.cs文件到&amp;nbsp;UserDiffsToDB.Module 工程.复制下列代码..&lt;/p&gt;&#xD;
&lt;p&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('da95cfd3-79bb-4d7e-823c-ac030c4b4aa2')"&gt;&lt;img  id="code_img_opened_da95cfd3-79bb-4d7e-823c-ac030c4b4aa2" style="display: none" onclick="cnblogs_code_hide('da95cfd3-79bb-4d7e-823c-ac030c4b4aa2',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div  id="cnblogs_code_open_da95cfd3-79bb-4d7e-823c-ac030c4b4aa2"&gt;&#xD;
&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;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.ComponentModel;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Xpo;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Persistent.Base;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Persistent.BaseImpl;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Persistent.Validation;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserDiffsToDB.Module&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Browsable(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlUser&amp;nbsp;:&amp;nbsp;BaseObject&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlUser(Session&amp;nbsp;session)&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;(session)&amp;nbsp;{&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SimpleUser&amp;nbsp;User&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetPropertyValue&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;SimpleUser&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: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;User&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;SetPropertyValue(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;User&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;value);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Association(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;XmlUser-Aspects&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;),&amp;nbsp;Aggregated]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XPCollection&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;XmlStore&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Aspects&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetCollection&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;XmlStore&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: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Aspects&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Browsable(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlStore&amp;nbsp;:&amp;nbsp;BaseObject&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlStore(Session&amp;nbsp;session)&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;(session)&amp;nbsp;{&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Association(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;XmlUser-Aspects&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlUser&amp;nbsp;User&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetPropertyValue&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;XmlUser&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: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;User&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;SetPropertyValue(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;User&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;value);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Aspect&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetPropertyValue&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;&amp;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: #800000"&gt;Aspect&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;SetPropertyValue(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Aspect&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;value);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Size(SizeAttribute.Unlimited)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlData&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GetPropertyValue&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;&amp;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: #800000"&gt;XmlData&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&amp;nbsp;SetPropertyValue(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;XmlData&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;value);&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. Handle User Model Differences&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;In an XAF application, saving and loading of a user's Model differences is performed by a descendant of the abstract &lt;strong&gt;ModelDifferenceStore&lt;/strong&gt; class. The two most important members of this class are the &lt;strong&gt;SaveDifference&lt;/strong&gt; and &lt;strong&gt;Load&lt;/strong&gt; methods. The &lt;strong&gt;Load&lt;/strong&gt; method loads a user's Model differences. The &lt;strong&gt;SaveDifference&lt;/strong&gt; method takes a user's Model differences as a parameter and saves them to a storage. By default, an XAF application uses an instance of the &lt;strong&gt;FileModelStore&lt;/strong&gt; class. This class stores a user's Model differences in an XML file. Since we need to store the differences in the database, we implement a custom storage class that inherits from the &lt;strong&gt;ModelDifferenceStore&lt;/strong&gt; class - the &lt;strong&gt;UserStore&lt;/strong&gt; class.&lt;/p&gt;&#xD;
&lt;p&gt;在XAF应用程序中,保存和加载用户自定义模型文件是通过抽象类:&lt;strong&gt;ModelDifferenceStore&lt;/strong&gt; 的子类来实现的.&lt;strong&gt;SaveDifference&lt;/strong&gt; 和&lt;strong&gt;Load&lt;/strong&gt; 方法是二个最为重要的方法,&lt;strong&gt;Load&lt;/strong&gt; 方法加载用户自定义模式,&lt;strong&gt;SaveDifference&lt;/strong&gt; 方法提供一个用户自定义模型的参数并且自动保存.默认的,XAF应用程序使用&lt;strong&gt;FileModelStore&lt;/strong&gt; 类的实例.这个类保存用户自定义模型到一个XML文件中,因为我们要保存自定义模型到数据库中.所以我们需要继承于&lt;strong&gt;ModelDifferenceStore&lt;/strong&gt; 类 实现一个自定义保存的类:&lt;strong&gt;UserStore&lt;/strong&gt; 类.&lt;/p&gt;&#xD;
&lt;p&gt;To make the application use our custom class, we handle the &lt;strong&gt;WinApplication.CreateCustomUserModelDifferenceStore&lt;/strong&gt; event. This event is raised after a user has been authenticated. It allows us to specify an instance of the &lt;strong&gt;ModelDifferenceStore&lt;/strong&gt; class descendant that will be used for saving and loading of a user's Model differences. We set the handler's &lt;strong&gt;Handled&lt;/strong&gt; parameter to &lt;strong&gt;true&lt;/strong&gt;, to cancel the creation of the default storage class instance. &lt;/p&gt;&#xD;
&lt;p&gt;为了使应用程序使用自定义保存类,我们需要调用&lt;strong&gt;WinApplication.CreateCustomUserModelDifferenceStore&lt;/strong&gt; 事件.这个事件在用户认证完成后产生,此事件允许指定一个&lt;strong&gt;ModelDifferenceStore&lt;/strong&gt; 类子类的实例来进行自定义模型的加载和保存.我们可以设置事件的&lt;strong&gt;Handled&lt;/strong&gt; 参数=TRUE 来禁止默认存储类的实例的生成.&lt;/p&gt;&#xD;
&lt;p&gt;Copy the following code to the Program.cs (&lt;em&gt;Program.vb&lt;/em&gt;) file of the UserDiffsToDB.Win project.&lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;复制下列代码到工程:UserDiffsToDB.Win中的Program.cs 文件中.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('f31481ce-603e-4782-ab7a-da8332deb94c')"&gt;&lt;img  id="code_img_opened_f31481ce-603e-4782-ab7a-da8332deb94c" style="display: none" onclick="cnblogs_code_hide('f31481ce-603e-4782-ab7a-da8332deb94c',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_f31481ce-603e-4782-ab7a-da8332deb94c"&gt;&#xD;
&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;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Configuration;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Windows.Forms;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Xpo;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Data.Filtering;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Security;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Win;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Persistent.Base;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Persistent.BaseImpl;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserDiffsToDB.Module;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Model.Core;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Model;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserDiffsToDB.Win&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Program&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;The&amp;nbsp;main&amp;nbsp;entry&amp;nbsp;point&amp;nbsp;for&amp;nbsp;the&amp;nbsp;application.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;///&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[STAThread]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Main()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Application.EnableVisualStyles();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Application.SetCompatibleTextRenderingDefault(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EditModelPermission.AlwaysGranted&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Diagnostics.Debugger.IsAttached;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserDiffsToDBWindowsFormsApplication&amp;nbsp;winApplication&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;UserDiffsToDBWindowsFormsApplication();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winApplication.CreateCustomUserModelDifferenceStore&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;EventHandler&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;CreateCustomModelDifferenceStoreEventArgs&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(winApplication_CreateCustomUserModelDifferenceStore);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(ConfigurationManager.ConnectionStrings[&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;ConnectionString&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;]&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winApplication.ConnectionString&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;ConfigurationManager.ConnectionStrings[&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;ConnectionString&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;].ConnectionString;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winApplication.Setup();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winApplication.Start();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;catch&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winApplication.HandleException(e);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;winApplication_CreateCustomUserModelDifferenceStore(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&lt;br /&gt;CreateCustomModelDifferenceStoreEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UserStore&amp;nbsp;userDiffs&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserStore((WinApplication)sender);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Store&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;userDiffs;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Handled&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserStore&amp;nbsp;:&amp;nbsp;ModelDifferenceStore&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;readonly&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;xmlHeader&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;lt;?xml&amp;nbsp;version=\&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800080"&gt;1.0&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;&amp;nbsp;encoding=\&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;utf&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #800080"&gt;8&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;?&amp;gt;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Environment.NewLine;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;WinApplication&amp;nbsp;application;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Name&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;get&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;UserStore&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserStore(WinApplication&amp;nbsp;winApplication)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;application&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;winApplication;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlStore&amp;nbsp;FindStoreByAspect(XPCollection&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;XmlStore&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;stores,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;aspect)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(XmlStore&amp;nbsp;store&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;stores)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(store.Aspect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;aspect)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;store;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlUser&amp;nbsp;FindXmlUserByCurrentUser()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ObjectSpace&amp;nbsp;objectSpace&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;application.CreateObjectSpace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SimpleUser&amp;nbsp;currentUser&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objectSpace.GetObject((SimpleUser)SecuritySystem.CurrentUser);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlUser&amp;nbsp;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objectSpace.FindObject&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;XmlUser&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BinaryOperator(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;User&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;currentUser,&amp;nbsp;BinaryOperatorType.Equal));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;user;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Load(ModelApplicationBase&amp;nbsp;model)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModelXmlReader&amp;nbsp;xmlReader&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ModelXmlReader();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlUser&amp;nbsp;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FindXmlUserByCurrentUser();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt;&lt;span style="color: #000000"&gt;(XmlStore&amp;nbsp;store&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;user.Aspects)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xmlReader.ReadFromString(model,&amp;nbsp;store.Aspect,&amp;nbsp;store.XmlData);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SaveDifference(ModelApplicationBase&amp;nbsp;model)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ObjectSpace&amp;nbsp;objectSpace&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;application.CreateObjectSpace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlUser&amp;nbsp;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objectSpace.GetObject(FindXmlUserByCurrentUser());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlUser(objectSpace.Session);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.User&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;objectSpace.GetObject((SimpleUser)SecuritySystem.CurrentUser);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;;&amp;nbsp;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;model.AspectCount;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;++&lt;/span&gt;&lt;span style="color: #000000"&gt;i)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ModelXmlWriter&amp;nbsp;xmlWriter&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;ModelXmlWriter();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;aspect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;model.GetAspect(i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;xmlContent&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;xmlWriter.WriteToString(model,&amp;nbsp;i);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/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(xmlContent))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XmlStore&amp;nbsp;store&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;FindStoreByAspect(user.Aspects,&amp;nbsp;aspect);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(store&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;store&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XmlStore(objectSpace.Session);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;store.User&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;user;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;store.Aspect&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;aspect;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;store.XmlData&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;xmlHeader&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;xmlContent;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;objectSpace.CommitChanges();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3. Populate the Database with Sample Data&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3:在数据库中新增实例数据...&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;To be able to log on to the application, a user must be created. To do so, copy the following code to the &lt;em&gt;Updater.cs&lt;/em&gt; (&lt;em&gt;Updater.vb&lt;/em&gt;) file of the UserDiffsToDB.Module project. This code snippet creates two users, named "John" and "Sam" with empty passwords. "Sam" has the administrative rights, "John" doesn't. &lt;br /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;为了能够登录进程序,必须先要建立用户.为了实现这个功能,复制下列代码到工程:UserDiffsToDB.Module的&lt;em&gt;Updater.cs&lt;/em&gt;文件中.&lt;/p&gt;&#xD;
&lt;p&gt;这些代码会创建二个密码为空的用户:John和 Sam.&amp;nbsp; SAM有管理员的权限,JOHN不是...&lt;/p&gt;&#xD;
&lt;p&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('47cd7ab8-cbdc-49cb-963c-f3befc80b66a')"&gt;&lt;img  id="code_img_opened_47cd7ab8-cbdc-49cb-963c-f3befc80b66a" style="display: none" onclick="cnblogs_code_hide('47cd7ab8-cbdc-49cb-963c-f3befc80b66a',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_47cd7ab8-cbdc-49cb-963c-f3befc80b66a"&gt;&#xD;
&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;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Updating;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Xpo;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Data.Filtering;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.Persistent.BaseImpl;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UserDiffsToDB.Module&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Updater&amp;nbsp;:&amp;nbsp;ModuleUpdater&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Updater(Session&amp;nbsp;session,&amp;nbsp;Version&amp;nbsp;currentDBVersion)&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;(session,&amp;nbsp;currentDBVersion)&amp;nbsp;{&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;UpdateDatabaseAfterUpdateSchema()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;.UpdateDatabaseAfterUpdateSchema();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SimpleUser&amp;nbsp;adminUser&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Session.FindObject&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;SimpleUser&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: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BinaryOperator(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;UserName&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Sam&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(adminUser&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adminUser&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SimpleUser(Session);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adminUser.UserName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Sam&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adminUser.FullName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Sam&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adminUser.IsAdministrator&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adminUser.SetPassword(&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;adminUser.Save();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SimpleUser&amp;nbsp;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Session.FindObject&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;SimpleUser&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: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;BinaryOperator(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;UserName&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;John&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;SimpleUser(Session);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.UserName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;John&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.FullName&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;John&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.IsAdministrator&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.SetPassword(&lt;/span&gt;&lt;span style="color: #800000"&gt;""&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.Save();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;After creating the sample users you can logon using different credentials and customize the application. For instance, you can change the active skin for each user. Different users will have different active skins. Since users' Model differences are stored in the database, the &lt;em&gt;Model.User.xafml&lt;/em&gt; file won't be created.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;建立完成示例用户后,可以使用不同的用户进行登录并且进行自定义应用程序.如:你可以为每一个用户更改当前的外观&amp;nbsp;,不同的用户有不同的外观,因为用户自定义模型被保存到数据库中,所以&lt;em&gt;Model.User.xafml&lt;/em&gt; 是不会被建立的.....&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="553" alt="" src="http://www.devexpress.com/Support/Center/GetAttachment.ashx?id=fef21cc5-c787-4689-8f91-46c35d1515df" width="634" border="0" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt; &lt;img src="http://www.cnblogs.com/flxa/aggbug/1870660.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870660.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/11/06/1870438.html</id><title type="text">域名被停　　郁闷　中．．．．</title><summary type="text">域名被停　　已经备案了还停．．．．一看说是没有上传相关域名所有人的证书资料．．．．唉．．．．以后再也不用CN域名了．．．．所有业务　慢慢的全部转到COM域名上面去．．．．注册几个ＣＯＭ域名反正也不贵．．．．．</summary><published>2010-11-06T02:48:00Z</published><updated>2010-11-06T02:48:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870438.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870438.html"/><content type="html">&lt;p&gt;域名被停　　已经备案了还停．．．．一看说是没有上传相关域名所有人的证书资料．．．．&lt;/p&gt;&#xD;
&lt;p&gt;唉．．．．以后再也不用CN域名了．．．．所有业务　慢慢的全部转到COM域名上面去．．．．&lt;/p&gt;&#xD;
&lt;p&gt;注册几个ＣＯＭ域名反正也不贵．．．．．&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flxa/aggbug/1870438.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/11/06/1870438.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/11/05/1869397.html</id><title type="text">HOWTO:XAF中如何自定义导出动作.</title><summary type="text">XAF中如何自定义导出动作.</summary><published>2010-11-05T08:05:00Z</published><updated>2010-11-05T08:05:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/11/05/1869397.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/11/05/1869397.html"/><content type="html">&lt;p&gt;英文原文地址:http://documentation.devexpress.com/#Xaf/CustomDocument3287&lt;/p&gt;&#xD;
&lt;p&gt;The default List Editor in Windows Forms XAF applications is the &lt;strong&gt;XtraGrid&lt;/strong&gt; control. This control has an option to export its content to various formats. In XAF applications, the export functionality is provided via the &lt;strong&gt;Export&lt;/strong&gt; &lt;a onclick="if(!event.ctrlKey &amp;amp;&amp;amp; !event.shiftKey) { ChangeHashPageType('Xaf/CustomDocument2622'); return false; }" href="http://documentation.devexpress.com/Xaf/CustomDocument2622.aspx"&gt;Action&lt;/a&gt;. This Action is presented by the abstract &lt;strong&gt;ExportController&lt;/strong&gt; &lt;a onclick="if(!event.ctrlKey &amp;amp;&amp;amp; !event.shiftKey) { ChangeHashPageType('Xaf/CustomDocument2621'); return false; }" href="http://documentation.devexpress.com/Xaf/CustomDocument2621.aspx"&gt;View Controller&lt;/a&gt;, which is the base for the &lt;strong&gt;XtraGridExportController&lt;/strong&gt; Controller. The &lt;strong&gt;XtraGridExportController&lt;/strong&gt; Controller is activated for all List Views. Its &lt;strong&gt;Export&lt;/strong&gt; action is active when the current List Editor control is &lt;strong&gt;XtraGrid&lt;/strong&gt;. &lt;/p&gt;&#xD;
&lt;p&gt;XAF程序中默认的列表编辑是XtraGrid,XtraGrid有一个可以导出多种文件格式的选项,在XAF程序中,导出功能是通过 Export 动作来实现,此动作由继承于VewController的ExportController来提供,EportController也是XtraGridExportController的父类,XtraGridExportGrid在所有的列表中均有效, 当列表编辑器是XtraGrid时.Export动作是可用的.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div&gt;&lt;img style="margin: 0px 10px 0px 0px" alt="" src="http://documentation.devexpress.com/HelpResource.ashx?help=Xaf&amp;amp;document=img6692.jpg" /&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;This topic describes how to access the &lt;strong&gt;XtraGridExportController&lt;/strong&gt; and customize the &lt;strong&gt;Export&lt;/strong&gt; Action behavior via the controller's events:&lt;/p&gt;&#xD;
&lt;ul type="disc"&gt;&lt;li&gt;&lt;a onclick="SetIsAnchorFlag();" href="http://documentation.devexpress.com/#Xaf/CustomDocument3287/1"&gt;ExportController.CustomExport&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a onclick="SetIsAnchorFlag();" href="http://documentation.devexpress.com/#Xaf/CustomDocument3287/2"&gt;ExportController.Exported&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&#xD;
&lt;p&gt;本文详细指出如何取得&lt;strong&gt;XtraGridExportController&lt;/strong&gt; ,并如何通过控制器的如下事件自定义&lt;strong&gt;Export&lt;/strong&gt; 动作的相关行为.&lt;/p&gt;&#xD;
&lt;p&gt;ExportController.CustomExport&lt;br /&gt;ExportController.Exported&lt;/p&gt;&#xD;
&lt;div&gt;&lt;a id="Xaf/CustomDocument3287/1" name="Xaf/CustomDocument3287/1"&gt;&lt;/a&gt;&lt;font size="3"&gt;&lt;strong&gt;Customizing the Export Action via the CustomExport Event&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;font size="3"&gt;&lt;strong&gt;通过&amp;nbsp;CustomExport 事件自定义 Export&amp;nbsp; 动作.&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;&#xD;
&lt;p&gt;The &lt;strong&gt;CustomExport&lt;/strong&gt; event occurs before export, after a user specifies the target file name in the &lt;strong&gt;Save as&lt;/strong&gt; dialog. The handler's &lt;strong&gt;FileName&lt;/strong&gt; and &lt;strong&gt;Stream&lt;/strong&gt; parameters provide you with access to the target file name and &lt;strong&gt;System.IO.Stream&lt;/strong&gt; object, representing data to be exported. You can handle this event, to adjust objects being exported or to manually perform the export operation (set the handler's &lt;strong&gt;Handled&lt;/strong&gt; parameter to true, in this case). In this example, we will handle this event to notify an end-user when the exporting List View has collapsed groups, and provide him with the ability to choose whether to expand them in the exported file. This will override the default behavior when the collapsed groups are always expanded in the exported file. &lt;/p&gt;&#xD;
&lt;p&gt;事件:&lt;strong&gt;CustomExport&lt;/strong&gt; 发生在导出动作之前,用户指定另存为对话框中的文件名后.通过参数:&lt;strong&gt;FileName&lt;/strong&gt; 和&lt;strong&gt;Stream&lt;/strong&gt; 可以取得导出对象的文件名和表示导出数据的流对象:&lt;strong&gt;System.IO.Stream&lt;/strong&gt; .通过调用本事件,你可以判断对象在导出后是否存在做一些导出选项的手工动作(在本实例中.设置handler 的 &lt;strong&gt;Handled&lt;/strong&gt; 参数为True).在这个示例中,我们通过调用本事件,在最终用户收缩起列表导出的时候,发出提醒,并让最终用户选择是否导出收缩的表格.这会覆盖默认的行为.&lt;/p&gt;&#xD;
&lt;p&gt;To detect if there are collapsed groups, we need to iterate through the grid's group rows. The group rows have negative handles in the Grid View (see &lt;a href="http://documentation.devexpress.com/#WindowsForms/CustomDocument695"&gt;Process Group Rows&lt;/a&gt;). The expansion status of a group row can be determined by the &lt;a href="http://documentation.devexpress.com/WindowsForms/DevExpressXtraGridViewsGridGridView_GetRowExpandedtopic.aspx"&gt;GridView.GetRowExpanded&lt;/a&gt; method. We will display the message box when the collapsed group is detected, and set the &lt;a href="http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsGridGridOptionsPrint_ExpandAllGroupstopic"&gt;GridOptionsPrint.ExpandAllGroups&lt;/a&gt; property, according to the user's selection. The following View Controller implements the required behavior:&lt;/p&gt;&#xD;
&lt;p&gt;判断列表是否收缩起列表,通过表格的GROUP ROWS.......&lt;/p&gt;&#xD;
&lt;p&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('33c58dd2-eeea-4c9f-9043-f472442a8ecb')"&gt;&lt;img  id="code_img_opened_33c58dd2-eeea-4c9f-9043-f472442a8ecb" style="display: none" onclick="cnblogs_code_hide('33c58dd2-eeea-4c9f-9043-f472442a8ecb',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt; &#xD;
&lt;div  id="cnblogs_code_open_33c58dd2-eeea-4c9f-9043-f472442a8ecb"&gt;&#xD;
&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;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Windows.Forms;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Win;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Win.Editors;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.SystemModule;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Win.SystemModule;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;...&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;partial&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CustomizeXtraGridExportController&amp;nbsp;:&amp;nbsp;ViewController&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CustomizeXtraGridExportController()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegisterActions(components);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XtraGridExportController&amp;nbsp;exportController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;OnActivated()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;.OnActivated();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exportController&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Frame.GetController&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;XtraGridExportController&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exportController.CustomExport&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;exportController_CustomExport;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;exportController_CustomExport(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;CustomExportEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;GridListEditor&amp;nbsp;gridListEditor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;((DevExpress.ExpressApp.ListView)View).Editor&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;GridListEditor;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XafGridView&amp;nbsp;gridView&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;gridListEditor.GridView;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(HasCollapsedGroups(gridView))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(WinApplication.Messaging.GetUserChoice(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;There&amp;nbsp;are&amp;nbsp;collapsed&amp;nbsp;groups&amp;nbsp;in&amp;nbsp;the&amp;nbsp;grid.&amp;nbsp;Expand&amp;nbsp;all&amp;nbsp;groups&amp;nbsp;in&amp;nbsp;the&amp;nbsp;exported&amp;nbsp;file?&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Export&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;MessageBoxButtons.YesNo)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DialogResult.Yes)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gridView.OptionsPrint.ExpandAllGroups&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;gridView.OptionsPrint.ExpandAllGroups&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;HasCollapsedGroups(XafGridView&amp;nbsp;gridView)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(gridView.GroupCount&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;rowHandle&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(gridView.IsValidRowHandle(rowHandle))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(&lt;/span&gt;&lt;span style="color: #000000"&gt;!&lt;/span&gt;&lt;span style="color: #000000"&gt;gridView.GetRowExpanded(rowHandle))&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;true&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rowHandle&lt;/span&gt;&lt;span style="color: #000000"&gt;--&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;false&lt;/span&gt;&lt;span style="color: #000000"&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;OnDeactivating()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;.OnDeactivating();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exportController.CustomExport&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;exportController_CustomExport;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&amp;lt;注&amp;gt;以上代码通过在PROJECT.MODULE.WIN中新增一个:ViewController类.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;End-users will see the following message box when exporting a List View containing collapsed groups:&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div&gt;最终用户在收缩列表导出时会看到下列对话框.&lt;/div&gt;&#xD;
&lt;div&gt;&lt;img alt="" src="http://documentation.devexpress.com/HelpResource.ashx?help=Xaf&amp;amp;document=img6693.jpg" border="0" /&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;If the choice is "Yes", all the grid's rows will be exported.&lt;/p&gt;&#xD;
&lt;p&gt;如果选择"是",则表格行会被导出.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="381" alt="" src="http://documentation.devexpress.com/HelpResource.ashx?help=Xaf&amp;amp;document=img6695.jpg" width="580" border="0" /&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;p&gt;If the choice is "No", the rows belonging to the collapsed groups won't be included in exported file.&lt;/p&gt;&#xD;
&lt;p&gt;如果选择则"否",则被收缩的行不会在导出的文件中.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="122" alt="" src="http://documentation.devexpress.com/HelpResource.ashx?help=Xaf&amp;amp;document=img6694.jpg" width="580" border="0" /&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&#xD;
&lt;div &gt;&lt;a id="Xaf/CustomDocument3287/2" name="Xaf/CustomDocument3287/2"&gt;&lt;/a&gt;&lt;span style="font-size: 18pt"&gt;Customizing the Export Action via the Exported Event &lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span style="font-size: 18pt"&gt;通过&lt;font size="5"&gt;Exported &lt;/font&gt;事件自定义导出动作&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;span style="font-size: 18pt"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;span style="font-size: 18pt"&gt;&#xD;
&lt;p &gt;The &lt;strong&gt;Exported&lt;/strong&gt; event occurs after an export operation has been completed. The handler's &lt;strong&gt;FileName&lt;/strong&gt; and &lt;strong&gt;Stream&lt;/strong&gt; parameters provide you with access to the target file name and &lt;strong&gt;System.IO.Stream&lt;/strong&gt; object, representing export data. You can handle this event to perform custom post-export actions. In this example, we will provide the end-user with the ability to open the exported file immediately. The following View Controller implements the required behavior.&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 18pt"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 18pt"&gt;&lt;strong&gt;Exported&lt;/strong&gt; 事件产生在导出操作完成之后.参数&lt;strong&gt;FileName&lt;/strong&gt; 和&lt;strong&gt;Stream&lt;/strong&gt; 可以取得导出文件的名称和文件流对象(&lt;strong&gt;System.IO.Stream&lt;/strong&gt;).你可以在导出动作完成后加入你想要的动作.&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 18pt"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="font-size: 18pt"&gt;&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;p&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('c4ea4021-db59-47d6-b487-6b8d14236c48')"&gt;&lt;img  id="code_img_opened_c4ea4021-db59-47d6-b487-6b8d14236c48" style="display: none" onclick="cnblogs_code_hide('c4ea4021-db59-47d6-b487-6b8d14236c48',event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"&gt;&#xD;
&lt;div  id="cnblogs_code_open_c4ea4021-db59-47d6-b487-6b8d14236c48"&gt;&#xD;
&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;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.IO;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;System.Windows.Forms;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Win;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.SystemModule;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;using&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DevExpress.ExpressApp.Win.SystemModule;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;nbsp;...&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;partial&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CustomizeXtraGridExportController&amp;nbsp;:&amp;nbsp;ViewController&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;CustomizeXtraGridExportController()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RegisterActions(components);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;XtraGridExportController&amp;nbsp;exportController;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;OnActivated()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;.OnActivated();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exportController&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;Frame.GetController&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;XtraGridExportController&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exportController.Exported&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;exportController_Exported;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;exportController_Exported(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;sender,&amp;nbsp;CustomExportEventArgs&amp;nbsp;e)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(File.Exists(e.FileName))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(WinApplication.Messaging.GetUserChoice(&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Open&amp;nbsp;exported&amp;nbsp;file?&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #800000"&gt;Export&lt;/span&gt;&lt;span style="color: #800000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;MessageBoxButtons.YesNo)&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;DialogResult.Yes)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Process.Start(e.FileName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;override&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;OnDeactivating()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;base&lt;/span&gt;&lt;span style="color: #000000"&gt;.OnDeactivating();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exportController.Exported&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;exportController_Exported;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;The following image illustrates the message box shown after the export has been finished.&lt;/p&gt;&#xD;
&lt;p&gt;导出完成后将显示下列的对话框.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img height="136" alt="" src="http://documentation.devexpress.com/HelpResource.ashx?help=Xaf&amp;amp;document=img6696.jpg" width="208" border="0" /&gt;&lt;/p&gt;    &lt;img src="http://www.cnblogs.com/flxa/aggbug/1869397.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/11/05/1869397.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/09/08/1821791.html</id><title type="text">建立了一个Symbol PDA WM 相关技术的QQ讨论群，欢迎大家参加。</title><summary type="text">最近一直在做这一块的开发。所以建立了一个Symbol PDA WM 相关技术的QQ讨论群，欢迎大家参加。QQ群号：117832757 申请加入时说明一下大家善长的技术方面，欢迎大家参加并踊跃发言。</summary><published>2010-09-08T14:05:00Z</published><updated>2010-09-08T14:05:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/09/08/1821791.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/09/08/1821791.html"/><content type="html">&lt;p&gt;最近一直在做这一块的开发。所以&lt;/p&gt;&#xD;
&lt;p&gt;建立了一个Symbol PDA WM 相关技术的QQ讨论群，欢迎大家参加。&lt;/p&gt;&#xD;
&lt;p&gt;QQ群号：117832757&amp;nbsp; &lt;/p&gt;&#xD;
&lt;p&gt;申请加入时说明一下大家善长的技术方面，欢迎大家参加并踊跃发言。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flxa/aggbug/1821791.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/09/08/1821791.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/06/01/1749528.html</id><title type="text">下载了一个Writer+Source Code Plug In 写Blog</title><summary type="text">下载了一个Writer+Source Code Plug In 写Blog</summary><published>2010-06-01T13:39:00Z</published><updated>2010-06-01T13:39:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/06/01/1749528.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/06/01/1749528.html"/><content type="html">&lt;p&gt;下载了一个Writer+Source Code Plug In 写Blog&lt;/p&gt;&lt;img src="http://www.cnblogs.com/flxa/aggbug/1749528.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/06/01/1749528.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/06/01/1749518.html</id><title type="text">【转载】C#输入汉字字符串索引拼音的首字母</title><summary type="text">C#输入汉字字符串索引拼音的首字母</summary><published>2010-06-01T13:19:00Z</published><updated>2010-06-01T13:19:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/06/01/1749518.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/06/01/1749518.html"/><content type="html">&lt;p&gt;在做项目的时候，输入客户的名字，为了方便索引汉字字符串的拼音首字母，作助记码，于是到网上找了一下，还好，有个单个汉字的处理！为了答谢该网友！为了以后的网友，我做了汉字字符串的处理！ &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;pre &gt;using System; &#xD;
using System.Drawing; &#xD;
using System.Collections; &#xD;
using System.ComponentModel; &#xD;
using System.Windows.Forms; &#xD;
using System.Data; &#xD;
&#xD;
namespace WinMarket &#xD;
{ &#xD;
    /// &amp;lt;summary&amp;gt; &#xD;
    /// Classfun 的摘要说明。 &#xD;
    /// &amp;lt;/summary&amp;gt; &#xD;
    public class Classfun &#xD;
    { &#xD;
        private string Capstr; &#xD;
&#xD;
        public Classfun() &#xD;
        { &#xD;
            // &#xD;
            // TODO: 在此处添加构造函数逻辑 &#xD;
            // &#xD;
        } &#xD;
        public string ChineseCap(string ChineseStr) &#xD;
        { &#xD;
&#xD;
            byte[] ZW = new byte[2]; &#xD;
            long ChineseStr_int; &#xD;
            string CharStr, ChinaStr = &amp;quot;&amp;quot;; &#xD;
            for (int i = 0; i &amp;lt;= ChineseStr.Length - 1; i++) &#xD;
            { &#xD;
                CharStr = ChineseStr.Substring(i, 1).ToString(); &#xD;
                ZW = System.Text.Encoding.Default.GetBytes(CharStr); &#xD;
                // 得到汉字符的字节数组 &#xD;
                if (ZW.Length == 2) &#xD;
                { &#xD;
                    int i1 = (short)(ZW[0]); &#xD;
                    int i2 = (short)(ZW[1]); &#xD;
                    ChineseStr_int = i1 * 256 + i2; &#xD;
                    //table of the constant list &#xD;
                    // @#A@#; //45217..45252 &#xD;
                    // @#B@#; //45253..45760 &#xD;
                    // @#C@#; //45761..46317 &#xD;
                    // @#D@#; //46318..46825 &#xD;
                    // @#E@#; //46826..47009 &#xD;
                    // @#F@#; //47010..47296 &#xD;
                    // @#G@#; //47297..47613 &#xD;
&#xD;
                    // @#H@#; //47614..48118 &#xD;
                    // @#J@#; //48119..49061 &#xD;
                    // @#K@#; //49062..49323 &#xD;
                    // @#L@#; //49324..49895 &#xD;
                    // @#M@#; //49896..50370 &#xD;
                    // @#N@#; //50371..50613 &#xD;
                    // @#O@#; //50614..50621 &#xD;
                    // @#P@#; //50622..50905 &#xD;
                    // @#Q@#; //50906..51386 &#xD;
&#xD;
                    // @#R@#; //51387..51445 &#xD;
                    // @#S@#; //51446..52217 &#xD;
                    // @#T@#; //52218..52697 &#xD;
                    //没有U,V &#xD;
                    // @#W@#; //52698..52979 &#xD;
                    // @#X@#; //52980..53640 &#xD;
                    // @#Y@#; //53689..54480 &#xD;
                    // @#Z@#; //54481..55289 &#xD;
&#xD;
                    if ((ChineseStr_int &amp;gt;= 45217) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 45252)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;A&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 45253) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 45760)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;B&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 45761) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 46317)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;C&amp;quot;; &#xD;
&#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 46318) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 46825)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;D&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 46826) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 47009)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;E&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 47010) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 47296)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;F&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 47297) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 47613)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;G&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 47614) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 48118)) &#xD;
                    { &#xD;
&#xD;
                        ChinaStr = &amp;quot;H&amp;quot;; &#xD;
                    } &#xD;
&#xD;
                    else if ((ChineseStr_int &amp;gt;= 48119) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 49061)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;J&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 49062) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 49323)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;K&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 49324) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 49895)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;L&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 49896) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 50370)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;M&amp;quot;; &#xD;
                    } &#xD;
&#xD;
                    else if ((ChineseStr_int &amp;gt;= 50371) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 50613)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;N&amp;quot;; &#xD;
&#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 50614) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 50621)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;O&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 50622) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 50905)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;P&amp;quot;; &#xD;
&#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 50906) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 51386)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;Q&amp;quot;; &#xD;
&#xD;
                    } &#xD;
&#xD;
                    else if ((ChineseStr_int &amp;gt;= 51387) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 51445)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;R&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 51446) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 52217)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;S&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 52218) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 52697)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;T&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 52698) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 52979)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;W&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 52980) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 53640)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;X&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 53689) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 54480)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;Y&amp;quot;; &#xD;
                    } &#xD;
                    else if ((ChineseStr_int &amp;gt;= 54481) &amp;amp;&amp;amp; (ChineseStr_int &amp;lt;= 55289)) &#xD;
                    { &#xD;
                        ChinaStr = &amp;quot;Z&amp;quot;; &#xD;
                    } &#xD;
&#xD;
                } &#xD;
                else &#xD;
                { &#xD;
                    Capstr = ChineseStr; &#xD;
                    break; &#xD;
                } &#xD;
&#xD;
                Capstr = Capstr + ChinaStr; &#xD;
            } &#xD;
&#xD;
            return Capstr; &#xD;
&#xD;
        } &#xD;
&#xD;
    } &#xD;
}&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/flxa/aggbug/1749518.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/06/01/1749518.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/flxa/archive/2010/05/06/1728532.html</id><title type="text">[转载]RAID0、RAID1、RAID0+1、RAID5原理介绍</title><summary type="text">RAID 1又称为Mirror或Mirroring，它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。由于对存储的数据进行百分之百的备份，在所有RAID级别中，RAID 1提供最高的数据安全保障。同样，由于数据的百分之百备份，备份数据占了总存储空间的一半，因而，Mirror的磁盘空间利用率低，存储成本高。Mirro...</summary><published>2010-05-06T00:56:00Z</published><updated>2010-05-06T00:56:00Z</updated><author><name>方子</name><uri>http://www.cnblogs.com/flxa/</uri></author><link rel="alternate" href="http://www.cnblogs.com/flxa/archive/2010/05/06/1728532.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/flxa/archive/2010/05/06/1728532.html"/><content type="html">&lt;div &gt;&#xD;
&lt;div &gt;&amp;nbsp;&lt;/div&gt;&#xD;
&lt;div &gt;&lt;!-- 这里是Google里的信息 --&gt;&#xD;
&lt;div style="float: right" align="right"&gt;&lt;/div&gt;&#xD;
&lt;p style="padding-right: 0px; margin-top: 0px; padding-left: 0px; margin-bottom: 0px; padding-bottom: 0px; padding-top: 0px"&gt;&lt;p style="text-indent: 2em"&gt;RAID 1又称为Mirror或Mirroring，它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。由于对存储的数据进行百分之百的备份，在所有RAID级别中，RAID 1提供最高的数据安全保障。同样，由于数据的百分之百备份，备份数据占了总存储空间的一半，因而，Mirror的磁盘空间利用率低，存储成本高。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;Mirror虽不能提高存储性能，但由于其具有的高数据安全性，使其尤其适用于存放重要数据，如服务器和数据库存储等领域。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5不对存储的数据进行备份，而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上，并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后，利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障，但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度，只是多了一个奇偶校验信息，写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息，RAID 5的磁盘空间利用率要比RAID 1高，存储成本相对较低。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID0+1：正如其名字一样RAID 0+1是RAID 0和RAID 1的组合形式，也称为RAID 10。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时，也提供了与RAID 0近似的存储性能。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;由于RAID 0+1也通过数据的100%备份提供数据安全保障，因此RAID 0+1的磁盘空间利用率与RAID 1相同，存储成本高。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 0+1的特点使其特别适用于既有大量数据需要存取，同时又对数据安全性要求严格的领域，如银行、金融、商业超市、仓储库房、各种档案管理等。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID是通过磁盘阵列与数据条块化方法相结合, 以提高数据可用率的一种结构。IBM早于1970年就开始研究此项技术 。RAID 可分为RAID级别1到RAID级别6, 通常称为： RAID 0, RAID 1, RAID 2, RAID 3,RAID 4,RAID 5,RAID6。每一个RAID级别都有自己的强项和弱项. &amp;#8220;奇偶校验&amp;#8221;定义为用户数据的冗余信息, 当硬盘失效时, 可以重新产生数据。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 0： RAID 0 并不是真正的RAID结构, 没有数据冗余。 RAID 0 连续地分割数据并并行地读/写于多个磁盘上。 因此具有很高的数据传输率。 但RAID 0在提高性能的同时,并没有提供数据可靠性,如果一个磁盘失效, 将影响整个数据.因此RAID 0 不可应用于需要数据高可用性的关键应用。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 1： RAID 1通过数据镜像实现数据冗余, 在两对分离的磁盘上产生互为备份的数据。 RAID 1可以提高读的性能,当原始数据繁忙时, 可直接从镜像拷贝中读取数据.RAID 1是磁盘阵列中费用最高的, 但提供了最高的数据可用率。当一个磁盘失效, 系统可以自动地交换到镜像磁盘上, 而不需要重组失效的数据。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 2： 从概念上讲, RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。然而RAID 2 使用称为&amp;#8220;加重平均纠错码&amp;#8221;的编码技术来提供错误检查及恢复。这种编码技术需要多个磁盘存放检查及恢复信息, 使得RAID 2技术实施更复杂。 因此,在商业环境中很少使用。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 3：不同于RAID 2, RAID 3使用单块磁盘存放奇偶校验信息。 如果一块磁盘失效, 奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用。RAID 3对于大量的连续数据可提供很好的传输率, 但对于随机数据, 奇偶盘会成为写操作的瓶颈。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 4： 同RAID 2, RAID 3一样, RAID 4, RAID 5也同样将数据条块化并分布于不同的磁盘上, 但条块单位为块或记录。 RAID 4使用一块磁盘作为奇偶校验盘, 每次写操作都需要访问奇偶盘, 成为写操作的瓶颈。 在商业应用中很少使用。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 5：RAID 5没有单独指定的奇偶盘, 而是交叉地存取数据及奇偶校验信息于所有磁盘上。 在RAID5 上, 读/写指针可同时对阵列设备进行操作, 提供了更高的数据流量。 RAID 5更适合于小数据块,随机读写的数据.RAID 3与RAID 5相比, 重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说, 大部分数据传输只对一块磁盘操作, 可进行并行操作。在RAID 5中有&amp;#8220;写损失&amp;#8221;, 即每一次写操作,将产生四个实际的读/写操作, 其中两次读旧的数据及奇偶信息, 两次写新的数据及奇偶信息。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 6：RAID 6 与RAID 5相比,增加了第二个独立的奇偶校验信息块。 两个独立的奇偶系统使用不同的算法, 数据的可靠性非常高. 即使两块磁盘同时失效,也不会影响数据的使用。 但需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的&amp;#8220;写损失&amp;#8221;。RAID 6 的写性能非常差, 较差的性能和复杂的实施使得RAID 6很少使用。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 0又称为Stripe或Striping，它代表了所有RAID级别中最高的存储性能。RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取，这样，系统有数据请求就可以被多个磁盘并行的执行，每个磁盘执行属于它自己的那部分数据请求。这种数据上的并行操作可以充分利用总线的带宽，显著提高磁盘整体存取性能&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 1又称为Mirror或Mirroring，它的宗旨是最大限度的保证用户数据的可用性和可修复性。 RAID 1的操作方式是把用户写入硬盘的数据百分之百地自动复制到另外一个硬盘上。由于对存储的数据进行百分之百的备份，在所有RAID级别中，RAID 1提供最高的数据安全保障。同样，由于数据的百分之百备份，备份数据占了总存储空间的一半，因而，Mirror的磁盘空间利用率低，存储成本高。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;Mirror虽不能提高存储性能，但由于其具有的高数据安全性，使其尤其适用于存放重要数据，如服务器和数据库存储等领域。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 5 是一种存储性能、数据安全和存储成本兼顾的存储解决方案。RAID 5不对存储的数据进行备份，而是把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上，并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上。当RAID5的一个磁盘数据发生损坏后，利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 5可以理解为是RAID 0和RAID 1的折衷方案。RAID 5可以为系统提供数据安全保障，但保障程度要比Mirror低而磁盘空间利用率要比Mirror高。RAID 5具有和RAID 0相近似的数据读取速度，只是多了一个奇偶校验信息，写入数据的速度比对单个磁盘进行写入操作稍慢。同时由于多个数据对应一个奇偶校验信息，RAID 5的磁盘空间利用率要比RAID 1高，存储成本相对较低。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID0+1：正如其名字一样RAID 0+1是RAID 0和RAID 1的组合形式，也称为RAID 10。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 0+1是存储性能和数据安全兼顾的方案。它在提供与RAID 1一样的数据安全保障的同时，也提供了与RAID 0近似的存储性能。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;由于RAID 0+1也通过数据的100%备份提供数据安全保障，因此RAID 0+1的磁盘空间利用率与RAID 1相同，存储成本高。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 0+1的特点使其特别适用于既有大量数据需要存取，同时又对数据安全性要求严格的领域，如银行、金融、商业超市、仓储库房、各种档案管理等。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID是通过磁盘阵列与数据条块化方法相结合, 以提高数据可用率的一种结构.IBM早于1970年就开始研究此项技术 .RAID 可分为RAID级别1到RAID级别6, 通常称为： RAID 0, RAID 1, RAID 2, RAID 3,RAID 4,RAID 5,RAID6.每一个RAID级别都有自己的强项和弱项. &amp;#8220;奇偶校验&amp;#8221;定义为用户数据的冗余信息, 当硬盘失效时, 可以重新产生数据.&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 0： RAID 0 并不是真正的RAID结构, 没有数据冗余. RAID 0 连续地分割数据并并行地读/写于多个磁盘上. 因此具有很高的数据传输率. 但RAID 0在提高性能的同时,并没有提供数据可靠性,如果一个磁盘失效, 将影响整个数据.因此RAID 0 不可应用于需要数据高可用性的关键应用.&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 1： RAID 1通过数据镜像实现数据冗余, 在两对分离的磁盘上产生互为备份的数据. RAID 1可以提高读的性能,当原始数据繁忙时, 可直接从镜像拷贝中读取数据.RAID 1是磁盘阵列中费用最高的, 但提供了最高的数据可用率. 当一个磁盘失效, 系统可以自动地交换到镜像磁盘上, 而不需要重组失效的数据.&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 2：从概念上讲, RAID 2 同RAID 3类似, 两者都是将数据条块化分布于不同的硬盘上, 条块单位为位或字节。然而RAID 2 使用称为"加重平均纠错码"的编码技术来提供错误检查及恢复。 这种编码技术需要多个磁盘存放检查及恢复信息, 使得RAID 2技术实施更复杂。 因此,在商业环境中很少使用。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 3：不同于RAID 2, RAID 3使用单块磁盘存放奇偶校验信息。 如果一块磁盘失效, 奇偶盘及其他数据盘可以重新产生数据。 如果奇偶盘失效,则不影响数据使用.RAID 3对于大量的连续数据可提供很好的传输率, 但对于随机数据, 奇偶盘会成为写操作的瓶颈。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 4：同RAID 2, RAID 3一样, RAID 4, RAID 5也同样将数据条块化并分布于不同的磁盘上, 但条块单位为块或记录. RAID 4使用一块磁盘作为奇偶校验盘, 每次写操作都需要访问奇偶盘, 成为写操作的瓶颈。 在商业应用中很少使用。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 5：RAID 5没有单独指定的奇偶盘, 而是交叉地存取数据及奇偶校验信息于所有磁盘上。 在RAID5 上, 读/写指针可同时对阵列设备进行操作, 提供了更高的数据流量。 RAID 5更适合于小数据块,随机读写的数据。RAID 3与RAID 5相比, 重要的区别在于RAID 3每进行一次数据传输,需涉及到所有的阵列盘。而对于RAID 5来说, 大部分数据传输只对一块磁盘操作, 可进行并行操作。在RAID 5中有"写损失", 即每一次写操作,将产生四个实际的读/写操作, 其中两次读旧的数据及奇偶信息, 两次写新的数据及奇偶信息。&lt;/p&gt;&#xD;
&lt;p style="text-indent: 2em"&gt;RAID 6：RAID 6 与RAID 5相比,增加了第二个独立的奇偶校验信息块。两个独立的奇偶系统使用不同的算法, 数据的可靠性非常高。 即使两块磁盘同时失效,也不会影响数据的使用。 但需要分配给奇偶校验信息更大的磁盘空间,相对于RAID 5有更大的&amp;#8220;写损失&amp;#8221;。 RAID 6 的写性能非常差, 较差的性能和复杂的实施使得RAID 6很少使用。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="clear: both"&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;div align="right"&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/flxa/aggbug/1728532.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/flxa/archive/2010/05/06/1728532.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
