您目前尚未登陆,请选择【登陆】或【注册
首页->博客论坛->SpaceBuilder v1.1源代码>>BlogControls/Channel/BlogRanks.cs>>源码在线查看
温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:SpaceBuilder v1.1源代码
当前文件:文件类型 SpaceBuider11/BlogControls/Channel/BlogRanks.cs打开代码结构图
高亮显示
		            //------------------------------------------------------------------------------
// <copyright company="Tunynet">
//     Copyright (c) Tunynet Inc.  All rights reserved.
// </copyright> 
//------------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Text;
using SpaceBuilder.Controls.BaseClasses;
using SpaceBuilder.Components;
using SpaceBuilder.Blogs.Components;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using SpaceBuilder.Controls.Utils;
using SpaceBuilder.Utils;
using SpaceBuilder.Controls;
using TunyNet.Data.Utils;
using TunyNet.Utils;

namespace SpaceBuilder.Blogs.Controls
{
    /// <summary>
    /// 显示博客排行
    /// </summary>
    public class BlogRanks : TemplatedWebControl
    {
        SBContext wlContext;
        /// <summary>
        /// 控件初始化时,父类会调用这个方法
        /// </summary>
        /// <param name="e"></param>
        protected override void OnInit(EventArgs e)
        {
            if (SkinName == null)
                ExternalSkinFileName = "Blogs/Skin-BlogRanks.ascx";
            else
                ExternalSkinFileName = SkinName;

            wlContext = SBContext.Current;

            base.OnInit(e);
        }

        #region Child Controls
        
        HtmlControl rankByPointsLi;
        /// <summary>
        /// 积分最高
        /// </summary>
        HyperLink rankByPoints;
        HtmlControl rankByPostCountLi;
        /// <summary>
        /// 文章最多
        /// </summary>
        HyperLink rankByPostCount;
        HtmlControl rankByCommentCountLi;
        /// <summary>
        /// 评论最多
        /// </summary>
        HyperLink rankByCommentCount;
        HtmlControl rankByHitTimesLi;
        /// <summary>
        /// 浏览最多
        /// </summary>
        HyperLink rankByHitTimes;
        HtmlControl rankByWeekHitTimesLi;
        /// <summary>
        /// 本周浏览最多
        /// </summary>
        HyperLink rankByWeekHitTimes;
        HtmlControl rankByPostDateLi;
        /// <summary>
        /// 最新发布
        /// </summary>
        HyperLink rankByPostDate;


        /// <summary>
        /// 分页控件
        /// </summary>
        Pager pager;
        Pager pager2;

        Repeater blogsRepeater;

        #endregion
        /// <summary>
        /// 加载子控件,父类加载皮肤文件时会调用这个方法
        /// </summary>
        protected override void AttachChildControls()
        {
            rankByPointsLi = FindControl("RankByPointsLi") as HtmlControl;
            rankByPoints = FindControl("RankByPoints") as HyperLink;
            rankByPostCountLi = FindControl("RankByPostCountLi") as HtmlControl;
            rankByPostCount = FindControl("RankByPostCount") as HyperLink;
            rankByCommentCountLi = FindControl("RankByCommentCountLi") as HtmlControl;
            rankByCommentCount = FindControl("RankByCommentCount") as HyperLink;
            rankByHitTimesLi = FindControl("RankByHitTimesLi") as HtmlControl;
            rankByHitTimes = FindControl("RankByHitTimes") as HyperLink;
            rankByWeekHitTimesLi = FindControl("RankByWeekHitTimesLi") as HtmlControl;
            rankByWeekHitTimes = FindControl("RankByWeekHitTimes") as HyperLink;
            rankByPostDateLi = FindControl("RankByPostDateLi") as HtmlControl;
            rankByPostDate = FindControl("RankByPostDate") as HyperLink;


            pager = FindControl("Pager") as Pager;
            pager2 = FindControl("Pager2") as Pager;

            blogsRepeater = FindControl("BlogsRepeater") as Repeater;
            blogsRepeater.ItemDataBound += new RepeaterItemEventHandler(BlogsRepeater_ItemDataBound);
        }

        /// <summary>
        /// 控件被加载时,会先调用这个方法
        /// </summary>
        /// <param name="e"></param>
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            EnsureChildControls();
            /*
            RankBy={0}
             */
            if (wlContext.GetIntFromQueryString("RankBy", 0) > 0)
                this.SortBy = (SortBlogsBy)wlContext.GetIntFromQueryString("RankBy", 0);

            if (!Page.IsPostBack)
                DataBind();
        }

        /// <summary>
        /// 为这个控件绑定上数据,父类会自动调用这个方法
        /// </summary>
        public override void DataBind()
        {
            base.DataBind();
            Bind();
        }

