温馨提示:代码在线浏览功能只能做为源码浏览参考,不能展示项目的全部,如果想更进一步了解该代码请下载:SpaceBuilder v1.1源代码
当前文件路径:SpaceBuider11/BlogControls/Channel/BlogRanks.cs

1//------------------------------------------------------------------------------ 2
// <copyright company="Tunynet"> 3
// Copyright (c) Tunynet Inc. All rights reserved. 4
// </copyright> 5
//------------------------------------------------------------------------------ 6
7
using System; 8
using System.Collections.Generic; 9
using System.Text; 10
using SpaceBuilder.Controls.BaseClasses; 11
using SpaceBuilder.Components; 12
using SpaceBuilder.Blogs.Components; 13
using System.Web.UI.HtmlControls; 14
using System.Web.UI.WebControls; 15
using SpaceBuilder.Controls.Utils; 16
using SpaceBuilder.Utils; 17
using SpaceBuilder.Controls; 18
using TunyNet.Data.Utils; 19
using TunyNet.Utils; 20
21
namespace SpaceBuilder.Blogs.Controls 22
{ 23
/// <summary> 24
/// 显示博客排行 25
/// </summary> 26
public class BlogRanks : TemplatedWebControl 27
{ 28
SBContext wlContext; 29
/// <summary> 30
/// 控件初始化时,父类会调用这个方法 31
/// </summary> 32
/// <param name="e"></param> 33
protected override void OnInit(EventArgs e) 34
{ 35
if (SkinName == null) 36
ExternalSkinFileName = "Blogs/Skin-BlogRanks.ascx"; 37
else 38
ExternalSkinFileName = SkinName; 39
40
wlContext = SBContext.Current; 41
42
base.OnInit(e); 43
} 44
45
Child Controls 88
/// <summary> 89
/// 加载子控件,父类加载皮肤文件时会调用这个方法 90
/// </summary> 91
protected override void AttachChildControls() 92
{ 93
rankByPointsLi = FindControl("RankByPointsLi") as HtmlControl; 94
rankByPoints = FindControl("RankByPoints") as HyperLink; 95
rankByPostCountLi = FindControl("RankByPostCountLi") as HtmlControl; 96
rankByPostCount = FindControl("RankByPostCount") as HyperLink; 97
rankByCommentCountLi = FindControl("RankByCommentCountLi") as HtmlControl; 98
rankByCommentCount = FindControl("RankByCommentCount") as HyperLink; 99
rankByHitTimesLi = FindControl("RankByHitTimesLi") as HtmlControl; 100
rankByHitTimes = FindControl("RankByHitTimes") as HyperLink; 101
rankByWeekHitTimesLi = FindControl("RankByWeekHitTimesLi") as HtmlControl; 102
rankByWeekHitTimes = FindControl("RankByWeekHitTimes") as HyperLink; 103
rankByPostDateLi = FindControl("RankByPostDateLi") as HtmlControl; 104
rankByPostDate = FindControl("RankByPostDate") as HyperLink; 105
106
107
pager = FindControl("Pager") as Pager; 108
pager2 = FindControl("Pager2") as Pager; 109
110
blogsRepeater = FindControl("BlogsRepeater") as Repeater; 111
blogsRepeater.ItemDataBound += new RepeaterItemEventHandler(BlogsRepeater_ItemDataBound); 112
} 113
114
/// <summary> 115
/// 控件被加载时,会先调用这个方法 116
/// </summary> 117
/// <param name="e"></param> 118
protected override void OnLoad(EventArgs e) 119
{ 120
base.OnLoad(e); 121
EnsureChildControls(); 122
/* 123
RankBy={0} 124
*/ 125
if (wlContext.GetIntFromQueryString("RankBy", 0) > 0) 126
this.SortBy = (SortBlogsBy)wlContext.GetIntFromQueryString("RankBy", 0); 127
128
if (!Page.IsPostBack) 129
DataBind(); 130
} 131
132
/// <summary> 133
/// 为这个控件绑定上数据,父类会自动调用这个方法 134
/// </summary> 135
public override void DataBind() 136
{ 137
base.DataBind(); 138
Bind(); 139
} 140
141
/// <summary> 142
/// 绑定数据方法具体实现 143
/// </summary> 144
void Bind() 145
{ 146
Header.AddTitle(Globals.SiteName + " :: 博客(blog) - 博客排名", Context); 147
//string asdasd = ChannelUrls.Instance().BlogPostsForTab(10, (int)BlogThreadSortBy.TotalRatings, SortOrder.Descending); 148
149
switch (this.SortBy) 150
{ 151
case SortBlogsBy.Points: 152
rankByPointsLi.Attributes["class"] = "selected"; 153
break; 154
case SortBlogsBy.PostCount: 155
rankByPostCountLi.Attributes["class"] = "selected"; 156
break; 157
case SortBlogsBy.CommentCount: 158
rankByCommentCountLi.Attributes["class"] = "selected"; 159
break; 160
case SortBlogsBy.WeekHitTimes: 161
rankByWeekHitTimesLi.Attributes["class"] = "selected"; 162
break; 163
case SortBlogsBy.HitTimes: 164
rankByHitTimesLi.Attributes["class"] = "selected"; 165
break; 166
case SortBlogsBy.CreateDate: 167
rankByPostDateLi.Attributes["class"] = "selected"; 168
break; 169
} 170
171
rankByPoints.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.Points); 172
rankByPostCount.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.PostCount); 173
rankByCommentCount.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.CommentCount); 174
rankByHitTimes.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.HitTimes); 175
rankByWeekHitTimes.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.WeekHitTimes); 176
rankByPostDate.NavigateUrl = ChannelUrls.Instance().BlogRanks((int)SortBlogsBy.CreateDate); 177
178
//ChannelUrls.Instance(). 179
180
BlogQuery query = new BlogQuery(); 181
query.SortBy = this.SortBy; 182
query.SortOrder = SortOrder.Descending; 183
query.PageIndex = pager.PageIndex; 184
185
PagingDataSet<Weblog> pds = Weblogs.GetWeblogs(query); 186
if (pds != null) 187
{ 188
if (pager != null) 189
{ 190
pager.TotalRecords = pds.TotalRecords; 191
pager.PageSize = query.PageSize; 192
} 193
if (pager2 != null) 194
{ 195
pager2.TotalRecords = pds.TotalRecords; 196
pager2.PageSize = query.PageSize; 197
} 198
199
} 200
201
blogsRepeater.DataSource = pds.Records; 202
blogsRepeater.DataBind(); 203
} 204
205
/// <summary> 206
/// 绑定每条记录项时,会调用这个方法 207
/// 目的是为了给每条记录中对应的每个子控件绑定上数据 208
/// </summary> 209
/// <param name="sender"></param> 210
/// <param name="e"></param> 211
private void BlogsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 212
{ 213
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 214
{ 215
Weblog blog = (Weblog)e.Item.DataItem; 216
217
if (blog != null) 218
{ 219
HyperLink blogName = e.Item.FindControl("BlogName") as HyperLink; 220
if (blogName != null) 221
{ 222
blogName.Text = blog.SectionName; 223
224
blogName.ToolTip = string.Format("查看 {0} 的博客", blogName.Text); 225
blogName.Text = StringUtils.Trim(blogName.Text, 15); 226
blogName.NavigateUrl = UserUrls.Instance().BlogHome(blog.ApplicationKey); 227
blogName.Attributes["target"] = "_blank"; 228
} 229
230
HyperLink author = e.Item.FindControl("Author") as HyperLink; 231
if (author != null) 232
{ 233
User blogmaster=SpaceBuilder.Components.Users.FindUserByUsername(blog.ApplicationKey); 234
if (blogmaster != null) 235
{ 236
author.Text = StringUtils.Trim(blogmaster.NickName, 8); 237
author.ToolTip = blogmaster.NickName; 238
author.NavigateUrl = UserUrls.Instance().UserProfile(blog.ApplicationKey, UserType.PersonUser); 239
author.Attributes["target"] = "_blank"; 240
} 241
} 242
243
Literal lastUpdatedDate = e.Item.FindControl("LastUpdatedDate") as Literal; 244
if (lastUpdatedDate != null) 245
lastUpdatedDate.Text = Formatter.FormatDate(blog.MostRecentPostDate); 246
247
Literal points = e.Item.FindControl("Points") as Literal; 248
if (points != null) 249
points.Text = blog.Points.ToString(); 250
251
//Literal postCount = e.Item.FindControl("ArticleCount") as Literal; 252
//if (postCount != null) 253
// postCount.Text = blog.ArticleCount.ToString(); 254
255
Literal articleCount = e.Item.FindControl("PostCount") as Literal; 256
if (articleCount != null) 257
articleCount.Text = blog.PostCount.ToString(); 258
259
Literal commentCount = e.Item.FindControl("CommentCount") as Literal; 260
if (commentCount != null) 261
commentCount.Text = blog.CommentCount.ToString(); 262
263
Literal hitTimes = e.Item.FindControl("HitTimes") as Literal; 264
if (hitTimes != null) 265
hitTimes.Text = blog.HitTimes.ToString(); 266
267
Literal weekHitTimes = e.Item.FindControl("WeekHitTimes") as Literal; 268
if (weekHitTimes != null) 269
weekHitTimes.Text = blog.WeekHitTimes.ToString(); 270
271
272
} 273
} 274
} 275
276
277
属性 290
291
} 292
}





}