4

私は2つのgridview textbox列を持っています。gridviewの列で個別にオートコンプリートを使用していますtextboxが、両方gridview textboxの列のオートコンプリートがこれらの列全体でデータを混合しています。

article_codeとのデータを混在させずにオートコンプリートを表示するにはどうすればよいyarn_countですか?

これが私のコードです:

    AutoCompleteStringCollection namesCollection4=new AutoCompleteStringCollection(); 
string query = "select article_code from article_production";
con.Open();
SqlCommand cmb = new SqlCommand(query, con);
SqlDataReader dr = cmb.ExecuteReader();
if (dr.HasRows == true)
{
    while (dr.Read())
    {
        namesCollection4.Add(dr["article_code"].ToString());

    }
}
else
{
    MessageBox.Show("Data not found");
}

con.Close();
dr.Close();
int column = dataGridView1.CurrentCell.ColumnIndex;

if(column==8)
{
    TextBox tb = e.Control as TextBox;

    if (tb != null)
    {
        tb.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        tb.AutoCompleteCustomSource = namesCollection4;
        tb.AutoCompleteSource = AutoCompleteSource.CustomSource;

    }

}

2 番目の Gridview 列

 AutoCompleteStringCollection namesCollection1=new AutoCompleteStringCollection(); 
string query1 = "select yarn_count from yarn";
con.Open();
SqlCommand cmb1 = new SqlCommand(query1, con);
SqlDataReader dr1 = cmb1.ExecuteReader();
if (dr1.HasRows == true)
{
    while (dr1.Read())
    {
        namesCollection1.Add(dr1["yarn_count"].ToString());

    }
}
else
{
    MessageBox.Show("Data not found");
}

con.Close();
dr1.Close();
int column1 = dataGridView1.CurrentCell.ColumnIndex;

if (column1 == 9)
{

    TextBox tb1 = e.Control as TextBox;

    if (tb1 != null)
    {
        tb1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        tb1.AutoCompleteCustomSource = namesCollection1;
        tb1.AutoCompleteSource = AutoCompleteSource.CustomSource;
    }

}
4

2 に答える 2

0

私はテストしましたが、これはあなたが望むように動作するはずです:

//EditingControlShowing event handler for your DataGridView
private void dataGridView_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
        DataGridViewTextBoxEditingControl cellEdit = e.Control as DataGridViewTextBoxEditingControl;
        cellEdit.AutoCompleteCustomSource = new AutoCompleteStringCollection();
        cellEdit.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
        cellEdit.AutoCompleteSource = AutoCompleteSource.CustomSource;
        int colIndex = dataGridView.CurrentCell.ColumnIndex;
        if (colIndex == 8) cellEdit.AutoCompleteCustomSource.AddRange(new string[] { "Aaaa", "Bbbb", "Cccc" });
        else if (colIndex == 9) cellEdit.AutoCompleteCustomSource.AddRange(new string[] { "1234", "5678" });            
}

プロパティnamesCollectionに割り当てたい場合は、タイプが であることを確認する必要があります。AutoCompleteSourceAutoCompleteStringCollection

于 2013-06-17T18:30:31.410 に答える