我使用LINQ Join查询绑定ComboBox
。以下是我的代码:
var list = (from a in context.tbl_Products
join c in context.tbl_CurrentStock on a.ProductID equals c.ProductID
where c.Qty > 0
select new
{
ProductID = a.ProductID,
ProductName = a.ProductName
}).ToList();
cmbProduct.DataSource = list;
cmbProduct.ValueMember = "ProductID";
cmbProduct.DisplayMember = "ProductName";
cmbProduct.SelectedIndex = -1;
表详情: tbl_Products:ProductID,产品名称
Data in table
1,ABC
2,BCA
3,CDA
tbl_CurrentStock:StockID,ProductID,Qty
Data in table:
1,1,5
2,2,10
3,3,50
我正在使用cmbProduct.SelectedValue,如下所示:
int ProductID = Convert.ToInt32(cmbProduct.SelectedValue);
var Product = context.tbl_Products.Single(o => o.ProductID == ProductID);
直到这里它没事。在组合框中我选择了“ABC”,但是我得到cmbProduct.selectedvalue
值为2而不是1.同样如果我选择第二个产品获取值为3而不是2,它没有给出选定的值,而是在列表中给出第一个值。可能是什么问题呢?这很傻,吃了我的脑袋。当我不使用JOIN Query时(如果我只绑定一个表中的数据),这工作正常
在此先感谢
答案 0 :(得分:0)
将combobox的sorted属性更改为false后问题已解决。 Combobox正在对产品名称进行排序,但不对产品ID进行排序。这引起了问题。 -