温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:SpaceBuilder v1.1源代码
当前文件:
SpaceBuider11/BasicWebControls/Channel/Search/ForumSearchResults.cs[7K,2009-6-12 11:54:32],打开代码结构图
SpaceBuider11/BasicWebControls/Channel/Search/ForumSearchResults.cs[7K,2009-6-12 11:54:32],打开代码结构图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.Controls.Utils; 13
using System.Web.UI.HtmlControls; 14
using System.Web.UI.WebControls; 15
using SpaceBuilder.Utils; 16
using SpaceBuilder.Clubs.Components; 17
using TunyNet.Data.Utils; 18
using TunyNet.Utils; 19
using SpaceBuilder.Posts.Components; 20
using SpaceBuilder.Posts.Providers; 21
22
namespace SpaceBuilder.Search.Controls 23
{ 24
/// <summary> 25
/// 显示论坛信息搜索结果 26
/// </summary> 27
public class ForumSearchResults : TemplatedWebControl 28
{ 29
SBContext sbContext; 30
31
protected override void OnInit(EventArgs e) 32
{ 33
if (SkinName == null) 34
ExternalSkinFileName = "Searchs/Skin-ForumSearchResults.ascx"; 35
else 36
ExternalSkinFileName = SkinName; 37
38
sbContext = SBContext.Current; 39
base.OnInit(e); 40
} 41
42
protected override void OnLoad(EventArgs e) 43
{ 44
base.OnLoad(e); 45
if (!Page.IsPostBack) 46
DataBind(); 47
} 48
49
public override void DataBind() 50
{ 51
base.DataBind(); 52
BindData(); 53
} 54
55
56
Child Controls 81
82
/// <summary> 83
/// 附加子控件 84
/// </summary> 85
protected override void AttachChildControls() 86
{ 87
statusMessage = FindControl("StatusMessage") as StatusMessage; 88
89
noResultsDiv = FindControl("NoResultsDiv") as HtmlControl; 90
listPostsDiv = FindControl("ListPostsDiv") as HtmlControl; 91
searchHint = FindControl("SearchHint") as Literal; 92
93
postsRepeater = FindControl("PostsRepeater") as Repeater; 94
pager = FindControl("Pager") as Pager; 95
96
if (postsRepeater != null) 97
postsRepeater.ItemDataBound += new RepeaterItemEventHandler(PostsRepeater_ItemDataBound); 98
99
} 100
101
void BindData() 102
{ 103
PostFullTextQuery query = new PostFullTextQuery(); 104
query.ConvertFromQueryString(); 105
if (query.IsValid()) 106
{ 107
query.PageSize = 10; 108
query.PageIndex = pager.PageIndex; 109
110
SearchResultDataSet<PostSearchItem> pds = PostSearchProvider.Instance().Search(query); 111
postsRepeater.DataSource = pds.Records; 112
postsRepeater.DataBind(); 113
114
if (pds.TotalRecords > 0) 115
{ 116
searchHint.Text = "约有 <span class='stress'>" + pds.TotalRecords + " </span>个帖子满足搜索条件,搜索用时 " + pds.SearchDuration + " 秒"; 117
118
pager.TotalRecords = pds.TotalRecords; 119
pager.PageSize = query.PageSize; 120
} 121
else 122
{ 123
noResultsDiv.Visible = true; 124
listPostsDiv.Visible = false; 125
} 126
} 127
else 128
{ 129
listPostsDiv.Visible = false; 130
statusMessage.Visible = true; 131
statusMessage.MessageType = StatusMessageType.Error; 132
statusMessage.Text = "请填写您的搜索条件,再进行搜索"; 133
} 134
} 135
136
private void PostsRepeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 137
{ 138
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 139
{ 140
PostSearchItem item = e.Item.DataItem as PostSearchItem; 141
if (item != null) 142
{ 143
HyperLink subject = e.Item.FindControl("Subject") as HyperLink; 144
if (subject != null) 145
{ 146
subject.Text = item.Subject; 147
if (!ValueHelper.IsNullOrEmpty(item.PostUrl)) 148
{ 149
subject.NavigateUrl = Globals.FullPathForMainSite(item.PostUrl); 150
subject.Attributes["target"] = "_blank"; 151
} 152
} 153
154
Literal body = e.Item.FindControl("Body") as Literal; 155
if (body != null) 156
body.Text = item.Body; 157
158
159
HtmlContainerControl authorBlock = e.Item.FindControl("AuthorBlock") as HtmlContainerControl; 160
if (item.ClubID > 0) 161
{ 162
authorBlock.Visible = true; 163
HyperLink author = e.Item.FindControl("Author") as HyperLink; 164
if (author != null) 165
{ 166
author.Text = item.Author; 167
if (!ValueHelper.IsNullOrEmpty(item.UserProfileUrl)) 168
{ 169
author.NavigateUrl = Globals.FullPathForMainSite(item.UserProfileUrl); 170
author.Attributes["target"] = "_blank"; 171
} 172
} 173
} 174
175
Literal lastUpdatedDate = e.Item.FindControl("LastUpdatedDate") as Literal; 176
if (lastUpdatedDate != null) 177
lastUpdatedDate.Text = Formatter.FormatDate(item.LastUpdatedDate); 178
179
HtmlContainerControl clubNameBlock = e.Item.FindControl("ClubNameBlock") as HtmlContainerControl; 180
if (item.ClubID > 0) 181
{ 182
clubNameBlock.Visible = true; 183
HyperLink clubName = e.Item.FindControl("ClubName") as HyperLink; 184
if (clubName != null && !ValueHelper.IsNullOrEmpty(item.ClubName)) 185
{ 186
clubName.Text = item.ClubName; 187
if (item.ClubID > 0) 188
{ 189
clubName.NavigateUrl = ClubUrls.Instance().ClubDomainHome(item.ClubID); 190
clubName.Attributes["target"] = "_blank"; 191
} 192
} 193
} 194
195
} 196
} 197
} 198
199
} 200
} 201






}