جستجو در textbox هنگام textchange
با سلام
می دونم این سوال تکراری است اما سوال من یه کم فرق داره پس خواهش می کنم که پاک نکنین
یه textbox داریم که می خوایم هر وقت کاربر تایپ می کنه بر اساس اون جستجو بکنو و نتیجه رو در datagridview نمایش بده راه حلی که برای این کار ارائه دادن این است که از autocomplate استفاده کنیم این در صورتی است که table ما دارای تعداد محدودی مقدار باشه که بتونیم automocplate استفاده کنیم و از طرفی تعداد رکورد ها در table بسیار زیاد خواهد بود شاید به 1 میلیون هم برسه و از طرفی جستجو کاملا دینامیک است که بر اساس فیلدی که کاربر از روی datagridview انتخاب می کنه انجام می شه و در این حالت امکان داره که کاربر یه لحظه کد رو انتخاب کنه و یه لحظه عنوان و... پس با این فرض هم autocompalte هم منتفی است
حالا من چه جوری می تونم این جستجو رو با بهترین کارایی بنویسم و طراحی کنم در ضمن برنامه تحت شبکه می باشد و تعداد نسخه هایی که از database استفاده می کننن احتمال دارد به 100 عدد برسد
با تشکر از همه
نقل قول: جستجو در textbox هنگام textchange
نقل قول: جستجو در textbox هنگام textchange
به نظر من می تونی تو رویداد TextChange از کد Like مربوط به sql استفاده کنید. البته نمی دونم با رکوردهای زیادی که دارید چقدر رو سرعت تاثیر داره.
نقل قول: جستجو در textbox هنگام textchange
این چیزی که من تو برنامه هام استفاده می کنم
توی کد زیر SelectCommand رو تعیین میکنم
privatestring SelectData()
{
string selectCommand = null;
if (_customerID != 0)
{
selectCommand += " AND CustomerID = " + _customerID;
}
if (_firstName != null)
{
selectCommand += " AND FirstName LIKE '" + _firstName + "%'";
}
if (_lastName != null)
{
selectCommand += " AND LastName LIKE '" + _lastName + "%'";
}
if (_address != null)
{
selectCommand += " AND Address LIKE '" + _address + "%'";
}
if (_phoneNumber1 != null)
{
selectCommand += " AND PhoneNumber1 LIKE '" + _phoneNumber1 + "%'";
}
if (_phoneNumber2 != null)
{
selectCommand += " AND PhoneNumber2 LIKE '" + _phoneNumber2 + "%'";
}
if (_customerDetail != null)
{
selectCommand += " AND CustomerDetail LIKE '" + _customerDetail + "%'";
}
if (_customerSince != null)
{
selectCommand += "AND CustomerSince LIKE '" + _customerSince + "%'";
}
if (selectCommand != null)
{
return selectCommand.Remove(0, 4);
}
returnnull;
}
و توی این هم از SelectCommand ساخته شده واسه گرفتن اطلاعات استفاده میکنم
publicDataTable GetData()
{
OleDbCommand command = newOleDbCommand();
OleDbDataAdapter customerDataAdapter = newOleDbDataAdapter();
DataTable dt = newDataTable();
try
{
connection.Open();
command.Connection = connection;
string selectCommand = SelectData();
if (selectCommand != null)
{
selectCommand = "WHERE " + selectCommand + " ORDER BY CustomerID ASC";
}
else
{
selectCommand = "ORDER BY CustomerID ASC";
}
command.CommandText = "SELECT Customer.CustomerID AS [ ], FirstName AS ," +
" LastName AS [ ], Address AS , PhoneNumber1 AS [ 1], PhoneNumber2 AS [ 2]," +
" CustomerDetail AS , CustomerSince AS [ ] FROM Customer " + selectCommand;
customerDataAdapter.SelectCommand = command;
customerDataAdapter.SelectCommand.ExecuteNonQuery( );
customerDataAdapter.Fill(dt);
return dt;
}
catch
{
returnnull;
}
finally
{
connection.Close();
command.Dispose();
customerDataAdapter.Dispose();
dt.Dispose();
}
}
نقل قول: جستجو در textbox هنگام textchange
با تشکر از راهنمایی شما
مشکل بنده اینه که تعداد رکورد های جدول ما بسیار زیاد است و تنوع جستجو هم زیاد است در ضمن
دوست عزیز آقای hsmfaridmehr وقتی که شما با عملگر like کار می کنین اگر dataی ورودی تون هم null باشه error نمی ده پس بهتر ه که اون if ها رو برداری تا خوانایی برنامه شما هم بیشتر بشه و هم سرعت برنامه شما بهتر بشه
نقل قول: جستجو در textbox هنگام textchange