2013-05-08 123 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"])); 
} 
相關問題