C# 中继器-比较项目和组
我有一个中继器,目前在我的第一列中,它显示的是C# 中继器-比较项目和组,c#,asp.net,visual-studio-2012,C#,Asp.net,Visual Studio 2012,我有一个中继器,目前在我的第一列中,它显示的是控制台类型列: 在我的专栏标题下:PS4、PS4、PS4、XBOX ONE、XBOX ONE、任天堂wii 所以它正在对它进行排序,但我希望对它进行分组,以便它只显示一个控制台一次 我认为应该有一种方法将dataItemRow与以前的dataItemRow进行比较 但我不确定怎么做。有什么建议吗 void rptItems_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (
控制台类型
列:
在我的专栏标题下:PS4、PS4、PS4、XBOX ONE、XBOX ONE、任天堂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();
其主要思想是使用两个转发器控件(任何基于模板的渲染控件)。外部中继器控件的ItemTemplate将承载报头信息和内部中继器控件。内部中继器控件将承载与标题对应的记录(按列分组) 项数据绑定中的主要逻辑是
如果您需要代码帮助,请告诉我。您的数据来自哪里?如果它来自SQL,那么您可以使用DISTINCT只获取每个唯一的值。提供正在填充repeaterI的代码我已经包括,现在它来自一个存储过程,我无法在实际的存储过程中执行distinct操作。好的,这可能会起作用,但如果您查看我提供的代码,我肯定要做的就是如果previousDataItemRow!=DataItemRow然后写入DataItemRow(ConsoleType),但我不确定语法(e.Item.ItemType==ListItemType.Item | | | e.Item.ItemType==ListItemType.AlternatingItem),是的,这也可能有效。但我是用不同的方式做的。一点相反的逻辑。这是我首先要做的“如果(e.Item.ItemType!=ListItemType.Item&&e.Item.ItemType!=ListItemType.AlternatingItem)返回”,然后我要绑定内部转发器。正如我在注释中所建议的,除非在代码中有这样做的业务原因,在数据源级别执行操作总是会更高效,并且代码更少maintain@matt_lethargic,我同意您的看法,但OP的要求似乎并没有要求从数据源级别处理它。我在帮助他理解自己的逻辑。