开源ASP.NET
论坛YAF
定制化开发 Part 2
目前,开源ASP.NET论坛EntLib.com/YAF 已经升级到.Net Framework 3.5 平台和Visual Studio 2008。我们将根据各方用户的反馈意见,对论坛进行升级,增加更多的功能,更好地满足用户的实际需求。本开源论坛可以免费使用,同时提供项目源代码下载。
前一篇文章:
这里进一步对EntLib.com / YAF 开源ASP.NET论坛进行定制化开发 – 允许每个论坛(Forum)设定论坛图标,如下图所示:
每个论坛图标可以直观说明本论坛的内容,点击论坛图标也可直接进入论坛。可以访问
http://forum.entlib.com 查看演示效果。
按照如下步骤实现定制化开发:
1.修改表 yaf_Forum,增加字段 ForumIcon-nvarchar(100)。另外,还需要修改存储过程 [yaf_forum_listread],增加 ForumIcon 字段的输出。
2.修改ForumList.ascx 页面文件,增加论坛图标的输出。
示例代码如下:
<
asp
:
Repeater
id="forumList1" runat="server">
<
ItemTemplate
>
<tr class="post">
<td><%# GetForumIcon(Container.DataItem) %></td>
<td>
<span class="forumheading"><%# GetForumLink((System.Data.DataRow)Container.DataItem) %></span>
<span class="forumviewing"><%# GetViewing(Container.DataItem) %></span><br />
<span class="subforumheading"><%# DataBinder.Eval(Container.DataItem, "[\"Description\"]") %></span>
<br/>
<asp:repeater visible='true' id="ModeratorList" runat="server" onitemcommand='ModeratorList_ItemCommand' datasource='<%# ((System.Data.DataRow)Container.DataItem).GetChildRows("FK_Moderator_Forum") %>'>
<HeaderTemplate><span class="smallfont"><%# ForumPage.GetText("moderators") %>: </HeaderTemplate>
<ItemTemplate><%# DataBinder.Eval(Container.DataItem, "[\"UserName\"]") %></ItemTemplate>
<SeparatorTemplate>, </SeparatorTemplate>
<FooterTemplate></span></FooterTemplate>
</asp:repeater>
</td>
<td align="center"><%# Topics(Container.DataItem) %></td>
<td align="center"><%# Posts(Container.DataItem) %></td>
<td align="center" class="smallfont"><%# yaf.Utils.BadWordReplace(FormatLastPost((System.Data.DataRow)Container.DataItem)) %></td>
<td><%# GetForumLogoLink(Container.DataItem) %></td>
</tr>
</
ItemTemplate
>
……
其中
GetForumLogoLink(Container.DataItem)的后台代码如下:
protected string GetForumLogoLink(object _o)
{
string strReturn = "";
string strForumDescription = "";
DataRow row = (DataRow)_o;
int ForumID = Convert.ToInt32(row["ForumID"]);
// get the Forum Description
strForumDescription = Convert.ToString(row["Forum"]);
string strPath = "/images/forumicons/icon_entlib.gif";
object iconPath = row["ForumIcon"];
if (iconPath != System.DBNull.Value)
{
strPath = "/images/forumicons/" + iconPath.ToString();
}
if (int.Parse(row["ReadAccess"].ToString()) > 0)
{
strReturn = String.Format("<a href=\"{0}\"><img src='{1}' alt='{2}' /></a>",
Forum.GetLink(yaf.Pages.topics, "f={0}", ForumID),
strPath,
strForumDescription
);
}
else
{
// no access to this forum
strReturn = String.Format("<img src='{0}' alt='{1}' />", strPath, ForumPage.GetText("NO_FORUM_ACCESS"));
}
return strReturn;
}
上述代码实现论坛图标的输出显示。
如有疑问,欢迎到
http://forum.EntLib.com 开源ASP.NET技术论坛交流。