2013-05-08 124 views
0

当我尝试将两个数据库表列绑定到单个下拉列表时,出现此错误。DataBinding:'System.Data.DataRowView'不包含名称为'CityNameHotel_Name'的属性

这里是代码,我用:

GetHotelNames.DataSource = bh.GetHotelNamess(); 
GetHotelNames.DataTextField = "CityName"+"Hotel_Name"; 
GetHotelNames.DataBind(); 

,如果我试图让单一的列值,但是当我想连接两列DataTextField它显示错误它工作正常。

我已经从不同的堆栈问题中搜索了这个问题,发现只有一个相关link 但我没有得到任何成功。 如果我想要将两个数据库表列值添加到一个下拉列表中,我应该怎么做?

+0

什么是返回类型'bh.GetHotelNamess()'? – mshsayem 2013-05-08 06:34:59

+0

您的抓取如何在GetHotelNames()函数中记录数据,您可以发布代码吗? – 2013-05-08 06:36:26

+0

@mshsayem DataSet返回类型 – aami 2013-05-08 06:37:59

回答

2

不能DataTextField指定多个列,而不是你可以在上面创建两列根据您的数据源新级联列,然后指定为DataTextField

例如,如果在后端查询是这样的:

Select CityName, Hotel_Name, otherField, CityName + HotelName as CombinedColumn 
From yourtable 
.... 

然后你可以指定:

Select CityName, Hotel_Name, otherField 
From yourtable 
.... 

使用级联(如果它的SQL Server将)然后创建一个新列CombinedColumn作为DataTextField

当前由于字符串连接而得到异常的"CityName"+"Hotel_Name"结果通货膨胀在"CityNameHotel_Name",并且在你的数据源没有列名为"CityNameHotel_Name"

编辑: 基础上的评论,你是不是在查询串联你的专栏它应该是这样的:

select 
Hotel_Info.Hotel_Name , 
City.CityName + ',' + Hotel_Info.Hotel_Name as CombinedColumn 
FROM Hotel_Info LEFT OUTER JOIN City ON Hotel_Info.CityID = City.CityID 
+0

@aami,查看代码中的代码示例,您不能将多列指定为'DataTextField'。 – Habib 2013-05-08 06:32:29

+0

你的意思是说我必须为此更改存储过程?我做了这个,做了一个合并的专栏,但它只显示城市名称,而不是显示城市和酒店的下拉菜单。 – aami 2013-05-08 06:35:49

+0

@aami,修改您的选择查询,如:'Select Hotel_Info.Hotel_Name,City.CityName +','+ Hotel_Info.Hotel_Name as CombinedColumn FROM Hotel_Info LEFT OUTER JOIN City ON Hotel_Info.CityID = City.CityID' – Habib 2013-05-08 06:41:48

1

您需要在您的数据源本身来创建这些连击列,例如,如果你从一个存储过程让你的数据比连击CityName & Hotel_Name创建一个新的列,则此列分配给你的DataTextField

+0

这里是我的程序代码 选择Hotel_Info.Hotel_Name,作为CombinedColumn FROM Hotel_Info City.CityName LEFT OUTER JOIN市Hotel_Info .CityID = City.CityID – aami 2013-05-08 06:36:50

+0

查询更改为'选择 \t Hotel_Info.Hotel_Name, \t Hotel_Info.Hotel_Name + '_' + City.CityName作为CombinedColumn FROM Hotel_Info LEFT OUTER JOIN市Hotel_Info.CityID = City.CityID '并将'CombinedColumn'分配给你的'DataSource' – 2013-05-08 06:59:13

+0

谢谢,但是habib在你之前帮助我:) – aami 2013-05-08 10:03:52

1

试试这个:

GetHotelNames.Items.Clear(); 

foreach(DataRow item in bh.GetHotelNamess().Tables[0].Rows) 
{ 
    GetHotelNames.Items.Add(new ListItem(item["CityName"] + " " + item["Hotel_Name"])); 
} 
相关问题