在我的Page_Load事件
上DataSet oDs = new DataSet();
oDs.ReadXml("http://stackoverflow.com/feeds");
gvFeeds.DataSource = oDs.Tables[2];
gvFeeds.DataBind();
这将填充GridView,如下所示
DataSet包含8个DataTables: Feed,Title,Link,Entry,Rank,Category,Author,Summary
例如,DataTable [2]包含30个最新帖子的链接,如上所示。
我想要的是GridView显示每个记录 Feed,标题,链接,条目,排名,类别,作者,摘要
但是,当我将输入DataSet分配给DataSource时,它只是填充GridView,好像我已经为它分配了DataTable [0]对象...作为父提要的标题信息。
答案 0 :(得分:2)
您只能将GridView绑定到一个表。 例如,使用以下将绑定到“链接”表。
gvFeeds.DataSource = oDs;
gvFeeds.DataMember = "Link";
gvFeeds.DataBind();
但是,如果所有表共享相同的模式(不太可能),那么您可以通过转储行然后绑定它来手动创建新的DataTable。
本文还介绍了另一个场景 Add data from two databases into one gridview
答案 1 :(得分:0)
无法组合来自各种表的数据并一次将其绑定到单个gridView。
编辑:
//Considering you have all the tables that share the same schema
//i.e. All are having same column names and types
//Create an In Memory DataTable
DataTable consolidateTable = new DataTable("ConsolidatedTable");
//Add columns with that is same across all of you tables
consolidateTable.Columns.Add(new DataColumn("firstColumn"));
consolidateTable.Columns.Add(new DataColumn("secondColumn"));
//etc..
//Now go through each record of each table
foreach (DataTable dt in oDs.Tables)
{
foreach (DataRow row in dt.Rows)
{
consolidateTable.Rows.Add(row);
}
}
//bind
gvFeeds.DataSource = consolidateTable;
gvFeeds.DataBind();
请注意,只有当所有表具有相同的模式(即相同的firstColumn,secondColumn等)时才可以这样做。否则,这是不可能的。