Есть таблица "kontr" с полями id,name,type. На форме есть textbox на нем стоит автозаполнение из таблицы "kontr". При вводе начальных букв выводится подсказка. Как сделать так чтобы при выборе подсказки записывался id этой строки в заранее объявленную переменную?
таблица kontr
1, Вася, 1
2, Петя, 0
3. Александр, 1
код автозаполнения
txt_kontrIn.AutoCompleteMode = AutoCompleteMode.Suggest;
txt_kontrIn.AutoCompleteSource = AutoCompleteSource.CustomSource;
AutoCompleteStringCollection kontrInCol = new AutoCompleteStringCollection();
getKontrName(kontrInCol, 1);
txt_kontrIn.AutoCompleteCustomSource = kontrInCol;
код getcontrName
int pid;
private void getKontrName(AutoCompleteStringCollection col, int type)
{
MySqlConnection con = new MySqlConnection(core.conString);
con.Open();
string q = @"select name from kontr where type = "+type.ToString()+"";
MySqlCommand cmd = new MySqlCommand(q, con);
MySqlDataReader dr = cmd.ExecuteReader();
if(dr.HasRows == true)
{
while (dr.Read())
{
col.Add(dr["name"].ToString());
//Нужно чтобы еще записался id выбранной записи в переменную pid
}
dr.Close();
con.Close();
}
}
Может, я что-то не понимаю, но что мешает дополнить запрос еще одним полем
string q = @"select name, id from kontr where type = "+type.ToString()+"";
и дальше значение dr["id"]
после преобразования присвоить переменной Pid?
По результатам Ваших вопросов в комментариях, сделаю следующее дополнение, которое корректирую по уже по Вашей обратной связи :). У Вас есть два варианта
AutoCompleteStringCollection
использовать коллекцию http://stackoverflow.com/questions/21400452/autocompletestringcollection-with-tags-for-each-string использовать не ТехтBox, а ComboBox, добавляя NameId непосредственно comboBox.Items, где NameId Ваш вспомогательный класс
class NameId
{
int id;
public int Pid { get { return id; } }
string name;
public NameId(string _name, int _id)
{
name = _name;
id = _id;
}
public override string ToString()
{
return name;
}
}
Соответственно читать нужно так
if(dr.HasRows == true)
{
while (dr.Read())
{
comboBox.Items.Add(new NameId (dr["name"].ToString(),(int)dr["id"]);
}
dr.Close();
con.Close();
}
Незабудьте про try { } catch() - это сэкономит Вам много времени.
Естественно, что это только иллюстрированная схема возможного решения Вашей проблемы, которую Вам придется "допилить напильником" уже самому :)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
На англоязычной версии сайта нашел метод, который мне очень подходит:
Знатоки, может у Вас есть идеи, как реализовать это?
Форма WaitingDialogcs не прогружается, но когда метод GetPage законьчил работу загрузалиась
приветподскажите как загрузить картинку в базу MySQL