我有Drop Down List
。当索引发生变化时,我需要DDL
的值。所以我这样做:
private void CMBGroup_SelectedIndexChanged(object sender, EventArgs e)
{
int id=int.Parse(CMBGroup.SelectedValue.ToString());
//do something with id
}
在form load
我获取我的数据:
goodGroups=objGoodGroupRepositoy.GetAll().ToList();
CMBGroup.DataSource = goodGroups;
CMBGroup.ValueMember = "Id";
CMBGroup.DisplayMember = "Name";
我的数据库中有这样的数据:
id serial name
1 121 g1
2 123 g2
但是在加载表单之前我遇到了这个错误:
Input string was not in a correct format
我在indexchange
DDL
事件中遇到此错误
int id=int.Parse(CMBGroup.SelectedValue.ToString());
模特:
public partial class GoodGroup
{
public GoodGroup()
{
this.Goods = new HashSet<Good>();
}
public int Id { get; set; }
public string Serial { get; set; }
public string Name { get; set; }
public virtual ICollection<Good> Goods { get; set; }
}
答案 0 :(得分:4)
您应该在DataSource之前设置DisplayMember和ValueMember属性。
更改DataSource后,或者在设置DataSource后更改DisplayMember或ValueMember时,绑定基础结构会强制控件重新绑定
另一种方法是在修改数据源时取消订阅/订阅事件。
答案 1 :(得分:0)
您可以只处理SelectionChangeCommitted事件,而不是处理SelectedIndexChanged事件。
处理此事件时,不必取消订阅和重新订阅事件处理程序,因为只有在通过选择更改组合框的值之后才触发事件处理程序,而不是在更改数据源之后触发。