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

开源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技术论坛交流。
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值