2009-03-03 76 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

相关问题