mahongmin1987 2018-10-19 01:39 采纳率: 0%
浏览 2069
已采纳

c# combobox如何动态模糊查询?

需求:
每输入字符时combobox.text追加字符,读取数据库并弹出下拉列表,但是text不要不要不要自动选择下拉列表中的项,并且不能清空text,datasouce必须为datatable,因为最后需要得到选取项的(DataRowView)SelectItem.Row。
遇到的问题:
新手问题多,每次droppeddown =true时,都会清空text,并自动选择了第一项,使用textupdate事件,并且text为空或者焦点移动时,因为下拉列表会清空,如果不在开始时进行droppeddown = false,会报index不能为0的错,求大神帮解决一下,以下贴出代码。

   private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
        this.comboBox1.DroppedDown = false;
        string s = comboBox1.Text;
        int newcount = s.Length - i.Length;
        i += s.Substring(i.Length, newcount);

        comboBox1.DataSource = null;
        DataSet ds = new DataSet();
        string conntext = "Uid=sa; pwd=sa; database=XZ; server=localhost";
        SqlConnection conn = new SqlConnection(conntext);
        string sql = "select * from Book where BookName like '%" + comboBox1.Text + "%'";

        if (comboBox1.Text != string.Empty)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = sql;
            conn.Open();
            SqlDataReader dr = cmd.ExecuteReader();
            ds.Load(dr, LoadOption.OverwriteChanges, "book");
            if (ds.Tables["book"].Rows.Count > 0)
            {

                this.comboBox1.DataSource = ds.Tables[0];
                this.comboBox1.DisplayMember = "bookname";
                //this.comboBox1.AutoCompleteSource = AutoCompleteSource.ListItems;
                //this.comboBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
                this.comboBox1.DroppedDown = true;

                //this.comboBox1.DataSource = ds.Tables["book"];



                //comboBox1.SelectedIndex = -1;

            }

        }
        this.comboBox1.Text = i;
        conn.Close();
        comboBox1.SelectionStart = comboBox1.Text.Length;
        Cursor.Current = Cursors.Default;
    }
  • 写回答

2条回答 默认 最新

  • threenewbee 2018-10-19 02:47
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog