我用这些值填充我的组合框:
private void LoadUnits()
{
using (FbConnection con = new FbConnection(Properties.Resources.connectionString_EB))
{
con.Open();
using (FbCommand cmd = new FbCommand("SELECT UNITID, UNIT FROM UNITS", con))
{
FbDataReader dr = cmd.ExecuteReader();
List<Int_String> list = new List<Int_String>();
while (dr.Read())
{
list.Add(new Int_String { _int = Convert.ToInt32(dr[0]), _string = dr[1].ToString() });
}
unit_cmb.DataSource = list;
unit_cmb.ValueMember = "_int";
unit_cmb.DisplayMember = "_string";
}
con.Close();
}
}
我创建了一个简单的按钮:
private void save_btn_Click(object sender, EventArgs e)
{
unit_cmb.SelectedValue = 1;
unit_cmb.SelectedValue = product.unitId; //When debugging unitid is = 1
}
问题是,当我按下第一行的按钮时,它会选择第一项,当我将该行放在LoadUnits()
内作为最后一行时,它不会选择它(LoadUnits是OnLoad中的最后一个方法()函数)。
第二个问题是,当我只使用第二行(我需要使用它)时,即使product.unitId = 1
我的第一个想法是,我的组合框中可能没有selectedValue
1
所以我设置了这个:
private void unit_cmb_SelectedIndexChanged(object sender, EventArgs e)
{
if(unit_cmb.SelectedValue != null)
MessageBox.Show(unit_cmb.SelectedValue.ToString());
}
和poof,当我手动选择第一项时,它的选择值为IS 1,因此IS项的值为1但由于某种原因我不能用程序选择它。