繁体   English   中英

在数据绑定的comboBox中搜索?

[英]Searching in databound comboBox?

伙计们,我有一个comboBox,其配置为像dropdownlist一样工作。 它正在通过数据库填充。 它工作正常。

现在我要做的是:例如,我有comboBox,它正在从数据库表“ tblPersons”中获取“名称”列并显示它。 例如,如果数据库表“ tblPersons”中总共有4个条目

  1. 阿里汗
  2. 艾哈迈德·汗(Ahmed Khan)
  3. 比拉尔·汗(Bilal Khan)
  4. 比拉尔·法鲁奇(Bilal Farooqi)

因此,当我在comboBox中写“ Ahmed Farooqi”(comboBox应该是可编辑的,一旦我写了“ Ahmed”,它应该显示所有名称为“ Ahmed”的条目)并按Enter,它应该在数据库表“ tblPersons”中搜索-如果“找到“ Ahmed Farooqi”-如果未找到“ Ahmed Farooqi”,则应选择它-它应询问我是否要在数据库表“ tblPersons”中创建新条目,如果单击“是”,则应打开另一个表单进行添加新用户,如果我单击“否”,它什么也不做。

我应该怎么做。 我是C#的新手,所以我们将不胜感激。 如果我的问题不清楚,我深表歉意。

问候。

编辑:这是我的测试表格,在这里我是一个文本框,将用于输入名称,该文本框应在数​​据库中搜索名称,然后如果找到名称,则在其各自的文本框中显示数据库的编号和电子邮件。 如果找不到,它将显示消息框,要求用户创建一个新的人,如果单击“是”,则切换到另一种形式(用户将在其中创建新的人)。

在此处输入图片说明

在表单加载中调用fillCombo函数,并将cmb_SelectedValueChanged事件分配给组合框。 不要忘记将autocompletemode属性设置为combobox。

cmb.AutoCompleteMode = AutoCompleteMode.SuggestAppend


private void fillCombo()
{
    string sql = "SELECT ID, NAME, Number, Email FROM tblPerson";
    SqlConnection Cnn = new SqlConnection("connections string");
    Cnn.Open();

    SqlDataAdapter da = new SqlDataAdapter(sql, Cnn);
    DataTable dt = new DataTable();
    da.Fill(dt);

    cmb.ValueMember = "ID";
    cmb.DisplayMember = "Name";
    cmb.DataSource = dt;    
}

private void cmb_SelectedValueChanged(object sender, EventArgs e)
{
    if (cmb.SelectedItem != null)
    {
        txtNumber.Text = ((DataRow)cmb.SelectedItem)["Number"].ToString();
        txtEmail.Text = ((DataRow)cmb.SelectedItem)["Email"].ToString();
    }
}

private void cmb_Validating(object sender, CancelEventArgs e)
{
    if (cmb.SelectedItem == null)
    {
        If (MessageBox.Show("Do you want to create a new person?", MessageBoxButtons.YesNo) == DialogResult.Yes)
        {
            frmNewPerson person = new frmNewPerson();
            person.Name = cmb.Text;
            if (person.ShowDialog() == DialogResult.Yes)
            {
                fillCombo();
                DataRow dr = ((DataTable)cmb.DataSource).Select("Name='" + person.Name + "'")[0];
                cmb.SelectedValue = Convert.ToInt32(dr["ID"]);
            }
        }
        else
        {
            txtNumber.Text = string.Emtpy;
            txtEmail.Text = string.Emtpy;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM