PDA

View Full Version : سوال: Auto Complete in C#‎



peiman
سه شنبه 11 مهر 1391, 18:43 عصر
سلام به همه
لطفا راهنماییم کنید که چطور میشه وقتی داده ایی در textbox وارد میکنم پس از فشردن هر حرف تا تکمیل شدن کلمه، داده هایی که در دیتابیس هست و با مقادیری که در textbox وارد میشه یکی بود ، بصورت یک لیست در زیر textbox نمایش داده بشه.
ممنون میشم اگر با نمونه کد راهنماییم کنید.
با تشکر از همه دوستان

uniqueboy_ara
سه شنبه 11 مهر 1391, 18:52 عصر
قبل از هر چیز، ورودت به این جمع رو تبریک میگم :)
و کلیدی ترین نکته قبل از زدن تاپیک: اول جستجو کنید، اگر جوابتونو پیدا نکردید تاپیک بزنید :)

اینم یه نمونه:
ساخت Auto Complete برای TextBox (http://barnamenevis.org/showthread.php?345161-%D8%B3%D8%A7%D8%AE%D8%AA-Auto-Complete-%D8%A8%D8%B1%D8%A7%DB%8C-TextBox)

matin.soft
سه شنبه 11 مهر 1391, 20:46 عصر
سلام دوست عزیز در تکست باکس ها اگر از قسمت پراپرتیزها مراجعه نمایید گزینه ای رو به نامه اوتو کمپلت سورس پیدا می کنید و سایر گزینه های مربوط به اون اگه اینارو فعال کنید و کلمات مربوط به اوتو کمپلت رو هم وارد نمایید موفق به اینکار خواهید شد.

amin.m1993
سه شنبه 11 مهر 1391, 21:11 عصر
سلام به همه
لطفا راهنماییم کنید که چطور میشه وقتی داده ایی در textbox وارد میکنم پس از فشردن هر حرف تا تکمیل شدن کلمه، داده هایی که در دیتابیس هست و با مقادیری که در textbox وارد میشه یکی بود ، بصورت یک لیست در زیر textbox نمایش داده بشه.
ممنون میشم اگر با نمونه کد راهنماییم کنید.
با تشکر از همه دوستان

void serach()
{
string query = null;
try
{
switch (comboBox1.Text)
{
case "Fisrt name": { query = "SELECT name,family,phone FROM phone WHERE name LIKE '" + textBox1.Text + "%'"; break; }
case "Last name": { query = "SELECT name,family,phone FROM phone WHERE family LIKE '" + textBox1.Text + "%'"; break; }
case "Phone number": { query = "SELECT name,family,phone FROM phone WHERE phone like '" + textBox1.Text + "%'"; break; }
default: { break; }
}

con = new OleDbConnection(connect);
con.Open();
command = new OleDbCommand();
command.CommandText = query;
command.Connection = con;
adapter = new OleDbDataAdapter();
adapter.SelectCommand = command;
objDataTable = new DataTable();
adapter.Fill(objDataTable);
con.Close();
dataGridView1.DataSource = objDataTable;
}
catch{ }
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
serach();
}

البته من توی همون دیتاگرید نمایش دادم خودت میتونی به لیست باکس منتقل کنی ولی اصول کار همونه.

peiman
چهارشنبه 12 مهر 1391, 11:50 صبح
من کد رو اینطور نوشتم جواب نمیده...!
لطفا راهنماییم کنید.
private void textBox1_TextChanged(object sender, EventArgs e)
{
AutoCompleteStringCollection auto = new AutoCompleteStringCollection();
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\empi re\Documents\Visual Studio 2008\Projects\testFirst\testFirst\Database1.mdf;In tegrated Security=True;User Instance=True");
SqlCommand com = new SqlCommand();
SqlDataReader dr;
com.Connection = con;
com.CommandText = "select * from tbl1 where name like N'%" + textBox1.Text + "%' ";
con.Open();
dr = com.ExecuteReader();
while (dr.Read())
{
auto.Add((string)dr["name"]);
}
textBox1.AutoCompleteCustomSource = auto;
con.Close();
dr.Close();
}

amin.m1993
دوشنبه 17 مهر 1391, 22:19 عصر
من کد رو اینطور نوشتم جواب نمیده...!
لطفا راهنماییم کنید.

فکر کنم مشکل شما syntax باشه کد زیر رو توی کد خودتون به این فرم تغییر بدین احتمالا درست بشه.

com.CommandText = "select * from tbl1 where name like 'N%" + textBox1.Text + "%' ";

barnamenevisforme
دوشنبه 17 مهر 1391, 22:29 عصر
سلام
با تشکر از پاسخ دوستان
همین امروز با یه مقاله جدید در این رابطه در یکی از سایت ها برخوردم،این مقاله نحوه ارائه autocomplete رو برای کنترل های مختلف ارائه میکنه.
امیدوارم مفید باشه:
http://www.codeproject.com/Articles/365974/Autocomplete-Menu