PDA

View Full Version : __ نحوه ساخت جستجو( AutoComplete) __



hrbaban
شنبه 24 مرداد 1388, 16:28 عصر
سلام . . .

چطوری میشه در یه صفحه یه textbox داشت که وقتی یه نوشته توش تایپ میکنی در Datagridview اون سطر فقط نمایش داده بشه . به عبارت دیگر مثل دیکشنری اول بره سراغ اون چیزهایی که اولشون با حرف نوشته شده در textbox است و الی آخر . . .

Soroush.Sarabi
شنبه 24 مرداد 1388, 16:31 عصر
شما می تونی در event TextChange اون Textbox بر اساس دریافت اطلاعاتتون از eventargs مقادیر ستون

Gridview رو فیلتر کنی.


وب سایت رسمی سروش سارابی
مشاور فناوری اطلاعات، برنامه نویس و تحلیلگر سیستم
www.soroush-sarabi.com (http://www.soroush-sarabi.com/)

hrbaban
شنبه 24 مرداد 1388, 16:53 عصر
میشه یه برنامه کوچیک آپلود کنی ؟

مرسی.

raha_20
شنبه 24 مرداد 1388, 17:05 عصر
من برنامه ای که میگین را نوشتم با این تفاوت که وقتی توی text مینویسی از توی لیست باکس اطلاعات را نما یش میده عوض اینکه اطلاعات دیتا گراید را نشان بده .

اگه خواستین برا تون بزارم

Atena_k
شنبه 24 مرداد 1388, 18:00 عصر
سلام
من فکر کنم این مشابه همین سوال چند روز پیش مطرح شد. (http://www.barnamenevis.org/forum/showthread.php?t=173741)

hrbaban
شنبه 24 مرداد 1388, 21:22 عصر
سلام
من فکر کنم این مشابه همین سوال چند روز پیش مطرح شد. (http://www.barnamenevis.org/forum/showthread.php?t=173741)


دوست من ، صورت سوالم یه چیز دیگه هستش .


raha_20 ، اگر آپلودش کنی شاید کمک کنه .
مرسی.

raha_20
یک شنبه 25 مرداد 1388, 00:15 صبح
به خاطر حجم زیاد برنامه نمیتونم آپلود کنم واسم قسمتی که لاز م داری رو میزارم . این کد کار اصلی ر انجام میده







private void textBox1_TextChanged(object sender, EventArgs e)
{

int lenntxt = textBox1.Text.Length;
int last = (listBox1.Items.Count)-1;
int j=0;
bool found=false;
try
{
while ((found == false) && (j <= last))
{

string comp;
comp = ((DataRowView)listBox1.Items[j])["word"].ToString();
comp = comp.Substring(0, lenntxt);
if (textBox1.Text == comp)
{
listBox1.SelectedIndex = j;
found = true;
break;
}
j += 1;
}
if (!(found))
listBox1.SelectedIndex = -1;
}
catch
{
//Do Nothing;

}
}

raha_20
یک شنبه 25 مرداد 1388, 00:41 صبح
دوست عزیز اینم کد که بیشتر به دردت میخوره واسه دیتا گراید هستش . این دستور sql را توی Text_change اون Text box بنویس . کارت حل میشه






OleDbDataAdapter1.SelectCommand.CommandText = "SELECT * FROM tbl_member WHERE m_code like '" & txtsearch.Text & "%'"

LibraryDataSet1.tbl_member.Clear()
OleDbDataAdapter1.Fill(LibraryDataSet1.tbl_member)

hrbaban
یک شنبه 25 مرداد 1388, 19:19 عصر
میخواستم بدونم برای هر بار اتصال باید به پایگاه داده وصل شد و دوباره اطلاعات رو در DataGridView نمایش داد .

اجازه بدید واضحتر بگم :

در برنامه ای که نوشتم وقتی فرم لود میشه ، من به پایگاه داده وصل میشم و DataGridView رو پر میکنم . حالا وقتی توی TextChanged مربوط به TextBox من عبارت مورد نظرم رو مینویسم بازم باید به پایگاه وصل بشم و DataGridVew رو پر کنم در صورتی که قبلا این کار رو کردم ؟

Atena_k
دوشنبه 26 مرداد 1388, 20:10 عصر
دوست من ، صورت سوالم یه چیز دیگه هستش .



شاید! ولی معنا و مفهوم و هدف یکی است

دهیاری
سه شنبه 27 مرداد 1388, 04:12 صبح
دوست عزیز،ابتدا داده هات رو توی یه table بریز.سپس یک DataView تعریف کن و این Table رو به اون نسبت بده.اینجوری:

DataView dataview1=new DataView(table1)
بعد dataSource گرید رو بزار روی dataview1.حالا برو تو رویداد Text_Change تکس باکست و کد زیر رو بنویس

dataview1.RowFilter="FirstName="+Textbox1.text

FirstName نام اون فیلدیست که میخواهی فیلت براساس اون انجام بشه
در ضمن Table‌رو هم با DataAdapter پرش کن

hrbaban
سه شنبه 27 مرداد 1388, 16:04 عصر
دوست عزیز،ابتدا داده هات رو توی یه table بریز.سپس یک DataView تعریف کن و این Table رو به اون نسبت بده.اینجوری:

DataView dataview1=new DataView(table1)
بعد dataSource گرید رو بزار روی dataview1.حالا برو تو رویداد Text_Change تکس باکست و کد زیر رو بنویس

dataview1.RowFilter="FirstName="+Textbox1.text

FirstName نام اون فیلدیست که میخواهی فیلت براساس اون انجام بشه
در ضمن Table‌رو هم با DataAdapter پرش کن



من این کارها رو کردم .
به کد زیر یه نگاهی بنداز . . . من کجا و چطوری کانکشنم رو تعریف کنم که هر با نخوام برم سراغ پایگاه داده و با DataAdapter بخوام DataGridVew رو پر کنم ...


private void textBox1_TextChanged(object sender, EventArgs e)
{
SqlConnection objConnection = new SqlConnection();
objConnection.ConnectionString = "Data Source=(local);Initial Catalog=DBmain;Integrated Security=True";
SqlDataAdapter objDataAdapter = new SqlDataAdapter("select * from TBkala", objConnection);
DataSet objDataset = new DataSet();
objDataAdapter.Fill(objDataset, "TBkala");
DataView objDataView = new DataView(objDataset.Tables["TBkala"]);
dgvShow.DataSource = objDataView;
objDataView.RowFilter = "name_kala like '*"+textBox1.Text+"*'";

/////////////
}

hrbaban
چهارشنبه 28 مرداد 1388, 10:28 صبح
هیچکس نیست ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

hrbaban
چهارشنبه 28 مرداد 1388, 12:44 عصر
الو صدا میاد !!!!؟؟؟؟:چشمک:

raha_20
چهارشنبه 28 مرداد 1388, 13:15 عصر
به نظر من تو رویداد Change text دستورات را بنویس ..
کدرا هم به این صورت که گذاشتم بزاری کارت حل میشه





privatevoid txtSearch_TextChanged(object sender, EventArgs e)
{
adap.SelectCommand = newSqlCommand();
adap.SelectCommand.CommandText="SELECT * FROM tbl_member WHERE m_code LIKE '"+txtSearch.Text+"%'";


adap.SelectCommand.Connection = con;
adap.SelectCommand.CommandType = CommandType.Text;
con.Open();
dataset1.Tables[0].Clear();

adap.Fill(dataset1,

"tbl_memberEdit");

con.Close();
dataGridView1.DataSource = dataset1;
dataGridView1.DataMember = "tbl_memberEdit";

hrbaban
چهارشنبه 28 مرداد 1388, 15:53 عصر
raha_20 شاید منظورم رو متوجه نشدی . . .
این کدی که شما نوشتی باعث میشه ، با تایپ هر حرف ، به پایگاه داده ، قطع و وصل بشیم .

من میگم :
1- هنگام لود فرمم DataGridView پر میشه .
2- میشه یه کاری کرد وقتی که دارم توی textbox تایپ میکنم ، دیگه نخوام به پایگاه وصل بشم ؟
( اطلاعات همون دیتاگرید رو فیلتر کنم )

hrbaban
چهارشنبه 28 مرداد 1388, 20:42 عصر
پس این حرفه ایها کجا هستن ؟
یک هفته هست دنبال یه جواب میگردیم .:چشمک:

raha_20
چهارشنبه 28 مرداد 1388, 21:07 عصر
خوب فکر کنم بهتر باشه که یه data view از dataset بسازی وبعد اطلاعات data view را فیلتر کنی. اینجوری دیگه نیازی هم نیست که مدام قطع ووصل شی . ببین میتونی هم یه جامثلا لود شدن فرم به پایگاه وصل شی و کارهات رو انجام بدی وقتی نیازی نداری اونو ببندی

دهیاری
جمعه 13 شهریور 1388, 03:20 صبح
دوست عزیز کدهای زیر رو توی Form_Lode تعریف کن
SqlConnection objConnection = new SqlConnection();
objConnection.ConnectionString = "Data Source=(local);Initial Catalog=DBmain;Integrated Security=True";
SqlDataAdapter objDataAdapter = new SqlDataAdapter("select * from TBkala", objConnection);
DataSet objDataset = new DataSet();
objDataAdapter.Fill(objDataset, "TBkala");
DataView objDataView = new DataView(objDataset.Tables["TBkala"]);
dgvShow.DataSource = objDataView;
و فقط کد زیر رو توی تکس چنج بنویس
objDataView.RowFilter = "name_kala like '*"+textBox1.Text+"*'";