<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>hiForums</title>
        <link>http://blog.hidotnet.com/venjiang/category/11.aspx</link>
        <description>基于asp.net forums系统的本地化改进版本.</description>
        <language>zh-CN</language>
        <copyright>venjiang</copyright>
        <managingEditor>venjiang@msn.com</managingEditor>
        <generator>hiText Version 1.9.0.27</generator>
        <item>
            <title> Asp.Net Forums2配置文件(web.config)简要说明 </title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/31.aspx</link>
            <description>&lt;span style="color: rgb(0, 0, 0);"&gt;主要部分：&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;forums &lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;defaultProvider&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="SqlForumsProvider"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;     // 要使用的数据提供者类&lt;br /&gt;
            defaultLanguage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="zh-CN"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      // 网站使用的默认语言&lt;br /&gt;
            forumFilesPath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="/"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                 // 论坛根路径&lt;br /&gt;
            disableEmail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="true"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                                 // 是否禁用邮件发送,依附于disableThreading&lt;br /&gt;
            disableIndexing&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                          // 是否禁用索引(要使用搜索功能,必须启用)&lt;br /&gt;
                                                                             // 依附于disableThreading    &lt;br /&gt;
            disableThreading&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                      // 是否禁用后台线程运行&lt;br /&gt;
            threadIntervalStats&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="15"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                       // 后台帖子索引运行间隔时间(分钟)&lt;br /&gt;
            threadIntervalEmail&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="3"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;                         // 后台邮件发送运行间隔时间(分钟)&lt;br /&gt;
            passwordEncodingFormat&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="unicode"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        // 密码编码格式&lt;br /&gt;
            allowAutoUserRegistration&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        // &lt;br /&gt;
            adminWindowsGroup&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="Administrators"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
            assignLocalAdminsAdminRole&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
            smtpServerConnectionLimit&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="-1"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
            enableLatestVersionCheck&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;="false"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;        // 允许版本检查&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;add &lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;name &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "SqlForumsProvider"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;             // 使用Sql Server数据提供者类&lt;br /&gt;
            type &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "AspNetForums.Data.SqlDataProvider, AspNetForums.SqlDataProvider"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;br /&gt;
                                                                     // Sql Server数据提供者类的程序集&lt;br /&gt;
            connectionString &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "server={0};database={1};uid={2};pwd={3}"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;
                    // {0}数据库服务器名或IP；{1}数据库名称；{2}登录数据库用户ID；&lt;br /&gt;
                    // {3}登录数据库密码.&lt;br /&gt;
            databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;= "dbo"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    // 数据库所有者，dbo或{2}&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;/&amp;gt;&lt;/span&gt;&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/31.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/10/13/31.aspx</guid>
            <pubDate>Fri, 13 Oct 2006 23:39:23 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/31.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/10/13/31.aspx#feedback</comments>
            <slash:comments>468</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/31.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/31.aspx</trackback:ping>
        </item>
        <item>
            <title> Asp.Net Forums 2.0.1数据库表简要说明</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/30.aspx</link>
            <description>&lt;p&gt;Asp.Net Forums 2.0.1数据库表简要说明&lt;/p&gt;
&lt;p&gt;[表]&lt;/p&gt;
&lt;p&gt;forums_AnonymousUsers&lt;br /&gt;
匿名用户&lt;br /&gt;
 forums_BlockedIpAddresses&lt;br /&gt;
禁止的IP地址&lt;br /&gt;
 forums_Censorship&lt;br /&gt;
脏字过滤&lt;br /&gt;
 forums_CodeScheduleType&lt;br /&gt;
待查&lt;br /&gt;
 forums_CodeServiceType&lt;br /&gt;
待查&lt;br /&gt;
 forums_DisallowedNames&lt;br /&gt;
禁止用户注册的用户名&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 forums_EmailQueue&lt;br /&gt;
发送邮件序列&lt;br /&gt;
 forums_Exceptions&lt;br /&gt;
