伙计们我有一份工作来显示图片中给出的订阅者列表。我想知道ASP.NET中的哪个数据控件对于这种情况是完美的。我正在玩Listview,但我想从这里得到人们的意见。谢谢。 Faraaz。
Update1:我应该在这里使用网格视图列表(嵌套在列表视图中)吗?或者可以使用单个列表视图完成吗?
答案 0 :(得分:1)
对我来说这是一个带有常用标题文本的GridView。上面的第一个栏可以在网格之前与任何其他控件或纯HTML一起制作。 ListViews不是网格,在我认为当最终预期结果更接近网格时不应该使用它
答案 1 :(得分:1)
显然,网格视图会为您提供所需的表格布局(可能只需要使用自动生成的列进行最少的工作)。
但是,如果需要进行分页,排序,编辑,那么我宁愿用户使用Repeater控件。主要原因是精确控制加价。例如,网格视图不支持<colgroup>
或<thead>
等元素(同样,您的布局可能不需要这些元素)。如果需要分页/排序/编辑等,那么ListView是更好的选择。
就显示多个表而言,您可以使用嵌套控件 - 例如,嵌套网格视图的转发器/列表视图。
修改强>
您不太清楚自己拥有的数据结构以及所需的确切布局。所以这就是我假设的 - 你有一个List<Subscriber>
包含root订阅者和他们的孩子。在布局中,您需要一个用于root用户的表,后跟多个表 - 每个root用户的子节点一个。
标记将类似于
<asp:Repeater runat="server" ID="Outer" >
<HeaderTemplate>
<%-- Put a grid here for parent -->
<asp:GridView runat="server" ID="Root" DataSource='<%# GetRootSubscribers() %>' >
... column def etc
</asp:GridView>
</HeaderTemplate>
<ItemTemplate>
<!-- Put a grid here for children for current root subsriber -->
<asp:GridView runat="server" ID="Child" DataSource='<%# GetChildSubscribers(Eval("MemberID")) %>' >
... column def etc
</asp:GridView>
</ItemTemplate>
</asp:Repeater>
这将由两个代码隐藏方法支持,例如
protected IEnumerable<Subscriber> GetRootSubscribers()
{
// I am not sure how you decide if a subscriber is a parent or not, I have just
// illustrated a condition where you have a parent id field to indicate the same
return allSubscribers.Where(s => s.ParentID == null);
}
protected IEnumerable<Subscriber> GetChildSubscribers(object memberId)
{
// I am not sure how you decide a child subscriber, I have just
// illustrated a condition where you have a parent id field to indicate the same
return allSubscribers.Where(s => s.ParentID.Equals(memberId));
}
// bind the outer repeater to root list
Outer.DataSource = GetRootSubscribers();
Outer.DataBind();
希望这会让你知道如何继续。