PDA

View Full Version : فیلتر کردن ایتم های کمبوباکس (ComboBox) بر اساس کلمات تایپ شده در آن



jmfnima
جمعه 20 آبان 1390, 14:32 عصر
با سلام
من بر روی فرم هام از چند کمبو باکس استفاده کردم که ایتم های این کمبو باکس از دیتا تیبل گرفته میشه حالا من میخوام وقتی کاربر هر کلمه ای در کمبو باکس تایپ کرد کمبو باکس باز بشه و ایتم های اون بر اساس کلمات تایپ شده فیلتر بشه و هر موقع هم که عین کلمه تایپ شده در کمبو باکس بود اون کلمه در لیست هایلایت بشه .

مرتضی تقدمی
جمعه 20 آبان 1390, 17:24 عصر
سلام
از خاصیت های auto complete کمبوباکس استفاده کنید.

jmfnima
شنبه 21 آبان 1390, 14:00 عصر
با سلام
از اين روشي كه شما ميگين من قبلا استفاده كردم ولي باز هم نشد .

rohullah
شنبه 21 آبان 1390, 19:01 عصر
منم یه زمانی به همین مشکل برخورده بودم. با dataview میشه این کاری رو که میخوای انجام بدی. datasource رو بزار dataview بعد dataview رو فیلتر کن

jmfnima
شنبه 21 آبان 1390, 20:15 عصر
با سلام و تشکر از شما دوست عزیز
این dataview که گفتی کجا هست من متوجه نشدم که چیه !! اگه ممکنه یک نمونه برام بزاری ممنون میشم .

AliRezaPro
شنبه 21 آبان 1390, 21:14 عصر
تقریبا یه همچین چیزی میخواین ؟
private void comboBox1_TextChanged(object sender, EventArgs e)
{
DataSet ds = new DataSet();
SqlDataAdapter objDataAdapter = new SqlDataAdapter("Select LastName From librarian where LastName Like N'" + comboBox1.Text.Trim () + "%'", conn);
objDataAdapter.Fill(ds, "librarian");

DataTable dt = new DataTable();
dt = ds.Tables["librarian"];
dt.DefaultView.RowFilter = "LastName like'%" + comboBox1.Text.Trim() + "%'";
if (dt.DefaultView.Count == 0)
MessageBox.Show("!" + "کلمه ی مورد نظر پیدا نشد ");

comboBox1.DroppedDown = true;

object[] obj = dt.Rows[0].ItemArray;
for (int i = 0; i < obj.Length; i++)
{
comboBox1.Items.Add (obj[i].ToString());
}
dt = null;
}

sobaisobai
شنبه 21 آبان 1390, 21:32 عصر
سلام
دوست عزیز شما AutoCompleteMode رو برابر با SuggestAppend و AutoCompleteSource رو برابر با ListItems قرار بده مشکلت حل میشه

jmfnima
شنبه 21 آبان 1390, 23:00 عصر
با سلام و تشکر از شما دوست عزیز sobaisobai
من الان دارم از همین روشی که شما گفتید استفاده میکنم ولی در این روش هم پیدا کردن کلمه مورد نظر برای کاربر سخته با توجه به اینکه در هر کمبو باکس های من حداقل 100 ایتم وجود داره باید روشی باشه که برای پیدا کردن کلمه مورد نظر برای کاربر راحت باشه .

sobaisobai
شنبه 21 آبان 1390, 23:08 عصر
سخت نیست
وقتی کاربر مثلا کلمه علی رو مینویسه هر چی علی باشه رو واست میاره
راه دیگه ای هم مگه وجود داره؟

jmfnima
یک شنبه 20 آذر 1390, 23:02 عصر
با سلام و تشکر از دوستان عزیز
این روش هایی که دوستان ارائه دادن رو به کار گرفتم ولی عملی نبود . اگه کسی روش دیگه ای داره به من کمک کنه . ممنون

asadegha
دوشنبه 21 آذر 1390, 02:46 صبح
دیگه چه روشی می خوای؟ همین دوتا هست خوب. البته اینکه دم به ساعت از دیتابیس بخوای اطلاعات فچ کنی خوب نیست. اون چیزایی که باید نمایش داده بشه بریز تو لیست،اونوقت لیست رو فیلتر کن.

ولی مشکل شما کاربره. کاربر توی چی به مشکل بر می خوره؟ تعداد زیاد item؟ item ها چی هستن؟ نام نام خانوادگیه؟ یا دیکشنری؟ یکم توضیح بده ببینیم چه خبره. ما که نمیدونیم پروژه درباره چیه و چه چیزایی قراره فیلتر بشه، چطوری بگیم چیکار کنی کاربر پسند باشه.

