zoukankan      html  css  js  c++  java
  • Repeater嵌套实现论坛板块界面及贴吧内容页

    首先理解实现方法,rpt可以实现从库中去出的数据,自定义布局,常见的栏目排版大致是这样:

    1,栏目1

    2,栏目2

    3,栏目3

    这是常见的rpt使用,但做论坛板块就要细分到子版块,那格式就有所不同。

    1,栏目1

       1,栏目1-子栏目1

       1,栏目2-子栏目2

    2,栏目2

       2,栏目1-子栏目1

       2,栏目2-子栏目2

    要达到这样的效果就要使用到RPT嵌套。

    大致说一下数据库设计方式,简单的设计,不说的特别复杂。首先有普通栏目的一些信息,ID字段,还有是否子栏目的字段,父级栏目

    的ID标识等等。根据自己设计情况定夺,设计好之后就开始大致布局一下上面的板块;

    我设计的界面大致图。

    代码如下:

    View Code
    <div class="Star_Btop">
    <div class="Star_bbsFrame">
    <div class="Star_bbs_Top">社区公告:</div>
    <asp:Repeater ID="RepeaterForFristList" runat="server"
    onitemdatabound
    ="RepeaterForFristList_ItemDataBound" >
    <ItemTemplate>
    <div class="Star_bbs_One">
    <a><%# DataBinder.Eval(Container.DataItem, "StarTitle")%></a>
    </div>
    <asp:Repeater ID="RepeaterForSedList" runat="server">
    <ItemTemplate>
    <div class="Star_B_O_BD">
    <div class="Star_B_O_one">
    <div class="Star_B_O_ImgF">
    <a href="/star_list_<%#Eval("ID") %>"><img src="<%# DataBinder.Eval(Container.DataItem, "StarImg")%>" alt="<%# DataBinder.Eval(Container.DataItem, "StarTitle")%>" /></a>
    </div>
    <div class="Star_B_O_TextF">
    <div class="Star_B_O_T_Title"><a href="/star_list_<%#Eval("ID") %>"><%# DataBinder.Eval(Container.DataItem, "StarTitle")%></a>(今日:<span style="color:#FF6600; font-weight:normal;"><%#pa.GetStarIDReturnTodayBBs(Convert.ToInt32(Eval("ID")))%></span>)</div>
    <div class="Star_B_O_T_text"><%# DataBinder.Eval(Container.DataItem, "Dis")%></div>
    </div>
    </div>
    <div class="Star_B_O_HF"><span><%#pa.GetStarIDReturnMainBBs(Convert.ToInt32(Eval("ID")))%></span>&nbsp;/&nbsp;<%#pa.GetStarIDReturnAllBBs(Convert.ToInt32(Eval("ID")))%></div>
    <div class="Star_B_O_T_LastHF">
    <div class="Star_B_O_T_BBSTitle"><a href="/star_<%#pa.GetStarIDReturnlastbbsinfo(Convert.ToInt32(Eval("ID"))).ID%>"><%#pa.GetStarIDReturnlastbbsinfo(Convert.ToInt32(Eval("ID"))).BBsTitle%></a></div>
    <div class="Star_B_O_T_BBSArter">作者:<%#pa.GetName(Convert.ToInt32(pa.GetStarIDReturnlastbbsinfo(Convert.ToInt32(Eval("ID"))).MyNumber))%>&nbsp;-<%#pa.DateDiff(Convert.ToDateTime(pa.GetStarIDReturnlastbbsinfo(Convert.ToInt32(Eval("ID"))).CreateTime))%></div>
    </div>

    </div>
    </ItemTemplate>
    </asp:Repeater>
    </ItemTemplate>
    </asp:Repeater>
    </div>

     在代码中的RPT控件RepeaterForFristList(顶级板块)中再次使用了一个RPT控件RepeaterForSedList,这样就达到了我们想要

    的基本效果,然后把论坛板块的基本字段信息填写好,就可以了。

    具体绑定方法:

    首先将表层的RPT绑定,大家应该都会;

    RepeaterForFristList.DataSource = starmainobj.GetListInfo(10, "", "Starcolumn=1 and Recommend=0", " Starorder asc");
    RepeaterForFristList.DataBind();

    然后绑定里层子RPT绑定,首先要从表层获取到一些表层的基本字段,比如ID项,这就是为什么要在数据库设计时要多建立一个父级

    ID字段,来区分我的子RPT绑定的是哪个板块下面的栏目。

    Star_Main starmainobj = new Star_Main();
    protected void RepeaterForFristList_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
    Repeater rptProduct
    = (Repeater)e.Item.FindControl("RepeaterForSedList");
    //找到分类Repeater关联的数据项
    DataRowView rowv = (DataRowView)e.Item.DataItem;
    //提取分类ID
    int CategorieId = Convert.ToInt32(rowv["ID"]);
    //根据分类ID查询该分类下的板块,并绑定板块Repeater
    rptProduct.DataSource = starmainobj.GetListInfo(10, "", "Starcolumn=" + CategorieId + " and Recommend=0", " Starorder asc");
    rptProduct.DataBind();
    }
    }

    Repeater rptProduct = (Repeater)e.Item.FindControl("RepeaterForSedList");
    自定义 RPT控件 绑定到 RepeaterForSedList 中,因为此时的的子集RPT是一个集合;   

    上面的绑定代码中,int CategorieId = Convert.ToInt32(rowv["ID"]);获取到父级栏目字段ID后,进行绑定;

    运行一下看效果:

    论坛中我顺便也在后台做了一个简单的管理的功能,这样方便首页显示调用:

    基本达到了仿一些社区版块的设计方式,还可以利用这种方法做贴吧回复,文章回复的列表信息;

    这种也就是RPT嵌套做出来的嘛,效果还是相当不错的噢!

    希望可以和大家更多交流一下。

  • 相关阅读:
    批处理、WMI、wmic、守护进程
    链接
    给自己一个提醒——读了这篇文章感觉目前就略有体会,但是它又是一个长期的过程。
    如何设置一个日期型的TextView
    广播机制与短信拦截器
    开篇来个记录随笔 ,再感谢一下园子的管理们
    J2EE (四) Servlet 模板方法模式
    J2EE (五) SQL+PageClass实现真分页
    JMeter设置HTML报告中开始以及结束时间精确到秒
    Tomcat部署应用启动报错java.lang.ClassCastException: [XXX].filter.CharacterEncoding cannot be cast to jakarta.servlet.Filter
  • 原文地址:https://www.cnblogs.com/zisou/p/1958976.html
Copyright © 2011-2022 走看看