打印本文 打印本文 关闭窗口 关闭窗口
以增加收藏夹功能为实例,解析asp.net forums2结构流程及组件设计
作者:武汉SEO闵涛  文章来源:敏韬网  点击数4068  更新时间:2009/4/23 10:43:20  文章录入:mintao  责任编辑:mintao
nbsp;        SortOrder sortOrder,
                ThreadStatus threadStatus,
                ThreadUsersFilter userFilter,
                bool activeTopics,
                bool unreadOnly,
                bool unansweredOnly,
                bool returnRecordCount,
                // 增加新参数,是否仅显示收藏的主题
                bool favoriteOnly
            )
        {

            // Create Instance of Connection and Command Object
            //
            using( SqlConnection connection = GetSqlConnection() ) {
                SqlCommand command = new SqlCommand(databaseOwner + ".forums_Threads_GetThreadSet", connection);
                command.CommandType = CommandType.StoredProcedure;

                ThreadSet threadSet             = new ThreadSet();
                StringBuilder sqlCountSelect    = new StringBuilder("SELECT count(T.ThreadID) ");     
                StringBuilder sqlPopulateSelect = new StringBuilder("SELECT T.ThreadID, HasRead = ");
                StringBuilder fromClause        = new StringBuilder(" FROM " + this.databaseOwner + ".forums_Threads T ");
                StringBuilder whereClause       = new StringBuilder(" WHERE ");
                StringBuilder orderClause       = new StringBuilder(" ORDER BY ");

                // 增加收藏判断 by venjiang 0911
                if (favoriteOnly == true)
                {
                    fromClause.Append("," + this.databaseOwner + ".forums_Favorites Fav ");
                }

                // Ensure DateTime is min value for SQL
                //
                threadsNewerThan = SqlDataProvider.GetSafeSqlDateTime(threadsNewerThan);

                // Construct the clauses
                #region Constrain Forums

                // Contrain the selectivness to a set of specified forums. The ForumID is our
                // clustered index so we want this to be first
                if (forumID > 0) {
                    whereClause.Append("T.ForumID = ");
                    whereClause.Append(forumID);
                } else if (forumID < 0) {
                    whereClause.Append("(T.ForumID = ");

                    // Get a list of all the forums the user has access to
                    //
                    ArrayList forumList = Forums.GetForums(userID, false, true);

                    for (int i = 0; i < forumList.Count; i++) {

                        if ( ((Forum) forumList[i]).ForumID > 0 ) {
                            if ( (i + 1) < forumList.Count) {
                                whereClause.Append( ((Forum) forumList[i]).ForumID + " OR T.ForumID = ");
                            } else {
                                whereClause.Append( ((Forum) forumList[i]).ForumID );
                                whereClause.Append(")");
                            }
                        }

                    }
                } else {
                    whereClause.Append("T.ForumID = 0 AND P.UserID = ");
                    whereClause.Append(userID);
                    whereClause.Append(" AND P.ThreadID = T.ThreadID ");
                    fromClause.Append(", " + this.databaseOwner + ".forums_PrivateMessages P ");
                }
                #endregion

                #region Constrain Date
                whereClause.Append(" AND StickyDate >= ''''");
                whereClause.Append( threadsNewerThan.ToString( System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.SortableDateTimePattern ));
                whereClause.Append(" ''''");
                #endregion

                #region Constain Approval
                whereClause.Append(" AND IsApproved = 1");
             

上一页  [1] [2] [3] [4] [5] [6]  下一页

打印本文 打印本文 关闭窗口 关闭窗口