jmfnima
دوشنبه 21 آذر 1390, 12:51 عصر
با سلام به دوستان
قبل از اينكه من با سي شارپ كنم از اكسس براي ساخت فرم ها استفاده مي كردم به اين طريق كه بر روي فرمم دو تا كمبو باكس يكي به نام استان و ديگري به نام شهر قرار داده بودم حال هر موقع در كمبو باكس يكي از استان ها رو انتخاب ميكردم به محض زدن اينتر فوكوس به كمبو باكس شهر ميرفت و اين كمبو باكس به صورت اتومات باز ميشد و هر موقع هم كه كاربر اول هر شهر رو تايپ مي كرد اسم شهر در داخل كمبو هايلايت مي شد و علاوه بر آن بقيه نام شهر در كمبو نمايش داده ميشد . كه با اين كار كاربر به راحتي و بدون استفاده از موس ميتونست كار كنه .
حالا اكسس با اون محدوديتي هايي كه داشت همچنين امكاناتي هم در خصوص كمبو باكس ها داشت كه خيلي كاربر راحتتر باهاش كار مي كرد ولي در سي شارپ هر چي دنبال همچنين روشي بودم به نتيجه نرسيدم .
در ضمن الان در سي شارپ هم كمبو باكس ها بوسيله ديتا تيبل پر ميشه و ديتاتيبل هم از طريق كدهاي اس كيو ال از ديتابيس پر ميشه .
اميدوارم كه تونسته باشم مفهوم خودم رو رسونده باشم و اميدوارم كه دوستان بتونن به من كمك كنن.

jmfnima
دوشنبه 21 آذر 1390, 12:54 عصر
با سلام به دوستان
قبل از اينكه من با سي شارپ كنم از اكسس براي ساخت فرم ها استفاده مي كردم به اين طريق كه بر روي فرمم دو تا كمبو باكس يكي به نام استان و ديگري به نام شهر قرار داده بودم حال هر موقع در كمبو باكس يكي از استان ها رو انتخاب ميكردم به محض زدن اينتر فوكوس به كمبو باكس شهر ميرفت و اين كمبو باكس به صورت اتومات باز ميشد و هر موقع هم كه كاربر اول هر شهر رو تايپ مي كرد اسم شهر در داخل كمبو هايلايت مي شد و علاوه بر آن بقيه نام شهر در كمبو نمايش داده ميشد . كه با اين كار كاربر به راحتي و بدون استفاده از موس ميتونست كار كنه .
حالا اكسس با اون محدوديتي هايي كه داشت همچنين امكاناتي هم در خصوص كمبو باكس ها داشت كه خيلي كاربر راحتتر باهاش كار مي كرد ولي در سي شارپ هر چي دنبال همچنين روشي بودم به نتيجه نرسيدم .
در ضمن الان در سي شارپ هم كمبو باكس ها بوسيله ديتا تيبل پر ميشه و ديتاتيبل هم از طريق كدهاي اس كيو ال از ديتابيس پر ميشه .
اميدوارم كه تونسته باشم مفهوم خودم رو رسونده باشم و اميدوارم كه دوستان بتونن به من كمك كنن.

sobaisobai
چهارشنبه 23 آذر 1390, 11:28 صبح
با سلام به دوستان
قبل از اينكه من با سي شارپ كنم از اكسس براي ساخت فرم ها استفاده مي كردم به اين طريق كه بر روي فرمم دو تا كمبو باكس يكي به نام استان و ديگري به نام شهر قرار داده بودم حال هر موقع در كمبو باكس يكي از استان ها رو انتخاب ميكردم به محض زدن اينتر فوكوس به كمبو باكس شهر ميرفت و اين كمبو باكس به صورت اتومات باز ميشد و هر موقع هم كه كاربر اول هر شهر رو تايپ مي كرد اسم شهر در داخل كمبو هايلايت مي شد و علاوه بر آن بقيه نام شهر در كمبو نمايش داده ميشد . كه با اين كار كاربر به راحتي و بدون استفاده از موس ميتونست كار كنه .
حالا اكسس با اون محدوديتي هايي كه داشت همچنين امكاناتي هم در خصوص كمبو باكس ها داشت كه خيلي كاربر راحتتر باهاش كار مي كرد ولي در سي شارپ هر چي دنبال همچنين روشي بودم به نتيجه نرسيدم .
در ضمن الان در سي شارپ هم كمبو باكس ها بوسيله ديتا تيبل پر ميشه و ديتاتيبل هم از طريق كدهاي اس كيو ال از ديتابيس پر ميشه .
اميدوارم كه تونسته باشم مفهوم خودم رو رسونده باشم و اميدوارم كه دوستان بتونن به من كمك كنن.
سلام
فکر کنم منظورت این باشه

jmfnima
چهارشنبه 23 آذر 1390, 14:40 عصر
با سلام و تشكر از دوست عزيز sobaisobai
در اين روشي كه شما در سورستون استفاده كردين درسته به محض وارد كردن اول اسم شهر ، كل شهر در كمبو باكس نشون داده ميشه ولي در زماني كه كمبو باكس باز ميشه نام شهر وارد شده در كمبو باكس هايلايت نميشه .

jmfnima
چهارشنبه 23 آذر 1390, 19:58 عصر
با سلام به همه دوستان
اون چیزی که من دنبالش بودم رو پیدا کردم توی ضمائم هم گذاشتم اگه کسی خواست ازش استفاده کنه .

vbn111
دوشنبه 09 مرداد 1396, 16:36 عصر
سلام
با اینکه مدت زیادی از این پرسش گذشته اما جوابشو میذارم‏ شاید به درد یه دوست بخوره
خاصیت AutoCompleteMode را برابر با مقدار SuggestAppend و خاصیت AutoCompleteSource را برابر ListItems قرار بدید
یا علی