2009-03-03 21 views
3

私はいくつかのデータを複数のセクションで表形式で提示する必要があります。特に、データの各セクションは、1日ごとに(それ自身のヘッダーで)分割されます。これは基本的に1回限りのシングルページ契約であり、実際には維持されないため、私はアーキテクチャに多くの努力を払うつもりはありません。ASP.NETでセクションとヘッダーを含むテーブルを作成するにはどうすればよいですか?

私は2つのテーブルを持っています。ヘッダーとアイテム。

ヘッダーのフォーマットを有する:

date(datetime), type(tinyint), firstline(varchar), secondline(varchar) 

項目をIは、第1およびsecondlineデータが読み込まれ(これに似てデータを必要

id(int), date(datetime), type(tinyint), name(varchar), value1(int), 
    value2(int), value3(int) 

のフォーマットを有し、第三の行は静的ですテキスト、アイテムラインは人口データです):

1/1/2009 
-------------------------------------------------------------------------- 
|        [First line]        | 
-------------------------------------------------------------------------- 
|        [Second line]        | 
-------------------------------------------------------------------------- 
| Date |  Name   | Value 1 | Value 2 | Value 3 | 
========================================================================== 
| [Date]|  [Name]   | [Value 1] | [Value 2] | [Value 3] | 
-------------------------------------------------------------------------- 
| [Date]|  [Name]   | [Value 1] | [Value 2] | [Value 3] | 
-------------------------------------------------------------------------- 
1/2/2009 
-------------------------------------------------------------------------- 
|        [First line]        | 
-------------------------------------------------------------------------- 
|        [Second line]        | 
-------------------------------------------------------------------------- 
| Date |  Name   | Value 1 | Value 2 | Value 3 | 
========================================================================== 
| [Date]|  [Name]   | [Value 1] | [Value 2] | [Value 3] | 
-------------------------------------------------------------------------- 
| [Date]|  [Name]   | [Value 1] | [Value 2] | [Value 3] | 
-------------------------------------------------------------------------- 

これは現在、(d)にすべての日のために繰り返されますatabase、毎日それ自身のヘッダーを持つ独自のテーブルを持つ。それらはタイプによってもフィルタリングされます。ページには、指定されたタイプのヘッダーとアイテムのみが表示されます。タイプは細かいです。

質問には、使用するのに最適なASP.NET要素は何ですか?データリスト?グリッドビュー?ヘッダー/アイテム形式で2つのテーブルのデータを含めるにはどうすればよいですか?

EDIT: 申し訳ありませんが、これは、Windows 2000/IIS5上で動作するように持っていることを言及するのを忘れてしまったので、私はASP.NET 2.0でこだわっていると、3.0または3.5の機能を使用することはできません。

+0

リストビューを確認してください。リストビューをオブジェクトのコレクションにバインドし、それらのオブジェクトをデータベースから取得します。リストビューでは、これらのすべてを設定し、その表示を究極的に制御することができます。実際には素晴らしい。 –

答えて

0

[OK]を、相続人の最終的な解決策のCOLSPANを持っているだろうことを意味します。私はこれが最も効率的でない、または最速ではないと確信していますが、私はそれを完了させ、何か他のものと一緒に進む必要がありました。

私の最初のステップは、RowBaseと呼ばれる基本クラスを作成することでした。これは、GetRow()という抽象メソッドを実装した抽象クラスでした。そして、私はRowBaseからBannerRowとItemRowの2つのクラスを派生させました。これらのクラスには、テーブルで使用されるすべてのデータを含むフィールドが含まれています。

次に、2つのDataTableを作成し、2つのクエリの結果をDataAdapter経由で入力しました。

次に、リスト<RowBase>を作成し、データ型の上に置いて、行のタイプに応じてBannerRowまたはItemRowを作成しました。

次に、BannerRowsがItemRowより優先されることを確認するために、ソートして、日付と行のタイプをソートするList <RowBase>を実行しました。

最後に、自分のWebフォームにテーブルを作成し、id = "maintable"のrunat = "server"に設定してから、リスト<RowBase>を繰り返して各RowBaseでGetRowを呼び出しました。

BannerRowおよびItemRowにはそれぞれ、正しい形式でデータを含めるようにフォーマットされたHtmlTableRowを返すGetRow()のオーバーライドがありました。次に、条件付きロジックを使用して、ItemRowデータのヘッダー行をすべて挿入しました。

これはRobとBenのアイデアのバリエーションですが、データのマッサージをもっと多く含んでいます。そのため、私は両方のアップフォートを与えましたが、答えに自分自身を信じています。

1

データをXMLとして返し、XSLTを使用してレポートを作成することをお勧めします。それ以外の場合は、ネストされたGridViewまたはリピータを使用する必要があります。

2

asp:tableを見てください。あるプログラム内で、コード内のいくつかの入れ子になった条件付き反復で行と列を追加することができます。

1

パターンが同じ数のラインなどで毎回真である場合は、リピータが最善の賭けであり、レイアウトが画面上でどのように見えるかを制御できます。

1

<asp:Table>をページに置き、コードの背後に構築します。

列(セル)にcolspanパラメータを使用すると、必要な行に対して複数の列にまたがるエントリを作成できます。上記のアプリの

、これは最初の行、2行目は、私が思いついた5

関連する問題