Autocomplete 具有多列的自动完成文本框
我为GridView创建了自动完成文本框。 我从数据库中的两列中选择了值,一列是Kontonummer,另一列是Navn,见图1。现在如果我从文本框中选择value,这两个值都来自GridView单元格Konto中的Kontonummer和Navn列,请参见图片2,但我只需要Kontonummer列的值就可以进入GridView单元格Konto,请参见图片3。 你能帮我吗 请参阅所附图片 我的颂歌是:Autocomplete 具有多列的自动完成文本框,autocomplete,Autocomplete,我为GridView创建了自动完成文本框。 我从数据库中的两列中选择了值,一列是Kontonummer,另一列是Navn,见图1。现在如果我从文本框中选择value,这两个值都来自GridView单元格Konto中的Kontonummer和Navn列,请参见图片2,但我只需要Kontonummer列的值就可以进入GridView单元格Konto,请参见图片3。 你能帮我吗 请参阅所附图片 我的颂歌是: private void dgvAddKontoNr_EditingControlShowin
private void dgvAddKontoNr_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
try
{
string headerText = dgvAddKontoNr.Columns["Konto"].HeaderText;
if (dgvAddKontoNr.CurrentCell.ColumnIndex == 3)
{
if (headerText.Equals("Konto"))
{
if (e.Control is TextBox)
{
tb = e.Control as TextBox;
if (tb != null)
{
tb.AutoCompleteMode = AutoCompleteMode.Suggest;
tb.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection coll = new AutoCompleteStringCollection();
tb.AutoCompleteCustomSource = coll;
con.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT CAST(Kontonummer AS nvarchar (255)) + ' - ' + Navn AS Kontonummer FROM Kontoplan WHERE LockKonto = 'True' AND KlientId = (SELECT Id FROM Klient WHERE Navn = @Navn)", con);
da.SelectCommand.Parameters.AddWithValue("@Navn", bogf.cmbKlient.Text);
DataTable dt = new DataTable();
da.Fill(dt);
for (int i = 0; i < dt.Rows.Count; i++)
{
string konto = dt.Rows[i]["Kontonummer"].ToString();
//string navn = dt.Rows[i]["Navn"].ToString();
coll.Add(konto);
//coll.Add(navn);
}
con.Close();
}
tb.MinimumSize = new Size(345, 25);
tb.BorderStyle = BorderStyle.Fixed3D;
}
}
else
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
tb.AutoCompleteMode = AutoCompleteMode.None;
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}