我在网络上找不到我的问题的答案。
我有一个使用LINQ(存储过程)填充有SQL表的ListBox
我有一个ComboBox,其中也使用LINQ(存储过程)填充了一条SQL语句 问题在于ComboBox的存储过程需要ListBox的输入,而我似乎无法正确地强制转换它。
这是我的列表框的填充方式:
private void NouvelleReservation2_Load(object sender, EventArgs e)
{
ExamenSGBDEntities oExamenSgbdEntities = new ExamenSGBDEntities();
listBoxRestaurant.DataSource = oExamenSgbdEntities.SelectAllRestaurants();
listBoxRestaurant.DisplayMember = "RESTO";
listBoxRestaurant.ValueMember = "idRestaurants";
listBoxRestaurant.SelectedIndex = 0;
}
这是我的ComboBox的填充方式:
private void listBoxRestaurant_SelectedIndexChanged(object sender, EventArgs e)
{
ExamenSGBDEntities oExamenSgbdEntities = new ExamenSGBDEntities();
comboBoxTables.DataSource =
oExamenSgbdEntities.SelectTablesByRestaurant(listBoxRestaurant.Items.Cast<Restaurant>()); //Here is where i'm struggling... I need to give the "idRestaurant" from the ListBox as parameter for my stored procedure.
comboBoxTables.DisplayMember = "TABLECHAISE";
comboBoxTables.ValueMember = "idTables";
}
我尝试过在DataRowView中将selectedItem转换为整数,但是没有用。 现在已经尝试了您在代码中看到的内容,但无法使其正常工作。
有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
而不是通过:
listBoxRestaurant.Items.Cast()...
您尝试过吗?
listBoxRestaurant.SelectedItem
答案 1 :(得分:0)
您似乎正在尝试将饭店列表传递到查询中,但是您说您需要id值?如果您需要一个id值(如在查询中接受一个输入),则应使用类似以下内容的
comboBoxTables.DataSource = oExamenSgbdEntities.SelectTablesByRestaurant(listBoxRestaurant.Items.Cast<Restaurant>().First().idRestaurant);
您可能会遇到强制转换错误,因为它无法将IEnumerable强制转换为int。
您还可以将SelectedItem强制转换用作Restaurant,然后按照Jon Vote的说明获取ID。
答案 2 :(得分:0)
不要尝试投射选定的列表项。而是使用选定的值:
UpdateTable() got an unexpected keyword argument 'range_partitioning'
然后,您可以通过此ID值从数据库中加载餐厅,并将其传递给您的listBoxRestaurant.SelectedValue
函数。