使用autosuggest只创建一个dataGridColumn

本文关键字:一个 dataGridColumn autosuggest 创建 使用 | 更新日期: 2023-09-27 17:53:37

我正在为杂货店或商店制作一个c#项目。我有一个数据网格,我在其中编程的细胞自动建议,它工作得很好。

只有一个问题。我希望数据网格中的一列(例如BARCODE Columns)是一个仅具有自动建议的文本框,而不是所有列。
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    var source = new AutoCompleteStringCollection();
    string cnn = (@"Data Source=TaLy-PC;Initial Catalog=dbMarketi;Integrated Security=True;Pooling=False");
    SqlConnection connection = new SqlConnection(cnn.ToString());
    SqlCommand command = new SqlCommand("Select Barcode FROM tblDepo", connection);
    try
    {
        connection.Open();
        {
            SqlDataReader drd = command.ExecuteReader();
            while (drd.Read())
            {
                // this.comboBoxEx1.Items.Add(drd.GetString(0).ToString());
                source.AddRange(new string[] { drd.GetString(0).ToString() });
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message.ToString());
    }
    connection.Close();
    TextBox dgvEditBox = e.Control as TextBox;
    if (dgvEditBox != null)
    {
        dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
        dgvEditBox.AutoCompleteCustomSource = source;
        dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
    }
 }

使用autosuggest只创建一个dataGridColumn

这是一个建议,尝试将您的AutoCompleteStringCollection和您的条形码Products查询分开。

private AutoCompleteStringCollection source  = new AutoCompleteStringCollection();
            private void loadAutoCompleteStringCollection();
            {
                string cnn = (@"Data Source=TaLy-PC;Initial Catalog=dbMarketi;Integrated Security=True;Pooling=False");
                source.Clear();
                SqlConnection connection = new SqlConnection(cnn.ToString());
                SqlCommand command = new SqlCommand("Select Barcode FROM tblDepo", connection);
                try
                {
                    connection.Open();
                    {
                        SqlDataReader drd = command.ExecuteReader();
                        while (drd.Read())
                        {
                            // this.comboBoxEx1.Items.Add(drd.GetString(0).ToString());
                            source.AddRange(new string[] { drd.GetString(0).ToString() });
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message.ToString());
                }
                finally
                {
                    connection.Close();
                }
            }
            private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
            {
                TextBox dgvEditBox = e.Control as TextBox;
                if (dataGridView1.CurrentCell.ColumnIndex == 1)
                {
                    if (dgvEditBox != null)
                    {
                        dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
                        dgvEditBox.AutoCompleteCustomSource = source;
                        dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
                    }
                }
            }
            //If you want to reload the AutoCompleteStringCollection
            private void button1_Click(object sender, System.EventArgs e)
            {
                loadAutoCompleteStringCollection();
            }

你的代码基本正确。

我要做的是纠正你的代码是你的editingcontrolshoweventhandler你基本上说,对待任何列作为一个文本框。

如果你想只把一个特定的列作为一个文本框,然后运行检查,像这样:-

 // EditingCOntrol Showing
    If(datagridview.CurrentCell.ColumnIndex == 1)
    {
        TextBox dgvEditBox = e.Control as TextBox;
        if (dgvEditBox != null)
        {
            dgvEditBox.AutoCompleteMode = AutoCompleteMode.Suggest;
            dgvEditBox.AutoCompleteCustomSource = source;
            dgvEditBox.AutoCompleteSource = AutoCompleteSource.CustomSource;
        }
    }

// public Object 
 public AutoCompleteStringCollection source = new AutoCompleteStringCollection();
相关文章: