当前位置:编程学习 > C#/ASP.NET >>

两个Repeater嵌套,内层Repeater分页问题,求大神

用Repeater做了个留言板,现在已经实现动态加载留言,

新需求是,在留言板的每一条留言下显示对该条留言的回复,

(如同百度贴吧对某一楼的回复),

 

内层的回复又用了一个Repeater,

现在能实现对里层Repeater2的绑定,写在Repeater1的ItemDataBound事件里,

但是Repeater2的数据不能分页 ,根本找不到AspNetPager控件,

也没有PageChanging事件,手动添加在后台也不可能找到其Id,

另外,我Repeater2里有文本框,要实现对某一楼留言的回复,

那回复之后要怎么再次绑定Repeater2?

求大神,高分给 ,
asp.net Repeater嵌套分页 AspNetPager Repeater --------------------编程问答--------------------
这是前台,选中部分是内层Repeater --------------------编程问答--------------------
这是后台对Repeater2的绑定 ,
写在Repeater1 的ItemsDataBound事件里 , --------------------编程问答--------------------
 <asp:Repeater ID="repPostInfo" runat="server" OnItemDataBound="repPostInfo_ItemDataBound">
                        <ItemTemplate>
                            <div class="repeatlist">
                                <input id="Label1" type="button" title="<%# DataBinder.Eval(Container.DataItem, "Id")%>"
                                    value="button" />
                                <asp:Label ID="Label11" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Id")%>'></asp:Label>
                                <div class="listimg">
                                    <img alt="" src="<%# DataBinder.Eval(Container.DataItem, "UserPic")%>" height="90px"
                                        width="110px" />
                                    <div class="uname">
                                        <%# DataBinder.Eval(Container.DataItem, "ReplyUserName")%>
                                        <br />
                                        <%# DataBinder.Eval(Container.DataItem, "Floor")+"楼"%></div>
                                </div>
                                <div class="listcont">
                                    <div class="listshow" id="listshow">
                                        <%# DataBinder.Eval(Container.DataItem, "ReplyContent")%>
                                    </div>
                                    
                                    <div class="listtime" title="" id="divid">
                                                发表于:<span>
                                                    <%# DataBinder.Eval(Container.DataItem, "ReplyTime")%></span></div>
                                    <div id="divUserReplyInfo" runat="server">
                                   <asp:Repeater ID="repUserReplyInfo" runat="server">
                                     <ItemTemplate>
                                            <%# DataBinder.Eval(Container.DataItem, "SenderId")%>:<span>
                                                    <%# DataBinder.Eval(Container.DataItem, "ReplyContent")%><br/>
                                        </ItemTemplate>
                                    </asp:Repeater>
                                    <div class="anpager">
                            <webdiyer:AspNetPager ID="AspNetPager3" runat="server" AlwaysShow="True" CssClass="pages"
                                CurrentPageButtonClass="cpb" HorizontalAlign="Center">
                            </webdiyer:AspNetPager>
                        </div>
                                    </div>
                                     
                                </div>
                                <asp:Button ID="btnReply" class="btnReply" runat="server" Text="回复" OnClick="btnReply_Click" />
                                <div class="UserReplyContent" title="<%# DataBinder.Eval(Container.DataItem, "UserReplyTitle")%>"
                                    id="divUserReplyContent">
                                </div>
                            </div>
                        </ItemTemplate>
                    </asp:Repeater>
--------------------编程问答-------------------- 同问,有大神吗,想顺便学习一下 , --------------------编程问答--------------------
protected void repPostInfo_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {

            Repeater rep = e.Item.FindControl("repUserReplyInfo") as Repeater;//找到里层的repeater对象
            DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 
            int ReplyId = Convert.ToInt32(rowv["id"]); //获取填充子类的id 
            HtmlControl id = e.Item.FindControl("AspNetPager3") as HtmlControl;
            AspNetPager AspNetPager3 = (AspNetPager)e.Item.FindControl("AspNetPager3");


            AspNetPager3.PageSize = 1;
            AspNetPager3.RecordCount = ResultCountByrepUserReplyInfo(ReplyId);
            if (AspNetPager3.PageSize >= AspNetPager3.RecordCount)
            {
                AspNetPager3.Visible = false;
            }
            else
            {
                AspNetPager3.Visible = true;
            }
            rep.DataSource = GetUserReply(ReplyId, AspNetPager3.PageSize * (AspNetPager3.CurrentPageIndex - 1), AspNetPager3.PageSize, "UserReply");
            rep.DataBind();
                    }
