2009-03-03 81 views
3

我有一些數據,必須以多個部分的表格形式呈現。特別是,每一部分數據每天都會被分解(使用它自己的標題)。這基本上是一次性的單頁交易,並且不會真正維護,所以我不想在體系結構上投入很多精力。如何在ASP.NET中創建帶節和標題的表?

我有兩個表。標題和項目。

標頭的格式:

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

ITEMS有

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,每天都有它自己的表和它自己的標題。它們也將按類型過濾。該頁面將僅顯示指定類型的標題和項目。 Type是一個tinyint。

所以問題是,什麼是最好的ASP.NET元素使用? DataList控件?網格視圖?那麼如何以標題/項目格式包含兩個表中的數據?

編輯: 對不起,忘了提及,這必須在Windows 2000/IIS5上工作,所以我堅持與ASP.NET 2.0,不能使用3.0或3.5功能。

+0

查看ListView。我將listview綁定到一組對象,並從數據庫中獲取這些對象。列表視圖允許您設置所有這些,並對其顯示進行最終控制。其實很好。 – 2009-03-03 20:25:44

回答

0

好吧,繼承人的最終解決方案合併單元格,我想出了。我相信這不是最有效的,也不是最快的,但我只需要完成它並繼續其他工作。

我的第一步是創建一個基類,我稱之爲RowBase,這是一個抽象類,它實現了一個名爲GetRow()的抽象方法;然後我從RowBase派生出另外兩個類:BannerRow和ItemRow。這些類包含包含我的表中使用的所有數據的字段。

然後我創建了兩個DataTables,並通過DataAdapter填充了我的兩個查詢的結果。

接下來,我創建了一個列表<RowBase>並在數據表中進行交換,根據行的類型創建BannerRow或ItemRow。

接下來,我運行了一個列表<RowBase>。排序日期和行類型以確保BannerRows優先於ItemRows。

最後,我創建了一個表格放在我的webform上,將其設置爲runat =「server」,id =「maintable」,然後遍歷我的List <RowBase>並在每個RowBase上調用GetRow。

BannerRow和ItemRow每個都有一個覆蓋GetRow(),它返回一個HtmlTableRow格式以包含正確格式的數據。然後,我使用了一些條件邏輯爲所有解決的ItemRow數據插入標題行。

這是Rob和Ben的想法的變體,但包括更多的數據按摩,所以我給了他們兩個upvotes,但我相信自己的答案。

1

我建議將數據作爲XML返回,然後使用XSLT構建報表。否則,你將不得不使用嵌套的GridView或中繼器。

2

看看asp:table。您可以編程,在代碼中添加嵌套條件迭代中的行和列。

1

如果這種模式每次都有相同的行數等,那麼中繼器可能是您最好的選擇,並且可以最大限度地控制屏幕上的佈局。

1

在頁面上放置一個<asp:Table>並從後面的代碼構建它。

對列(單元格)使用colspan參數,因爲這允許您爲需要的行創建跨越多個列的條目。

對於上面你的應用程序,這將意味着第一線和第二線將有5

相關問題