我一直在到处寻找我的问题的答案。但是我还没有找到满意的答案。现在这是我的问题。
我在 C# 中有一个未绑定到任何数据源的 datagridview。我想让用户在其中一列中输入数据。我需要做的是通过自动完成来支持用户。
自动完成的数据来自数据库。我可以很好地处理这个问题,但我的问题是建议应该取决于用户输入的字符。例如,如果用户输入“g”并且我的数据库查询返回“garlic”,则自动完成应该显示它。
这对于普通的文本框来说很容易。但是 datagridview 的问题是我无法读取用户在输入时输入的字符。编辑完成后会触发单元格值更改事件。数据库中的数据太多,无法一次添加到自动完成源中。所以我必须解决获取用户类型并据此生成源。
有什么办法可以完成这项任务吗?请帮忙。
以下是我最近使用但无济于事的代码之一,它不起作用:
private void Form2_Load(object sender, EventArgs e)
{
string str = @"Data Source=MEDIXPC197;Initial Catalog=Inventory;Integrated Security=True";
SqlConnection con = new SqlConnection(str);
SqlDataAdapter da = new SqlDataAdapter("SELECT Product Code from tblmaster", con);
dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
}
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
string text = dataGridView1.Columns[4].HeaderText;
if (text.Equals("Product Code")) ;
{
TextBox auto_text = e.Control as TextBox;
if (auto_text != null)
{
auto_text.AutoCompleteMode = AutoCompleteMode.Suggest;
auto_text.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection sc = new AutoCompleteStringCollection();
add_items(sc);
auto_text.AutoCompleteCustomSource = sc;
}
}
}
public void add_items(AutoCompleteStringCollection column)
{
column.Add("test1");
catspeake
相关分类