系统异常&lt;br /&gt;
 forums_ForumGroups&lt;br /&gt;
论坛组&lt;br /&gt;
 forums_ForumPermissions&lt;br /&gt;
论坛权限&lt;br /&gt;
 forums_ForumPingback&lt;br /&gt;
待查&lt;/p&gt;
&lt;p&gt;forums_Favorites&lt;br /&gt;
用户收藏夹&lt;br /&gt;
 forums_Forums&lt;br /&gt;
论坛&lt;br /&gt;
 forums_ForumsRead&lt;br /&gt;
论坛用户读取标记&lt;br /&gt;
 forums_Images&lt;br /&gt;
待查&lt;br /&gt;
 forums_Messages&lt;br /&gt;
论坛消息,待查,并非用户相互发送的消息&lt;/p&gt;
&lt;p&gt; forums_ModerationAction&lt;br /&gt;
论坛管理操作列表(审核,编辑帖子,移动贴子,删除贴子,锁定,精华等)&lt;br /&gt;
 forums_ModerationAudit&lt;br /&gt;
论坛操作检查,与下表对应&lt;/p&gt;
&lt;p&gt;forums_Moderators&lt;br /&gt;
论坛版主&lt;/p&gt;
&lt;p&gt; forums_PostAttachments&lt;br /&gt;
论坛贴子附件&lt;br /&gt;
 forums_PostEditNotes&lt;br /&gt;
贴子编辑记录&lt;br /&gt;
 forums_PostRating&lt;br /&gt;
主题评估&lt;br /&gt;
 forums_Posts&lt;br /&gt;
论坛贴子&lt;br /&gt;
 forums_PostsArchive&lt;br /&gt;
论坛文章(目前版本未使用)&lt;br /&gt;
 forums_PrivateMessages&lt;br /&gt;
论坛内部会员消息&lt;br /&gt;
 forums_Ranks&lt;br /&gt;
用户等级&lt;br /&gt;
 forums_Reports&lt;br /&gt;
论坛报告(目前版本未使用)&lt;br /&gt;
 forums_Roles&lt;br /&gt;
论坛角色&lt;br /&gt;
 forums_SearchBarrel&lt;br /&gt;
论坛搜索关键字&lt;br /&gt;
 forums_SearchIgnoreWords&lt;br /&gt;
论坛搜索忽略关键字(目前版本未使用)&lt;br /&gt;
 forums_ServiceSchedule&lt;br /&gt;
论坛服务计划(目前版本未使用)&lt;br /&gt;
 forums_Services&lt;br /&gt;
论坛服务(目前版本未使用)&lt;br /&gt;
 forums_SiteSettings&lt;br /&gt;
站点设置&lt;br /&gt;
 forums_Smilies&lt;br /&gt;
论坛表情符号&lt;br /&gt;
 forums_Styles&lt;br /&gt;
论坛风格(类CSS设置) (目前版本未使用)&lt;/p&gt;
&lt;p&gt; forums_Threads&lt;br /&gt;
论坛主题&lt;br /&gt;
 forums_ThreadsRead&lt;br /&gt;
用户已读主题&lt;br /&gt;
 forums_TrackedForums&lt;br /&gt;
论坛跟踪(待查)&lt;br /&gt;
 forums_TrackedThreads&lt;br /&gt;
论坛主题跟踪(订阅列表)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 forums_UserAvatar&lt;br /&gt;
用户头像&lt;br /&gt;
 forums_UserProfile&lt;br /&gt;
用户配置选项&lt;br /&gt;
 forums_Users&lt;br /&gt;
论坛用户&lt;br /&gt;
 forums_UsersInRoles&lt;br /&gt;
用户角色&lt;br /&gt;
 forums_UsersOnline&lt;br /&gt;
注册用户在线列表&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
 forums_ValueGroups&lt;br /&gt;
精华区域管理&lt;br /&gt;
 forums_Version&lt;br /&gt;
论坛版本信息&lt;br /&gt;
 forums_Vote&lt;br /&gt;
用户投票&lt;br /&gt;
 forums_VoteOptions&lt;br /&gt;
投票选项&lt;br /&gt;
 forums_statistics_Site&lt;br /&gt;
论坛统计信息&lt;br /&gt;
 forums_statistics_User&lt;br /&gt;
论坛会员列表统计&lt;/p&gt;
&lt;br /&gt;
 nntp_Newsgroups&lt;br /&gt;
NNTP设置,待查&lt;br /&gt;
 nntp_Posts&lt;br /&gt;
NNTP设置,待查&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/30.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/10/13/30.aspx</guid>
            <pubDate>Fri, 13 Oct 2006 23:16:52 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/30.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/10/13/30.aspx#feedback</comments>
            <slash:comments>421</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/30.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/30.aspx</trackback:ping>
        </item>
        <item>
            <title> 以增加收藏夹功能为实例，解析asp.net forums2结构流程及组件设计</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/28.aspx</link>
            <description>&lt;p&gt;其实asp.net forums2就是像搭积木，现以收藏夹功能实例看一下asp.net forums的结构及组件设计，希望给朋友以参考。&lt;br /&gt;
&lt;br /&gt;
示例：&lt;strong&gt;帖子收藏功能&lt;/strong&gt;(by venjiang &lt;span style="color: rgb(0, 0, 0);"&gt;20040912&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) √&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;一.增加资源文件项目&lt;/strong&gt;&lt;br /&gt;
修改Web\Languages\zh&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;CN\Resources.xml，增加&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏夹 &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource name &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorite_Title&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;收藏夹&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource name &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorite_Description&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;我收藏的主题&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;resource&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;!--&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏夹－结束 &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;strong&gt;二．增加站点url&lt;br /&gt;
&lt;/strong&gt;修改E:\WWW\cnforums0804\Web\SiteUrls.config，增加&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;url name&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;user_MyFavorite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; path&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/User/MyFavorite.aspx&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;strong&gt;三．增加属性&lt;br /&gt;
&lt;/strong&gt;修改Components\Components\SiteUrls.cs，增加&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 收藏夹 by venjiang 0911&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; MyFavorite &lt;br /&gt;
        {&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; { &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; paths[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorite&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;]; }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;四.修改相应的界面文件&lt;br /&gt;
&lt;/strong&gt;修改Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins\View&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyForums.ascx，&lt;br /&gt;
修改Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins\View&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PrivateMessages.ascx&lt;br /&gt;
修改Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins\Skin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;EditProfile.ascx&lt;br /&gt;
&lt;br /&gt;
在UserPrivateMessages后增加&lt;br /&gt;
   &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;15&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;nbsp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td id&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ControlPanelTabInactive&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; align&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;center&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; nowrap&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;a href&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;%=Globals.GetSiteUrls().MyFavorites%&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;lt;%=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ResourceManager.GetString(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorites_Title&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;%&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;a&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
          &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
修改：  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td colspan&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;11&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ControlPanelTabLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;img width&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; height&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; alt&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;td&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;跨跃列数&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;五.增加相应文件&lt;br /&gt;
&lt;br /&gt;
表现层1，收藏夹主视图&lt;br /&gt;
&lt;/strong&gt;在web&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;user&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;目录增加MyFavorites.aspx，最终用户页面&lt;br /&gt;
在Controls\Views目录增加MyFavoritesView.cs,页面视图服务器控件（主要表现为页面处理逻辑）&lt;br /&gt;
界面视图：在Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins中增加View&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavorites.ascx 收藏夹视图（主要表现为页面UI）&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;组件&lt;/strong&gt;&lt;br /&gt;
在Components目录增加Favorites.cs（相当于业务逻辑层，加s表业务处理），此例中未在子目录Components&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Components中增加Favorite.cs(相当于业务实体层，未加s表实体)，因并不需要，完整的Asp.net forums模式应该还有这一层。&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;表现层2，用户点击收藏按钮后呈现的UI&lt;br /&gt;
&lt;/strong&gt;（这个比较简单）&lt;br /&gt;
在web目录增加MyFavoritesAdd.aspx文件&lt;br /&gt;
处理加入收藏时服务器控件, 在Controls目录增加MyFavoritesAdd.cs（页面处理逻辑）&lt;br /&gt;
在Web\Themes\&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;\Skins中增加Skin&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;MyFavoritesAdd.ascx将主题加入收藏时的视图(UI)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;六．数据库&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;增加表forums_Favorites&lt;/strong&gt;&lt;br /&gt;
UserID    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
ThreadID    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
FavoriteDate    datetime    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;8&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;创建存储过程forums_Favorites_CreateDelete&lt;/strong&gt;&lt;br /&gt;
CREATE  procedure forums_Favorites_CreateDelete&lt;br /&gt;
(&lt;br /&gt;
    @UserID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br /&gt;
    @ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;br /&gt;
    @Action &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
)&lt;br /&gt;
AS&lt;br /&gt;
BEGIN&lt;br /&gt;
&lt;br /&gt;
IF @Action &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
BEGIN&lt;br /&gt;
    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;--&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Does the user already have the ability to see &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; thread&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;?&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
    IF EXISTS (SELECT UserID FROM forums_Favorites WHERE UserID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @UserID and ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @ThreadID)&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
    INSERT INTO&lt;br /&gt;
        forums_Favorites&lt;br /&gt;
    VALUES&lt;br /&gt;
        (&lt;br /&gt;
            @UserID,&lt;br /&gt;
            @ThreadID,&lt;br /&gt;
            getdate()&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    RETURN&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
IF @Action &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
BEGIN&lt;br /&gt;
    DELETE&lt;br /&gt;
        forums_Favorites&lt;br /&gt;
    WHERE&lt;br /&gt;
        UserID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @UserID AND&lt;br /&gt;
        ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; @ThreadID&lt;br /&gt;
    RETURN&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
GO&lt;br /&gt;
SET QUOTED_IDENTIFIER OFF &lt;br /&gt;
GO&lt;br /&gt;
SET ANSI_NULLS ON &lt;br /&gt;
GO&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;七.数据处理&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.Components\Provider\ForumsDataProvider.cs增加&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏夹&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;abstract&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CreateFavorites(ArrayList users, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID);&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;abstract&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DeleteFavorites(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, ArrayList deleteList);&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;. Data Providers\SqlDataProvider\SqlDataProvider.cs增加实现方法&lt;/strong&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; #### 收藏夹 #### by venjiang 0912&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 追加主题到收藏夹&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="userID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;用户ID&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="threadID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;主题ID&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CreateFavorites(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID) &lt;br /&gt;
        {&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( SqlConnection myConnection &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetSqlConnection() ) &lt;br /&gt;
            {&lt;br /&gt;
                SqlCommand myCommand &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlCommand(databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Favorites_CreateDelete&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, myConnection);&lt;br /&gt;
                myCommand.CommandType &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CommandType.StoredProcedure;&lt;br /&gt;
&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Action&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Bit).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DataProviderAction.Create;&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int);&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int);&lt;br /&gt;
&lt;br /&gt;
                myConnection.Open();&lt;br /&gt;
                myCommand.Parameters[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;].Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID;&lt;br /&gt;
                myCommand.Parameters[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;].Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID;&lt;br /&gt;
&lt;br /&gt;
                myCommand.ExecuteNonQuery();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 从收藏夹中删除主题&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="userID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;用户ID&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="deleteList"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;删除列表&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DeleteFavorites(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, ArrayList deleteList) &lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Create Instance of Connection and Command Object&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( SqlConnection myConnection &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetSqlConnection() ) &lt;br /&gt;
            {&lt;br /&gt;
                SqlCommand myCommand &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlCommand(databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Favorites_CreateDelete&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, myConnection);&lt;br /&gt;
                myCommand.CommandType &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CommandType.StoredProcedure;&lt;br /&gt;
&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@Action&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DataProviderAction.Delete;&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID;&lt;br /&gt;
                myCommand.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int);&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Open the connection&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                myConnection.Open();&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Add multiple times&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; deleteList) &lt;br /&gt;
                {&lt;br /&gt;
                    myCommand.Parameters[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;].Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID;&lt;br /&gt;
&lt;br /&gt;
                    myCommand.ExecuteNonQuery();&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.在Data Providers\SqlDataProvider\SqlDataProvider.cs修改GetThreads方法,以支持收藏功能&lt;br /&gt;
&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; #### Threads ####&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 增加贴子收藏 by venjiang 0911&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;override&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadSet GetThreads(&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumID, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageIndex, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageSize, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, &lt;br /&gt;
                DateTime threadsNewerThan, &lt;br /&gt;
                SortThreadsBy sortBy, &lt;br /&gt;
                SortOrder sortOrder, &lt;br /&gt;
                ThreadStatus threadStatus, &lt;br /&gt;
                ThreadUsersFilter userFilter, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; activeTopics,&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unreadOnly, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly, &lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; returnRecordCount,&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 增加新参数，是否仅显示收藏的主题&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; favoriteOnly&lt;br /&gt;
            )&lt;br /&gt;
        {&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Create Instance of Connection and Command Object&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( SqlConnection connection &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; GetSqlConnection() ) {&lt;br /&gt;
                SqlCommand command &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlCommand(databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Threads_GetThreadSet&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, connection);&lt;br /&gt;
                command.CommandType &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; CommandType.StoredProcedure;&lt;br /&gt;
&lt;br /&gt;
                ThreadSet threadSet             &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadSet();&lt;br /&gt;
                StringBuilder sqlCountSelect    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SELECT count(T.ThreadID) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);      &lt;br /&gt;
                StringBuilder sqlPopulateSelect &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;SELECT T.ThreadID, HasRead = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                StringBuilder fromClause        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; FROM &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Threads T &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                StringBuilder whereClause       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; WHERE &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                StringBuilder orderClause       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ORDER BY &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 增加收藏判断 by venjiang 0911&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (favoriteOnly &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;
                {&lt;br /&gt;
                    fromClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Favorites Fav &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Ensure DateTime is min value for SQL&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                threadsNewerThan &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SqlDataProvider.GetSafeSqlDateTime(threadsNewerThan);&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Construct the clauses&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constrain Forums&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Contrain the selectivness to a set of specified forums. The ForumID is our&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; clustered index so we want this to be first&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;T.ForumID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    whereClause.Append(forumID);&lt;br /&gt;
                } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(T.ForumID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Get a list of all the forums the user has access to&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    ArrayList forumList &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Forums.GetForums(userID, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;for&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;; i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumList.Count; i&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;++&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ( ((Forum) forumList[i]).ForumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ) {&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ( (i &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumList.Count) {&lt;br /&gt;
                                whereClause.Append( ((Forum) forumList[i]).ForumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; OR T.ForumID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                                whereClause.Append( ((Forum) forumList[i]).ForumID );&lt;br /&gt;
                                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                    }&lt;br /&gt;
                } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;T.ForumID = 0 AND P.UserID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    whereClause.Append(userID);&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND P.ThreadID = T.ThreadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    fromClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_PrivateMessages P &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constrain Date&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND StickyDate &amp;gt;= '&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                whereClause.Append( threadsNewerThan.ToString( System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.SortableDateTimePattern ));&lt;br /&gt;
                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; '&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constain Approval&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND IsApproved = 1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Constrain Read/Unread&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
                    sqlPopulateSelect.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(SELECT &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.HasReadPost(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    sqlPopulateSelect.Append(userID);&lt;br /&gt;
                    sqlPopulateSelect.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, T.ThreadID, T.ForumID)) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (unreadOnly) {&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.HasReadPost(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        whereClause.Append(userID);&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, T.ThreadID, T.ForumID) = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    }&lt;br /&gt;
                } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                    sqlPopulateSelect.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Unanswered topics&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (unansweredOnly) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND TotalReplies = 0 AND IsLocked = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Active topics&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 热门贴子&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (activeTopics) {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND TotalReplies &amp;gt; 2 AND IsLocked = 0 AND TotalViews &amp;gt; 50&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; 收藏&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 尽显示收藏的主题&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (favoriteOnly) &lt;br /&gt;
                {&lt;br /&gt;
                    whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND T.ThreadID = Fav.ThreadID AND Fav.UserID = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    whereClause.Append(userID);&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Users filter&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.All) &lt;br /&gt;
                {&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ((userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsParticipatedIn) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsNotParticipatedIn)) {&lt;br /&gt;
&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        whereClause.Append(userID);&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsNotParticipatedIn)&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; NOT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; IN (SELECT UserID FROM &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Posts P WHERE P.ThreadID = T.ThreadID)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                    } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userFilter &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadUsersFilter.HideTopicsByNonAnonymousUsers)&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND 0 NOT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
                        whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;IN (SELECT UserID FROM &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.databaseOwner &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.forums_Posts P WHERE ThreadID = T.ThreadID AND P.UserID = 0)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Thread Status&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (threadStatus &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.NotSet) {&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;switch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (threadStatus) {&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.Open:&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND ThreadStatus = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.Closed:&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND ThreadStatus = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadStatus.Resolved:&lt;br /&gt;
                            whereClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AND ThreadStatus = 0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;default&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#region&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Order By&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;switch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortBy) {&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.LastPost:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending) {&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (activeTopics &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly)&lt;br /&gt;
                                orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ThreadDate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;IsSticky, StickyDate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        } &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;br /&gt;
                            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (activeTopics &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;||&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly)&lt;br /&gt;
                                orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ThreadDate DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;IsSticky DESC, StickyDate DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        }&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.TotalRatings:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalRatings&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalRatings DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
            &lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.TotalReplies:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalReplies&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalReplies DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.ThreadAuthor:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PostAuthor DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;PostAuthor&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;case&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortThreadsBy.TotalViews:&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; SortOrder.Ascending)&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalViews&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                            orderClause.Append(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;TotalViews DESC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;br /&gt;
                }&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Build the SQL statements&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                sqlCountSelect.Append(fromClause.ToString());&lt;br /&gt;
                sqlCountSelect.Append(whereClause.ToString());&lt;br /&gt;
&lt;br /&gt;
                sqlPopulateSelect.Append(fromClause.ToString());&lt;br /&gt;
                sqlPopulateSelect.Append(whereClause.ToString());&lt;br /&gt;
                sqlPopulateSelect.Append(orderClause.ToString());&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Add Parameters to SPROC&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ForumID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumID;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@PageIndex&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageIndex;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@PageSize&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageSize;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@sqlCount&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.NVarChar, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; sqlCountSelect.ToString();&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@sqlPopulate&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.NVarChar, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;4000&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; sqlPopulateSelect.ToString();&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@UserID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Int).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID;&lt;br /&gt;
                command.Parameters.Add(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;@ReturnRecordCount&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, SqlDbType.Bit).Value &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; returnRecordCount;&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Execute the command&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                connection.Open();&lt;br /&gt;
                SqlDataReader dr &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; command.ExecuteReader();&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Populate the ThreadSet&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (dr.Read()) {&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Add threads&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;
                        threadSet.Threads.Add( ForumsDataProvider.PopulatePrivateMessageFromIDataReader (dr) );&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
                        threadSet.Threads.Add( ForumsDataProvider.PopulateThreadFromIDataReader(dr) );&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Do we need to return record count?&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (returnRecordCount) {&lt;br /&gt;
&lt;br /&gt;
                    dr.NextResult();&lt;br /&gt;
&lt;br /&gt;
                    dr.Read();&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Read the total records&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    threadSet.TotalRecords &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) dr[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Get the recipients if this is a request for&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; the private message list&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ((forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (dr.NextResult()) ) {&lt;br /&gt;
                    Hashtable recipientsLookupTable &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Hashtable();&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(dr.Read()) {&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) dr[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;ThreadID&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;br /&gt;
&lt;br /&gt;
                        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (recipientsLookupTable[threadID] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;br /&gt;
                            recipientsLookupTable[threadID] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ArrayList();&lt;br /&gt;
                        }&lt;br /&gt;
&lt;br /&gt;
                        ((ArrayList) recipientsLookupTable[threadID]).Add(ForumsDataProvider.PopulateUserFromIDataReader(dr) );&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Map recipients to the threads&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;foreach&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (PrivateMessage thread &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadSet.Threads) {&lt;br /&gt;
                        thread.Recipients &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (ArrayList) recipientsLookupTable[thread.ThreadID];&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                dr.Close();&lt;br /&gt;
                connection.Close();&lt;br /&gt;
&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadSet;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;#endregion&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;八.增加新方法&lt;br /&gt;
&lt;/strong&gt;在Components\Threads.cs增加新的重载方法,以不必修改原来的方法调用.&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 为了不影响以前的程序,单独加一个重载方法,以获得收藏夹主题&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ThreadSet GetThreads(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumID, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageIndex, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageSize, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, DateTime threadsNewerThan, SortThreadsBy sortBy, SortOrder sortOrder, ThreadStatus threadStatus, ThreadUsersFilter userFilter, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; activeTopics, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unreadOnly, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; returnRecordCount,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;bool&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; favoriteOnly) &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 多了一个参数favoriteOnly&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        {&lt;br /&gt;
            ForumContext forumContext &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ForumContext.Current;&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; anonymousKey &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Thread-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; forumID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageSize.ToString() &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; pageIndex.ToString() &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadsNewerThan.DayOfYear.ToString() &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; sortBy &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; sortOrder &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; activeTopics.ToString() &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; unansweredOnly.ToString() &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; favoriteOnly.ToString();&lt;br /&gt;
&lt;br /&gt;
            ThreadSet threadSet;&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; If the user is anonymous take some load off the db&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) &lt;br /&gt;
            {&lt;br /&gt;
                &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (forumContext.Context.Cache[anonymousKey] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;!=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;
                    &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (ThreadSet) forumContext.Context.Cache[anonymousKey];&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Create Instance of the IDataProvider&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            ForumsDataProvider dp &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ForumsDataProvider.Instance();&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; Get the threads&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            threadSet &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; dp.GetThreads(forumID, pageIndex, pageSize, userID, threadsNewerThan, sortBy, sortOrder, threadStatus, userFilter, activeTopics, unreadOnly, unansweredOnly, returnRecordCount,favoriteOnly);&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (userID &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;br /&gt;
                forumContext.Context.Cache.Insert(anonymousKey, threadSet, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, DateTime.Now.AddMinutes(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;), TimeSpan.Zero, CacheItemPriority.Low, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadSet;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;九．业务逻辑层&lt;br /&gt;
&lt;/strong&gt;Components目录中增加Favorites.cs，实现主题的增加删除方法&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; AddFavoritesPost (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; threadID) {&lt;br /&gt;
&lt;br /&gt;
            ForumsDataProvider dp &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ForumsDataProvider.Instance();&lt;br /&gt;
&lt;br /&gt;
            dp.CreateFavorites(userID, threadID);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; 删除收藏&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="userID"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;用户ID&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;&lt;br /&gt;
        &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;///&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;param name="deleteList"&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;删除列表&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(128, 128, 128);"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; DeleteFavorites (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; userID, ArrayList deleteList) {&lt;br /&gt;
&lt;br /&gt;
            &lt;/span&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;//&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;            ForumsDataProvider dp &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ForumsDataProvider.Instance();&lt;br /&gt;
&lt;br /&gt;
            dp.DeleteFavorites(userID, deleteList);&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;十．表现层调用&lt;/strong&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.收藏夹主视图加载收藏主题列表&lt;br /&gt;
&lt;/strong&gt;    threadSet &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Threads.GetThreads(forumID, pager.PageIndex, pager.PageSize, Users.GetUser().UserID, dateFilterValue, threadSortddl.SelectedValue, sortOrderddl.SelectedValue, ThreadStatus.NotSet, ThreadUsersFilter.All, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, hideReadPosts.SelectedValue, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;false&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
注意最后一个参数是true,即返回收藏夹的数据集。&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.增加主题到收藏夹&lt;/strong&gt;&lt;br /&gt;
    Favorites.AddFavoritesPost(user.UserID,post.ThreadID);&lt;br /&gt;
    HttpContext.Current.Response.Redirect(Globals.ApplicationPath&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;+&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;/MyFavoritesAdd.aspx&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.删除收藏的主题&lt;br /&gt;
&lt;/strong&gt;    Favorites.DeleteFavorites（…）&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blog.hidotnet.com/venjiang/aggbug/28.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>venjiang</dc:creator>
            <guid>http://blog.hidotnet.com/venjiang/archive/2006/10/13/28.aspx</guid>
            <pubDate>Fri, 13 Oct 2006 22:54:49 GMT</pubDate>
            <wfw:comment>http://blog.hidotnet.com/venjiang/comments/28.aspx</wfw:comment>
            <comments>http://blog.hidotnet.com/venjiang/archive/2006/10/13/28.aspx#feedback</comments>
            <slash:comments>94</slash:comments>
            <wfw:commentRss>http://blog.hidotnet.com/venjiang/comments/commentRss/28.aspx</wfw:commentRss>
            <trackback:ping>http://blog.hidotnet.com/venjiang/services/trackbacks/28.aspx</trackback:ping>
        </item>
        <item>
            <title>模拟Asp.Net Forums 2.0 数据提供者类</title>
            <link>http://blog.hidotnet.com/venjiang/archive/2006/10/13/27.aspx</link>
            <description>&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; color: blue; font-family: 新宋体;"&gt;using&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; color: blue; font-family: 新宋体;"&gt;using&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt; System.Reflection;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; color: blue; font-family: 新宋体;"&gt;namespace&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt; AbstractClass&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: green;"&gt;//===============================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: green;"&gt;// 模拟Asp.Net Forums 2.0 数据提供者类实现,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: green;"&gt;// 以实现多数据库支持特性.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: green;"&gt;// 2004.8.2 by venjiang.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: green;"&gt;// ==============================================================&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; color: blue; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;#region&lt;/span&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt; 主程序调用&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt; Class1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;    &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;        &lt;/span&gt;[STAThread]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; &lt;/span&gt;&lt;st1:place&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;Main&lt;/span&gt;&lt;/st1:place&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;        &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: green;"&gt;// 所有方法调用,都在BaseAbstact类进行,不涉及子类调用.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: green;"&gt;// 这样只要派生类(SubClass)能够重写基类相应方法就可以了.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; color: green; font-family: 新宋体;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: green;"&gt;// 调用基类静态方法&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;BaseAbstract.BaseOut();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span style="color: green;"&gt;// 调用派生类SubClassA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;BaseAbstract ba=BaseAbstract.Instance("AbstractClass.SubClassA", "Power by venjiang.");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;ba.BaseOut1();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;ba=BaseAbstract.Instance("AbstractClass.SubClassA", "venjiang", 28);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;ba.BaseOut2();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p align="left" style="margin: 0cm 0cm 0pt; text-align: left;" class="MsoNormal"&gt;&lt;span lang="EN-US" style="font-size: 10pt; font-family: 新宋体;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span