سلام برادر خوخان اون خوبه ولی 2 تا مشکل داره
1- وقتی فرم لود میشه فقط یک سلول رو میشه از کامبوباکس انتخاب کرد که به صورت تو لیست در تکس باکس بیاد یعنی من وقتی فرم رو لود میکنم یکی از گذینه های کامبوباکس رو انتخاب میکنم یعنی نام رو فقط برای بار اول تکس باکس به صورت اتو لیست باز میشه و وقتی نام خانوادگی رو انتخاب میکنم دیگه نام خانوادگی به صورت اتو لیست باز نمیشه بلکه فقط نام که انتخاب کردم باز میشه و قتی نوع دیگه رو یعنی نام خانوادگی انتخاب میکنم دیگه نه قبلی باز میشه در تکس باکس به صورت اتو لیست و مقدار جدید رو هم انتخاب میکنم اصالً به صورت اتو لیست باز نمیکنه.
2- وقتی مقداری رو در تکس باکس وارد میکنم هیچ چیزی رو برای جستجو برنامه باز نمیکنه و فقط در اتو لیست یک فیلد دیتابیس رو به صورت اتو لیست میاره و فیلد های دیگه و وقتی برنامه بسته بیشه و باز بیشه میاری و مقداری رو جستجو نمی کنه اصلاً این 2 مورد رو سعی کدم به این صورت بر طرف کنیم ارتباط با جدول رو خطا داد. اینم کد ها من. که نوشتم.
DataAccess db = new DataAccess();
//یه رویداد تعریف میکنیم به نام جستجو و دستورات جستجو رو داخل این رویداد مینویسیم. و یه کامبوباکس و یع تکس باکس
// قرار میدم . داخل کامبوباکس موارد جستجو رو وارد میکنم و داخل تکس باکس مقدار جستجو رو وارد میکنم
void search()
{
string query = null;
try
{
switch (comboBox1.Text)
{
case "نام":
{
query = "select * from Table1 where name like N'%" + textBox1.Text + "%'";
break;
}
case "نام خانوادگی":
{
query = "select * from Table1 where last like N'%" + textBox1.Text + "%'";
break;
}
case "سال":
{
query = "select * from Table1 where convert(varchar,year) like N'%" + textBox1.Text + "%'";
break;
}
default: { break; }
}
//AutoCompleteStringCollection autolist = new AutoCompleteStringCollection();
//db.con.Open();
//db.cmd = new SqlCommand(query, db.con);
//db.da = new SqlDataAdapter(db.cmd);
//DataTable dt = new DataTable();
//db.da.Fill(dt);
//foreach (DataRow r in dt.Rows)
//{
// if (comboBox1.SelectedIndex == 0)
// {
// autolist.Add(r[1].ToString());
// }
// else
// if (comboBox1.SelectedIndex == 1)
// {
// autolist.Add(r[2].ToString());
// }
// else
// if (comboBox1.SelectedIndex == 2)
// {
// autolist.Add(r[3].ToString());
// }
//}
//textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
//textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
//textBox1.AutoCompleteCustomSource = autolist;
// مقدار
//db.cmd
// که میبنید همون دیتااکسس من هستش که مقدار دستورات ارتباط با دیتابیس و صدا میکنم که هی دستور متصل با دیتابیس رو ننویسم و فقط
// یک بار بنویسم و به دفعات صدا کنیم
db.cmd.CommandText = query;
db.cmd.Connection = db.con;
db.con.Open();
db.cmd.ExecuteNonQuery();
db.con.Close();
db.da.SelectCommand = db.cmd;
db.ds.Clear();
db.da.Fill(db.ds, "t1");
dataGridView1.DataSource = db.ds.Tables[0];
}
catch
{
}
}
private void getdata()
{
AutoCompleteStringCollection autolist = new AutoCompleteStringCollection();
db.con.Open();
db.cmd = new SqlCommand("select * from Table1", db.con);
db.da = new SqlDataAdapter(db.cmd);
DataTable dt = new DataTable();
db.da.Fill(dt);
foreach (DataRow r in dt.Rows)
{
if (comboBox1.SelectedIndex == 0)
{
autolist.Add(r[1].ToString());
}
else
if (comboBox1.SelectedIndex == 1)
{
autolist.Add(r[2].ToString());
}
else
if (comboBox1.SelectedIndex == 2)
{
autolist.Add(r[3].ToString());
}
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
textBox1.AutoCompleteCustomSource = autolist;
}
}
private void Form1_Load(object sender, EventArgs e)
{
// این دستور برای نمایش اطلاعات دیتابیس هستش اول میام به کلاس
//Class1
// وصل میشم و دستورات رو از کلاس فراخوانی میکنم و اطلاعات دیتابیس رو میخوانم و نمایش میدم داخل دیتاگرید ویو
Class1 cc = new Class1();
DataTable dt = cc.getlist();
dataGridView1.DataSource = dt;
//getdata();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
getdata();
// با نوشتن نام رویداد تعریف شده مقداری رو جستجو میکنم.
search();
}
}