我有一个非常简单的场景,但在这方面的糟糕经验和谷歌搜索并没有多大帮助。
考虑一个带有 C# 代码的经典 ASPX 页面。假设我有一个DataTable
s 列表(或DataSet
带有几个表的 a )。我需要一种方法来显示所有表格,DataGrid
每个表格使用一个。
我尝试将整个绑定DataSet
到DataGrid
但它只显示第一个表。
有些东西告诉我我应该使用 a Repeater
,DataGrid
但我需要帮助或者完全不同的(更好的)替代方案。
ASPX
<asp:Panel runat="server" ID="myPanel" Width="100%">
</asp:Panel>
<asp:Label ID="lblMessage" runat="server" />
<asp:Button Text="Just post" runat="server" />
背后的代码
protected void Page_Init(object sender, EventArgs e)
{
var s1 = Builder<Product>.CreateListOfSize(5).Build();
var s2 = Builder<Order>.CreateListOfSize(9).Build();
var g1 = new DataGrid { Width = new Unit("50%"), DataSource = s1 };
var g2 = new DataGrid { Width = new Unit("50%"), DataSource = s2 };
this.myPanel.Controls.Add(g1);
this.myPanel.Controls.Add(g2);
}
protected void Page_Load(object sender, EventArgs e)
{
this.DataBind();
}
输出:
请注意,每个网格的视图状态都保存在 post backs 中
看看这个链接:
http://msdn.microsoft.com/en-us/library/system.data.dataset.tables.aspx
如果您使用的是数据集,则可以执行以下操作:
MyGrid.DataSource = dataset.Tables[0]
MyGrid2.DataSource = dataset.Tables[1]
然后对网格中的每个表索引重复,例如 1、2、3
我不知道您想在所有表格中显示什么,即使您将显示所有表格,您将如何管理每个表格记录的标题。我觉得你需要先想想你想要什么?
如果每个表的列数相同,那么它很容易维护,你知道如何使用联合吗?
select x, y,z from table1
union
select x, y,z from table2
union
select x, y,z from table3
union
select x, y,z from table4
它只会从所有四个表中创建一个表结果,并且可以轻松绑定。
我不知道你是否需要这个,但无论如何我都试图帮助你:)