私は、画像に記載されているようにサブスクライバのリストを表示する仕事があります。このシナリオでASP.NETのどのデータコントロールが最適であるかを知りたいと思います。私はListviewで遊んでいるだけですが、私はここから人々の意見を得たいと思います。ありがとうございました。ファラズ。
Update1:グリッドビュー(リストビュー内にネストされたリスト)をここで使用する必要がありますか?または、単一のリストビューで行うことはできますか?
私は、画像に記載されているようにサブスクライバのリストを表示する仕事があります。このシナリオでASP.NETのどのデータコントロールが最適であるかを知りたいと思います。私はListviewで遊んでいるだけですが、私はここから人々の意見を得たいと思います。ありがとうございました。ファラズ。
Update1:グリッドビュー(リストビュー内にネストされたリスト)をここで使用する必要がありますか?または、単一のリストビューで行うことはできますか?
明らかに、グリッドビューは、(おそらく自動生成列で最小限の労力で)望ましい表形式のレイアウトを提供します。
ただし、ページング、並べ替え、編集が必要な場合は、リピータコントロールを使用することになります。主な理由は、マークアップを正確に制御することです。たとえば、グリッドビューでは、<colgroup>
や<thead>
などの要素はサポートされていません(レイアウトにはこれらの要素は必要ありません)。ページング/並べ替え/編集などが必要な場合は、ListViewを使用するのが適切です。
複数の表を表示する限り、ネストされたコントロールを使用することができます。たとえば、リピータ/リストビューでグリッドビューをネストすることができます。
EDIT:
あなたが持っているデータの構造についても、必要な正確なレイアウトについて非常に明確ではありません。だからここに私が仮定している - あなたは単一のList<Subscriber>
が両方のルートの加入者とその子供を含んでいる。また、レイアウトでは、ルートサブスクライバの1つのテーブルとそれに続く複数のテーブル(各ルートサブスクライバの子に1つ)が必要です。
マークアップは、これはこれはあなたの進め方についていくつかのアイデアを与えるだろう、このような
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();
として2つのコードビハインド方法の希望によってサポートされます
<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>
のようなものになります。
私にとってこれは通常のヘッダーテキストを持つGridViewです。上の最初のバーは、グリッドの前に他のコントロールや純粋なHTMLで作成することができます。 ListViewsはグリッドではなく、最終的な予想結果がグリッドに近いときは使用しないでください。
お返事ありがとうございました。しかし私の場合は、グリッドビューのリストを表示する必要があります(サブスクライバが持つことができる子サブスクライバの数に基づいて、この数は動的です)。ご意見をお聞かせください。 – nfa379
GridViewコントロールを見てみましょう。また、2つのコントロールの比較については、これを確認してください(http://stackoverflow.com/questions/891918/grid-view-vs-list-view)。 – AlexB