        /// <summary>
        /// 绑定数据方法具体实现
        /// </summary>
        void Bind()
        {
            Header.AddTitle(Globals.SiteName + " :: 博客(blog) - 博客排名", Context);
           //string asdasd = ChannelUrls.Instance().BlogPostsForTab(10, (int)BlogThreadSortBy.TotalRatings, SortOrder.Descending);
            
            switch (this.SortBy)
            {
                case SortBlogsBy.Points:
                    rankByPointsLi.Attributes["class"] = "selected";
                    break;
                case SortBlogsBy.PostCount:
                    rankByPostCountLi.Attributes["class"] = "selected";
                    break;
                case SortBlogsBy.CommentCount:
                    rankByCommentCountLi.Attributes["class"] = "selected";
                    break;
                case SortBlogsBy.WeekHitTimes:
                    rankByWeekHitTimesLi.Attributes["class"] = "selected";
                    break;
                case SortBlogsBy.HitTimes:
                    rankByHitTimesLi.Attributes["class"] = "selected";
                    break;
                case SortBlogsBy.CreateDate:
                    rankByPostDateLi.Attributes["class"] = "selected";
                    break;
            }

            rankByPoints.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.Points);
            rankByPostCount.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.PostCount);
            rankByCommentCount.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.CommentCount);
            rankByHitTimes.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.HitTimes);
            rankByWeekHitTimes.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.WeekHitTimes);
            rankByPostDate.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.CreateDate);

             //ChannelUrls.Instance().

            BlogQuery query = new BlogQuery();
            query.SortBy = this.SortBy;
            query.SortOrder = SortOrder.Descending;
            query.PageIndex = pager.PageIndex;

            PagingDataSet<Weblog> pds = Weblogs.GetWeblogs(query);
            if (pds != null)
            {
                if (pager != null)
                {
                    pager.TotalRecords = pds.TotalRecords;
                    pager.PageSize = query.PageSize;
                }
                if (pager2 != null)
                {
                    pager2.TotalRecords = pds.TotalRecords;
                    pager2.PageSize = query.PageSize;
                }

            }

            blogsRepeater.DataSource = pds.Records;
            blogsRepeater.DataBind();
        }

        /// <summary>
        /// 绑定每条记录项时,会调用这个方法
        /// 目的是为了给每条记录中对应的每个子控件绑定上数据
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BlogsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Weblog blog = (Weblog)e.Item.DataItem;

                if (blog != null)
                {
                    HyperLink blogName = e.Item.FindControl("BlogName") as HyperLink;
                    if (blogName != null)
                    {
                        blogName.Text = blog.SectionName;

                        blogName.ToolTip = string.Format("查看 {0} 的博客", blogName.Text);
                        blogName.Text = StringUtils.Trim(blogName.Text, 15);
                        blogName.NavigateUrl = UserUrls.Instance().BlogHome(blog.ApplicationKey);
                        blogName.Attributes["target"] = "_blank";
                    }

                    HyperLink author = e.Item.FindControl("Author") as HyperLink;
                    if (author != null)
                    {
                        User blogmaster=SpaceBuilder.Components.Users.FindUserByUsername(blog.ApplicationKey);
                        if (blogmaster != null)
                        {
                            author.Text = StringUtils.Trim(blogmaster.NickName, 8);
                            author.ToolTip = blogmaster.NickName;
                            author.NavigateUrl = UserUrls.Instance().UserProfile(blog.ApplicationKey, UserType.PersonUser);
                            author.Attributes["target"] = "_blank";
                        }
                    }

                    Literal lastUpdatedDate = e.Item.FindControl("LastUpdatedDate") as Literal;
                    if (lastUpdatedDate != null)
                        lastUpdatedDate.Text = Formatter.FormatDate(blog.MostRecentPostDate);

                    Literal points = e.Item.FindControl("Points") as Literal;
                    if (points != null)
                        points.Text = blog.Points.ToString();

                    //Literal postCount = e.Item.FindControl("ArticleCount") as Literal;
                    //if (postCount != null)
                    //    postCount.Text = blog.ArticleCount.ToString();

                    Literal articleCount = e.Item.FindControl("PostCount") as Literal;
                    if (articleCount != null)
                        articleCount.Text = blog.PostCount.ToString();

                    Literal commentCount = e.Item.FindControl("CommentCount") as Literal;
                    if (commentCount != null)
                        commentCount.Text = blog.CommentCount.ToString();

                    Literal hitTimes = e.Item.FindControl("HitTimes") as Literal;
                    if (hitTimes != null)
                        hitTimes.Text = blog.HitTimes.ToString();

                    Literal weekHitTimes = e.Item.FindControl("WeekHitTimes") as Literal;
                    if (weekHitTimes != null)
                        weekHitTimes.Text = blog.WeekHitTimes.ToString();

                    
                }
            }
        }


        #region 属性

        /// <summary>
        /// 排名依据
        /// </summary>
        private SortBlogsBy sortBy = SortBlogsBy.Points;
        public SortBlogsBy SortBy
        {
            get { return sortBy; }
            set { sortBy = value; }
        }

        #endregion

    }
}

        
还没有找到您心仪的内容?请用.net源码大搜捕
代码片断 打包下载该项目完整源码:SpaceBuilder v1.1源代码