通常我这样填写comoboBox:
combo.DataSource = dt;
combo.ValueMember = "id";
combo.DisplayMember = "name";
我很容易通过此代码
获得选定的值int i = convert.toint(combo.selectedValue);
但在我使用自动完成后我无法获得它:
con = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=ACDB;Integrated Security=True;Pooling=False");
da = new SqlDataAdapter("SELECT id, name from usersTBL", con);
da.Fill(dt);
AutoCompleteStringCollection datasource = new AutoCompleteStringCollection();
for (int i = 0; i < dt.Rows.Count; i++)
{
datasource.Add(dt.Rows[i][1].ToString());
}
this.comboSearch.AutoCompleteCustomSource = datasource;
this.comboSearch.AutoCompleteSource = AutoCompleteSource.CustomSource;
this.comboSearch.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
this.comboSearch.DataSource = dt;
this.comboSearch.DisplayMember = "name";
this.comboSearch.ValueMember= "id";
现在,如果我手动从comboBox中选择一个项目,我可以获得SelectedValue,但如果我使用自动完成,我就不能。我想从ComboBox中搜索Selected项目时获取SelectedValue。
答案 0 :(得分:1)
现在它工作正常
public frm_order()
{
InitializeComponent();
AutoCompleteStringCollection farmerdatasource = new AutoCompleteStringCollection();
for (int i = 0; i < farmer.GET_FARMER_NAME_HAVE_PRODUCT().Rows.Count;i++ ) {
farmerdatasource.Add(farmer.GET_FARMER_NAME_HAVE_PRODUCT().Rows[i][1].ToString());
}
this.farmerNameCmb.AutoCompleteCustomSource = farmerdatasource;
this.farmerNameCmb.AutoCompleteSource = AutoCompleteSource.CustomSource;
this.farmerNameCmb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
}
并在FORM_LOAD中填写组合框:
this.farmerNameCmb.DataSource = farmer.GET_FARMER_NAME_HAVE_PRODUCT();
this.farmerNameCmb.DisplayMember = "farmerName";
this.farmerNameCmb.ValueMember = "farmerID";
现在我可以在我的comboBox中搜索并轻松获得ValuMember