--------------------编程问答-------------------- 没人吗,求帮忙啊 , --------------------编程问答-------------------- 用地址栏传参数
比如 gbook.aspx?page=1&page2=2&s=1111#1111
page=1是留言的分页,page2是回复的分页,s是将留言ID为1111的回复显示,其他隐藏。
#1111是书签 --------------------编程问答-------------------- 你要做到体验好一点,就用ajax吧 --------------------编程问答--------------------
引用 7 楼 huayy 的回复:
用地址栏传参数
比如 gbook.aspx?page=1&page2=2&s=1111#1111
page=1是留言的分页,page2是回复的分页,s是将留言ID为1111的回复显示,其他隐藏。
#1111是书签


可不可以说详细点 ? --------------------编程问答-------------------- 这还要多详细呢,
对了,你不能用AspNetPager控件,得自己写分页代码。 --------------------编程问答--------------------
引用 10 楼 huayy 的回复:
这还要多详细呢,
对了,你不能用AspNetPager控件,得自己写分页代码。


我懂你的意思,要动态判断很多东西 , --------------------编程问答-------------------- 有木有人 , --------------------编程问答-------------------- 加油,楼主~      --------------------编程问答-------------------- 好像我现在也是这样问题,楼猪弄好没有,那个数据是绑定在itemdatabound里面的 --------------------编程问答-------------------- 楼组问题解决了吗,碰到同样的问题,求分享! --------------------编程问答--------------------  当时做过一个项目 嵌套了3层的repeater  也用到了分页。 主要的就是一个findID的什么方法。可以动态找到对应的repeater里面的空间ID的。 --------------------编程问答-------------------- lz,
Insus.NET想问你一下,没有嵌套的Repeater控件,也就是说,单独的一个Repeater控件,能实现分页吗?
如果回签肯定的的话,嵌套之后的Repeater控件分页也一定没有问题,不管是嵌套还是被嵌套的Repeater控件。
当然这不是单单所指Repeater,Datalist还是GridView控件。 --------------------编程问答--------------------
引用 5 楼 ljj5610 的回复:
protected void repPostInfo_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {

            Repeater rep = e.Item.FindControl("repUserReplyInfo") as Repeater;//找到里层的repeater对象
            DataRowView rowv = (DataRowView)e.Item.DataItem;//找到分类Repeater关联的数据项 
            int ReplyId = Convert.ToInt32(rowv["id"]); //获取填充子类的id 
            HtmlControl id = e.Item.FindControl("AspNetPager3") as HtmlControl;
            AspNetPager AspNetPager3 = (AspNetPager)e.Item.FindControl("AspNetPager3");


            AspNetPager3.PageSize = 1;
            AspNetPager3.RecordCount = ResultCountByrepUserReplyInfo(ReplyId);
            if (AspNetPager3.PageSize >= AspNetPager3.RecordCount)
            {
                AspNetPager3.Visible = false;
            }
            else
            {
                AspNetPager3.Visible = true;
            }
            rep.DataSource = GetUserReply(ReplyId, AspNetPager3.PageSize * (AspNetPager3.CurrentPageIndex - 1), AspNetPager3.PageSize, "UserReply");
            rep.DataBind();
                    }

先绑定数据源,再去做分页试试 --------------------编程问答-------------------- Repeater嵌套的响应速度很慢的,建议少用服务器控件的嵌套。

单层循环可以使用,嵌套循环可以使用追加等方式实现 --------------------编程问答-------------------- 这东西放到网络上能用么? 
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,