中继器 - 比较项目和组

时间:2014-06-05 10:55:51

标签: c# asp.net visual-studio-2012

我有一个转发器,目前在我的第一列显示的是console type列:

在我的专栏标题下:PS4,PS4,PS4,XBOX ONE,XBOX ONE,Nintendo wii

所以它正在对它进行排序,但我想将它分组,以便它只显示一个控制台一次  我认为应该有一种方法可以将dataItemRow与之前的dataItemRow进行比较 但不是很确定如何。有什么建议?

void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {
        //code here that goes through all items and compares items

    }
}

人口:

       SqlDataAdapter da = new SqlDataAdapter("Stored Procedure", conn);
        da.SelectCommand.CommandType = CommandType.StoredProcedure;
        da.SelectCommand.Parameters.Add(new SqlParameter("@Admin", "ALL"));
        DataSet dataset = new DataSet();
        da.Fill(dataset);
        rptItems.DataSource = dataset.Tables[0];
        rptItems.DataBind();

1 个答案:

答案 0 :(得分:0)

背后的主要思想是use two repeater controls(任何基于模板的渲染控件)。外转发器控件的ItemTemplate将托管标头信息和内部转发器控制。内部转发器控件将托管与标题(Group By列)对应的记录

Item databound中的主要逻辑是

  
      
  1. 获取要绑定的记录并获取与列相对应的所有记录,并将其添加到临时列表中
  2.   
  3. 使用绑定记录中的值构建标题信息
  4.   
  5. 将记录从临时名单(从1)绑定到内部转发器
  6.   
  7. 忽略绑定的记录和同一组的其他记录
  8.   

如果您需要代码帮助,请与我们联系。