我需要sql语句的帮助。
我正在管理一个房地产数据库。我有一个表属性和多个表卧室,浴室等。
我有一个表单,我的代理可以在列表框中看到所有属性,选择他喜欢的那个,它将在所有组合框中显示正确的信息
每个标准都以组合框形式显示。因此,如果您显示属性1,您会看到:卧室:1卧室
现在我的sql语句是:
"SELECT AreaSize.AreaSizeID, AreaSize.DescriptionSurface, Bathrooms.BathroomID, Bathrooms.DescriptionBathroom, Cities.CityID, Cities.DescriptionCities, Prices.PriceID, Prices.DescriptionPrices, Properties.*, Rooms.RoomID, Rooms.DescriptionRooms, Types.TypeID, Types.DescriptionType, Users.* FROM Users INNER JOIN (Types INNER JOIN (Rooms INNER JOIN (Prices INNER JOIN (Cities INNER JOIN (Bathrooms INNER JOIN (AreaSize INNER JOIN Properties ON AreaSize.AreaSizeID = Properties.AreaSize) ON Bathrooms.BathroomID = Properties.Bathrooms) ON Cities.CityID = Properties.City) ON Prices.PriceID = Properties.Price) ON Rooms.RoomID = Properties.Rooms) ON Types.TypeID = Properties.PropertyType) ON Users.UserID = Properties.AgentID WHERE Users.email =@email";
我如何在组合框中显示:
cboBedrooms.Text = tbListing.Rows[idx]["DescriptionRooms"].ToString();
问题是,现在它只显示所选属性的值,而不是所有其他值。
如果我在房产2,卧室的组合框仅显示:2间卧室 它应该显示:2间卧室,比你点击箭头并显示1间卧室
+-----------------------------------------+
| Properties |
+------------+------------+---------------+
| PropertyID | NbBedrooms | AgentID... |
| 1 | 1 | 2... |
| 2 | 2 | 1... |
+------------+------------+------------+
+-------------------------+
| Bedrooms |
+------------+------------+
| PropertyID | NbBedrooms |
| 1 | 1bedroom |
| 2 | 2bedrooms |
+------------+------------+
答案 0 :(得分:1)
您的问题是您只设置了ComboBox
的文本,而不是您可以选择的实际项目集合。要实现此目的,只需循环浏览DataTable
对象,并为每个选项向ComboBox
添加新项。
foreach (DataRow row in tbListing.Rows)
{
cboBedrooms.Items.Add(row["DescriptionRooms"].ToString();
}
然后,当您填写Items
集合后,您可以将SelectedItem
的{{1}}属性设置为等于该属性的当前设置值,以向您的用户显示该值的值在他们可能做出改变之前。
因此,如果您的循环通过并使用值ComboBox
填充ComboBox
,并且您希望将所选值设置为A, B, C, D
,那么您只需执行以下操作:
B
为了更进一步,您可能希望将用户选择的新值写回数据库,如果他们想要进行更改。要获取cboBedrooms.SelectedItem = "B";
的选定值,您只需使用相同的ComboBox
属性,并在其中添加SelectedItem
后缀。
注意:.ToString()
属性获取并设置SelectedItem
类型。看到你只使用字符串,可以做一个简单的object
来获取所选的值但是如果你想要使用更复杂的对象,你必须首先转换为该对象,然后检索值。