C# 如何正确显示嵌套数据

C# 如何正确显示嵌套数据,c#,asp.net,C#,Asp.net,我在asp.net C#工作,我很难想出如何解决问题。我有一个包含公司信息的数据库。我想通过以下方式在网站上发布此信息: 国家名称 (如果同一国家有多家公司,则在一行中显示2套) 公司名称:标签-----------------------公司名称:标签 地址:标签-------------------------------------------地址:标签 国家名称 公司名称:标签 地址:标签 等等 为了解决这个问题,我开始使用: DataGrid1.DataSource =

我在asp.net C#工作,我很难想出如何解决问题。我有一个包含公司信息的数据库。我想通过以下方式在网站上发布此信息:


国家名称


(如果同一国家有多家公司,则在一行中显示2套)

公司名称:标签-----------------------公司名称:标签

地址:标签-------------------------------------------地址:标签



国家名称


公司名称:标签

地址:标签


等等

为了解决这个问题,我开始使用:

 DataGrid1.DataSource = Database.QueryTable(string.Format("select * from (myTable) group by country"));
 DataGrid1.DataBind();



protected void DataGrid1_ItemDataBound(object sender, DataGridItemEventArgs e) {

if (e.Item.ItemType != ListItemType.AlternatingItem && e.Item.ItemType != ListItemType.Item)
return;

DataRowView drItem   = (DataRowView)e.Item.DataItem;
int countryId        = Convert.ToInt32(drItem[Common.Data.Reseller.Constants.countryid]);
Label lblAddress     = (Label)e.Item.FindControl("lblAddress");
Label lblComanyName  = (Label)e.Item.FindControl("lblComanyName");
Label lblCountryName = (Label)e.Item.FindControl("lblCountryName");
DataRow drCountry    = Database.QueryRow(Common.Data.Country.Get.CountryByID(countryId));

DataTable dt = Database.QueryTable(string.Format("select * from (myTable) order by countryid"));

lblCountryName.Text = drCountry[Common.Data.Country.Constants.countryName].ToString(); 
foreach (DataRow dr in dt.Rows) {
  if (Convert.ToInt32(dr[Common.Data.Reseller.Constants.countryid]).Equals(countryId)) {
等等…我在这个“如果”声明中列出了所有信息


所以我希望有人能明白,这并没有得到我想要的结果。在做了一点研究之后,我对如何继续下去感到困惑。我是否使用嵌套的GridView或Repeater,或者是否有其他我应该考虑的东西。我只是希望被指向正确的方向,这样我就知道我应该研究什么。

我认为你应该使用嵌套的ListView。我也有同样的问题,我试着这样做:

两个盒子是事件,里面的线条是参与的人。我知道这不在同一条线上,但你应该能够做到。关于这一点,我已经回答了一个问题


希望这能对你有所帮助,vinc。

一个选择是使用嵌套中继器。获取国家列表并将其绑定到外部中继器,然后在ItemDataBound事件中获取给定国家的公司并将其绑定到内部中继器。Jacob,感谢您的指导。我将努力利用你的建议。我真的很感激,谢谢!太好了,我会看一看,然后试一试。谢谢你的建议!没问题!我希望这对你有帮助!:)