3

複数のセクションを持つ表形式で表示する必要があるデータがあります。特に、データの各セクションは (独自のヘッダーで) 日ごとに分割されます。これは基本的に 1 つのページに関する 1 回限りの取引であり、実際に維持されることはないので、アーキテクチャにはあまり力を入れたくありません。

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

HEADERS の形式は次のとおりです。

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

アイテムのフォーマットは

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

次のようなデータが必要です (1 行目と 2 行目にはデータが入力され、3 行目には静的テキストが、項目行にはデータが入力されます)。

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] |
--------------------------------------------------------------------------

これは、現在データベースにあるすべての日に対して繰り返され、毎日、独自のヘッダーを持つ独自のテーブルがあります。また、タイプ別にフィルタリングされます。ページには、指定されたタイプのヘッダーとアイテムのみが表示されます。型は tinyint です。

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

編集: 申し訳ありませんが、これは Windows 2000/IIS5 で動作する必要があることを忘れていました。そのため、ASP.NET 2.0 でスタックしており、3.0 または 3.5 の機能を使用できません。

4

5 に答える 5

0

さて、私が思いついた最終的な解決策は次のとおりです。これが最も効率的でも最速でもないと確信していますが、それを完了して別の作業に進む必要がありました。

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

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

次に、List<RowBase> を作成し、データテーブルを反復処理して、行のタイプに応じて BannerRow または ItemRow を作成します。

次に、List<RowBase>.Sort を実行し、日付と行の種類で並べ替えて、BannerRows が ItemRows より優先されるようにしました。

最後に、Web フォームにテーブルを配置し、runat="server" に id="maintable" を設定してから、List<RowBase> を反復処理し、各 RowBase で GetRow を呼び出しました。

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

これはロブとベンのアイデアのバリエーションですが、データのマッサージがさらに多く含まれていたため、両方に賛成票を投じましたが、答えは自分の功績によるものです。

于 2009-03-05T00:30:14.697 に答える