0

当我尝试将两个数据库表列绑定到单个下拉列表时,我会收到此错误。

这是我使用的代码:

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

如果我尝试获取单列值,它工作正常,但是当我想将两列与 DataTextField 连接时,它会显示错误。

我从不同的堆栈问题中搜索了这个,只找到了一个相关的链接 ,但我没有得到任何成功。如果我想将两个数据库表列值获取到一个下拉列表中,我应该怎么做?

4

3 回答 3

2

不能在 中指定多个列DataTextField而是可以根据上述两列在 DataSource 中创建一个新的串联列,然后将其指定为DataTextField.

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

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

然后使用连接创建一个新列(如果它的 Sql Server 则)

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

然后你可以指定CombinedColumnDataTextField

目前,由于"CityName"+"Hotel_Name"结果的字符串连接,您正在收到异常"CityNameHotel_Name",并且您的 DataSource 中没有名称为的列"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 
于 2013-05-08T06:29:43.867 回答
1

您需要在数据源本身中创建这些连接列,例如,如果您从存储过程中获取数据,而不是通过连接CityName &创建新列Hotel_Name,然后将此列分配给您的DataTextField

于 2013-05-08T06:33:10.323 回答
1

尝试这个:

GetHotelNames.Items.Clear();

foreach(DataRow item in bh.GetHotelNamess().Tables[0].Rows)
{
    GetHotelNames.Items.Add(new ListItem(item["CityName"] + " " + item["Hotel_Name"])); 
}
于 2013-05-08T06:37:13.040 回答