PDA

View Full Version : سوال: فیلتر کردن آیتم های کمبوباکس



mc_laren
پنج شنبه 26 اردیبهشت 1392, 17:30 عصر
با عرض سلام و خسته نباشی خدمت دوستان
من تو برنامم برای نمایش لیست کالاها، حساب ها و ... از کمبوباکس استفاده می کنم و می خواستم به این کمبوباکس ها قابلیتی بدم که کاربر بتونه با نوشتن قسمتی از نام کالا یا طرف حساب لیست بر اساس اون فیلتر بشه، اما تا حالا نتونستم چنین کدی رو پیدا کنم ، در ضمن دوستان لطف کنن اگه روشی به ذهنشون می رسه به غیر استفاده از دستورات sql باشه، ساده ترین راه اینه که از قسمت DefaultView تو ِDataTable دستور sql را وارد کرده و فیلتر رو اعمال کنیم، اما من دنبال روش دیگه ای هستم تا حتی اگر داده ها رو بصورت دستی هم وارد کمبوباکس کرده باشیم جواب بده.
راستی تو یه نرم افزار دیدم وقتی متنی رو می نوشتم، متن نوشته شده تو آیتم هاییکه وجود داشت هایلایت می شد.
با تشکر از توجهتون

Tiam121
پنج شنبه 26 اردیبهشت 1392, 18:45 عصر
خاصیت AutoCompleteMode کامبو رو تنطیم کن

khokhan
پنج شنبه 26 اردیبهشت 1392, 23:51 عصر
با عرض سلام و خسته نباشی خدمت دوستان
من تو برنامم برای نمایش لیست کالاها، حساب ها و ... از کمبوباکس استفاده می کنم و می خواستم به این کمبوباکس ها قابلیتی بدم که کاربر بتونه با نوشتن قسمتی از نام کالا یا طرف حساب لیست بر اساس اون فیلتر بشه، اما تا حالا نتونستم چنین کدی رو پیدا کنم ، در ضمن دوستان لطف کنن اگه روشی به ذهنشون می رسه به غیر استفاده از دستورات sql باشه، ساده ترین راه اینه که از قسمت DefaultView تو ِDataTable دستور sql را وارد کرده و فیلتر رو اعمال کنیم، اما من دنبال روش دیگه ای هستم تا حتی اگر داده ها رو بصورت دستی هم وارد کمبوباکس کرده باشیم جواب بده.
راستی تو یه نرم افزار دیدم وقتی متنی رو می نوشتم، متن نوشته شده تو آیتم هاییکه وجود داشت هایلایت می شد.
با تشکر از توجهتون

سلام
در رویداد kay up کمبو باکس این کد رو وارد می کنی
بعد هرداده ای اعم از داده دیتابیس باشه یا اینکه از کلکشون خودتون دستی آیتمهای کمبو رو وارد کنین به محض وارد کردن اولین حرف کلمات مرتبط براتون در کمبو لیست می شه و دروپ داونش هم اتومات باز می شه :لبخند::لبخند:



private void comboBox1_KeyUp(object sender, KeyEventArgs e)
{
int index;

string found;

string actual;


bool bo = e.KeyCode == Keys.Back || e.KeyCode == Keys.Left
|| e.KeyCode == Keys.Right || e.KeyCode == Keys.Up || e.KeyCode == Keys.Down
|| e.KeyCode == Keys.Delete || e.KeyCode == Keys.PageDown
|| e.KeyCode == Keys.PageUp || e.KeyCode == Keys.End
|| e.KeyCode == Keys.Home;

if (bo == true)
return;

actual = this.comboBox1.Text;
index = this.comboBox1.FindString(actual);


if (index > -1)
{
found = this.comboBox1.Items[index].ToString();
this.comboBox1.SelectedIndex = index;

this.comboBox1.SelectionStart = actual.Length;
this.comboBox1.SelectionLength = found.Length;
this.comboBox1.DroppedDown = true;
}
}

mc_laren
جمعه 27 اردیبهشت 1392, 12:02 عصر
ضمن تشکر از کاربر عزیز khokhan
از کدتون استفاده کردم اما به دوتا مشکل برخوردم
1- این کد فقط برای حالتی می باشد که رشته وارده ابتدای کلمه باشد و اگر وسط باشد کارایی ندارد، من به کدی نیاز دارم که مشابه دستور like در sql باشد.
2- بعد از زدن کلید enter لیست کشویی بسته نشده و دوباره باز می شود.

کمبوباکسی که تو اون نرم افزار دیدم به این صورت بود که مشابه دستور like فقط داده هایی رو می آورد که رشته مورد نظر توشون بود.