嵌套中继器

我有一个显示器需要比我习惯的更动态,似乎无法找到我需要的答案。

Customer a Customer b Customer c (and so on) savings with product a savings with product b (and so on) 

我知道每个领域至少会有一个。 有人说使用嵌套转发器或其他东西。 我环顾四周,无法找到如何使用嵌套转发器。 我在截止日期前,在找到有效的东西之前不能真正玩弄东西。

我应该使用什么asp控件来做到这一点? 一个例子会很好,但我只是需要帮助正确的方向。

我正在使用sql但通过链接获取数据。 数据最终列在清单中。

谢谢您的帮助!

嵌套中继器非常简单。 只需在ItemTemplate中抛出一个,并在主中继器的OnItemDataBound事件中执行以下操作

 if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { DataRowView row = (DataRowView)e.Item.DataItem; Repeater nestedRepeater = e.Item.FindControl("NestedRepeater") as Repeater; nestedRepeater.DataSource = getSavingsPerCustomer(row["customerID"]); nestedRepeater.DataBind(); } 

外转发器的模板具有客户名称和转发器,内部转发器具有不同的节省

可能是错误的语法,但你明白了

   
Customer: <%= Eval(customer)%>
Saving: <%= Eval(saving)%>

类似的问题:中继器中的中继器

我知道这个问题是针对数据表的,但我在尝试用对象完成相同的任务时发现了这个问题,但我没有找到答案,并认为这对其他人有用。

如果您正在使用其中包含嵌套对象的对象,则可以像这样设置数据源

 DataSource='<%# Eval("ChildDataSourceProperty") %>' 

所有其他答案看起来太复杂,我得出了这个结论

这是我的完整转发器代码

   
<%# Eval("ParentProperty") %>

<%# Eval("ChildObjectProperty") %>

您可以使用带有AutoGenerateColumns =“true”的GridView。 这将根据您绑定的数据源创建您的collumns。

   

考虑这个课程

 public class A { public string Field1 { get; set; } public int Field2 { get; set; } } 

而这段代码

 GridView1.DataSource = new List() { new A() { Field1 = "a", Field2 = 1 }, new A() { Field1 = "b", Field2 = 2 }, new A() { Field1 = "c", Field2 = 3 }, }; GridView1.DataBind(); 

这将生成一个HTML表,其中包含名为Field1和Field2的列以及相应的3行。 像这样的东西。

 
Field1 Field2
a 1
b 2
c 3

如果将数据源更改为具有不同列的另一个源,它将自动为您生成相应的列。