您的位置:首页 > 编程语言 > ASP

开源ASP.NET论坛YAF 定制化开发 Part 2

2008-09-07 06:31 183 查看
[align=center]开源ASP.NET论坛YAF 定制化开发 Part 2[/align]

目前,开源ASP.NET论坛EntLib.com/YAF 已经升级到.Net Framework 3.5 平台和Visual Studio 2008。我们将根据各方用户的反馈意见,对论坛进行升级,增加更多的功能,更好地满足用户的实际需求。本开源论坛可以免费使用,同时提供项目源代码下载。

前一篇文章:
开源ASP.NET论坛EntLib.com/YAF 定制化开发 Part 1

这里进一步对EntLib.com / YAF 开源ASP.NET论坛进行定制化开发 – 允许每个论坛(Forum)设定论坛图标,如下图所示:

每个论坛图标可以直观说明本论坛的内容,点击论坛图标也可直接进入论坛。可以访问http://forum.entlib.com 查看演示效果。

按照如下步骤实现定制化开发:
1.修改表 yaf_Forum,增加字段 ForumIcon-nvarchar(100)。另外,还需要修改存储过程 [yaf_forum_listread],增加 ForumIcon 字段的输出。

2.修改ForumList.ascx 页面文件,增加论坛图标的输出。
示例代码如下:
[align=left]<asp:Repeater id="forumList1" runat="server">[/align]
[align=left]<ItemTemplate>[/align]
[align=left] <tr class="post">[/align]
[align=left] <td><%# GetForumIcon(Container.DataItem) %></td>[/align]
[align=left] <td>[/align]
[align=left] <span class="forumheading"><%# GetForumLink((System.Data.DataRow)Container.DataItem) %></span>[/align]
[align=left] <span class="forumviewing"><%# GetViewing(Container.DataItem) %></span><br />[/align]
[align=left] <span class="subforumheading"><%# DataBinder.Eval(Container.DataItem, "[\"Description\"]") %></span>[/align]
[align=left] <br/>[/align]
[align=left] <asp:repeater visible='true' id="ModeratorList" runat="server" onitemcommand='ModeratorList_ItemCommand' datasource='<%# ((System.Data.DataRow)Container.DataItem).GetChildRows("FK_Moderator_Forum") %>'>[/align]
[align=left] <HeaderTemplate><span class="smallfont"><%# ForumPage.GetText("moderators") %>: </HeaderTemplate>[/align]
[align=left] <ItemTemplate><%# DataBinder.Eval(Container.DataItem, "[\"UserName\"]") %></ItemTemplate>[/align]
[align=left] <SeparatorTemplate>, </SeparatorTemplate>[/align]
[align=left] <FooterTemplate></span></FooterTemplate>[/align]
[align=left] </asp:repeater>[/align]
[align=left] </td>[/align]
[align=left] <td align="center"><%# Topics(Container.DataItem) %></td>[/align]
[align=left] <td align="center"><%# Posts(Container.DataItem) %></td>[/align]
[align=left] <td align="center" class="smallfont"><%# yaf.Utils.BadWordReplace(FormatLastPost((System.Data.DataRow)Container.DataItem)) %></td>[/align]
[align=left] <td><%# GetForumLogoLink(Container.DataItem) %></td>[/align]
[align=left] </tr>[/align]
</ItemTemplate>
……

其中GetForumLogoLink(Container.DataItem)的后台代码如下:
[align=left] protected string GetForumLogoLink(object _o)[/align]
[align=left] {[/align]
[align=left] string strReturn = "";[/align]
[align=left] string strForumDescription = "";[/align]
[align=left] [/align]
[align=left] DataRow row = (DataRow)_o;[/align]
[align=left] [/align]
[align=left] int ForumID = Convert.ToInt32(row["ForumID"]);[/align]
[align=left] [/align]
[align=left] // get the Forum Description[/align]
[align=left] strForumDescription = Convert.ToString(row["Forum"]);[/align]
[align=left] [/align]
[align=left] string strPath = "/images/forumicons/icon_entlib.gif";[/align]
[align=left] [/align]
[align=left] object iconPath = row["ForumIcon"];[/align]
[align=left] [/align]
[align=left] if (iconPath != System.DBNull.Value)[/align]
[align=left] {[/align]
[align=left] strPath = "/images/forumicons/" + iconPath.ToString();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] if (int.Parse(row["ReadAccess"].ToString()) > 0)[/align]
[align=left] {[/align]
[align=left] strReturn = String.Format("<a href=\"{0}\"><img src='{1}' alt='{2}' /></a>",[/align]
[align=left] Forum.GetLink(yaf.Pages.topics, "f={0}", ForumID),[/align]
[align=left] strPath,[/align]
[align=left] strForumDescription[/align]
[align=left] );[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] {[/align]
[align=left] // no access to this forum[/align]
[align=left] strReturn = String.Format("<img src='{0}' alt='{1}' />", strPath, ForumPage.GetText("NO_FORUM_ACCESS"));[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] return strReturn;[/align]
}

上述代码实现论坛图标的输出显示。

如有疑问,欢迎到 http://forum.EntLib.com 开源ASP.NET技术论坛交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: