请教 .NET 大牛们:关于List按条件分组和后台动态生成Repeater的问题

downiis6 2014-05-08 09:40:01
在日常编码中,喜欢使用List<T>来获取数据库回传的数据,并将其绑定到Repeater控件中显示。(这个Repeater是在前台定义好的)

可最近在做一个项目的时候,遇到了以下几个问题:

1.某一个期刊杂志,在展示页需要按照发行年年份份进行分组,sql语句如下:select * from paper group by pub_year desc;
获取到的数据添加到了List<Model_期刊杂志> 集合中。

这是我做的按照每年展示期刊号的页面效果图:


想问问大牛们,如何按照年份把List<Model_期刊杂志>的数据拆分并添加到多个(数量未知)List<Model_期刊杂志>中去呢

2.获得了这些分拆的List<Model_期刊杂志>以后,如何在后台动态生成Repeater,并将这些分拆的List<Model_期刊杂志>的数据,绑定到生成好的Repeater中呢
...全文
165 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
downiis6 2014-05-08
  • 打赏
  • 举报
回复
我对Linq语句不是太了解,能不能请insus大师点明关于List<T> Group by的示例,在谷歌上转了一圈也没找到太多的帮助。
insus 2014-05-08
  • 打赏
  • 举报
回复
insus 2014-05-08
  • 打赏
  • 举报
回复
引用 2 楼 downiis6 的回复:
我对Linq语句不是太了解,能不能请insus大师点明关于List<T> Group by的示例,在谷歌上转了一圈也没找到太多的帮助。
#1楼的回复链接中,就是从List<T>获取类别,以及传入类别之后,获取类别相的资料。 如果你十分对List<T>不了解,可以直接使用DataTable 先是从数据库中获取年份,绑定给外层的Repeater,再写一个存储过程,是By年份的,把这个绑定给内层的Repeater. 不懂的,看视频或下载示例代码: http://www.cnblogs.com/insus/archive/2011/07/04/2097179.html
webdiyer 2014-05-08
  • 打赏
  • 举报
回复
假设你的Model是PubList: 先选出所有不重复的年份: var years=PubList.Select(p=>p.pub_year).Distinct(); 按年份从高到低循环显示杂志: foreach (var year in years.OrderByDescending(y => y)){ //当前年份的杂志期数 var pubs=PubList.Where(p=>p.pub_year==year).OrderBy(p=>p.pub_期数); 年份:<%:year%> <asp:Repeater //绑定pubs... }
grn0515 2014-05-08
  • 打赏
  • 举报
回复

  <table border="0" cellpadding="0" cellspacing="0"  width="100%">
        <asp:Repeater runat="server" ID="rptypelist" OnItemDataBound="rptypelist_ItemDataBound">
            <ItemTemplate>
                <tr>
                    <td>
                        <%#Eval("name")%>
                    </td>
                    <td>
                        <table>
                            <tr>
                                <td>
                                    <asp:Repeater runat="server" ID="rpquestionlist">
                                        <ItemTemplate>
                                            <%#Eval("name")%>
                                        </ItemTemplate>
                                    </asp:Repeater>
                                </td>
                            </tr>
                        </table>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>

  public List<Model> list = new List<Model>();
        public class Model
        {
            public int id { get; set; }
            public string name { get; set; }
            public int parentid { get; set; }
            public string time { get; set; }
        }

       
        protected void Page_Load(object sender, EventArgs e)
        {
          
            list.Add(new Model { id = 1, name = "2014年度", parentid = 0, time = "2014" });
            list.Add(new Model { id = 2, name = "第01期", parentid = 1, time = "2014" });
            list.Add(new Model { id = 3, name = "第02期", parentid = 1, time = "2014" });
            list.Add(new Model { id = 4, name = "第03期", parentid = 1, time = "2014" });
            list.Add(new Model { id = 5, name = "2013年度", parentid = 0, time = "2013" });
            list.Add(new Model { id = 6, name = "第01期", parentid = 5, time = "2013" });
            list.Add(new Model { id = 7, name = "第02期", parentid = 5, time = "2013" });
            list.Add(new Model { id = 8, name = "第03期", parentid = 5, time = "2013" });
            list.Add(new Model { id = 9, name = "2012年度", parentid = 0, time = "2012" });
            list.Add(new Model { id = 10, name = "第01期", parentid = 9, time = "2012" });
            list.Add(new Model { id = 11, name = "第02期", parentid = 9, time = "2012" });
            list.Add(new Model { id = 12, name = "第03期", parentid = 9, time = "2012" });

            RpTypeBind();
        }

        private void RpTypeBind()
        {
            this.rptypelist.DataSource = list.Where(x => x.parentid == 0).ToList();
            this.rptypelist.DataBind();
        }
        protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater rep = e.Item.FindControl("rpquestionlist") as Repeater;//找到里层的repeater对象
                List<Model> listLevel = rptypelist.DataSource as List<Model>;
                if (listLevel != null && rep != null)
               {
                   rep.DataSource = list.Where(x => x.parentid == listLevel[e.Item.ItemIndex].id);
                   rep.DataBind();
               }
            }
        }

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