حذف آیتم انتخابی در یک ComboBox از کامبوباکسهای دیگر
با سلام
دوستان 5تا کمبوباکس دارم که مقادیرشونو از یه جدول میگیرن، فرض کنیم a,b,c,d,e مقادیر جدول باشند.
توی لود فرم دستوری نوشتم که با لود فرم مقادیر کمبو برابر با جدول میشود و کاربر میتونه هر کدومو که بخواد انتخاب کنه.
حالا مشکلم اینه طوری کنترل کنم کاربر نتونه تو کمبوباکس مقدار تکراری انتخاب کنه.1- ترجیحا بجز اینکه با if بخوام مقدار textشونو چک کنم، چه راهه دیگه ای پیشنهاد میدین؟؟
با تشکر
نقل قول: مساوی نبودن مقادیر کمبوباکس فراخونی شده از یک table
نقل قول:
نوشته شده توسط
farnoosh66
با سلام
دوستان 5تا کمبوباکس دارم که مقادیرشونو از یه جدول میگیرن، فرض کنیم a,b,c,d,e مقادیر جدول باشند.
توی لود فرم دستوری نوشتم که با لود فرم مقادیر کمبو برابر با جدول میشود و کاربر میتونه هر کدومو که بخواد انتخاب کنه.
حالا مشکلم اینه طوری کنترل کنم کاربر نتونه تو کمبوباکس مقدار تکراری انتخاب کنه.1- ترجیحا بجز اینکه با if بخوام مقدار textشونو چک کنم، چه راهه دیگه ای پیشنهاد میدین؟؟
با تشکر
سلام به شما وقت بخیر ، شما میتونین با استفاده از حلقه foreach هم این کار رو بکنید یعنی به این صورت
foreach (var dvrow in comboBox1.Items)
{
if (dvrow.ToString() == textBox1.Text)
{
MessageBox.Show("این مقدار وجود دارد.",
"خطای مقدار تکراری",
MessageBoxButtons.OK, MessageBoxIcon.Error);
break;
}
}
ببین این مثالی که زدم با تکس باکس هست که حلقه میاد تمام مقادیر کمبوباکس رو بررسی میکنه اگه برابر با مقداری بود که ما توی تکس باکس نوشتیم پیغام خطای داده ی تکراری رو بهمون میده حالا بسته تغییراتی که میخوای بدی با این کد هم میتونی از انتخاب مقادیر تکراری در کمبو جلوگیری کنی .
پیروز و موفق باشید .
از کدنویسی لذت ببرید.
نقل قول: مساوی نبودن مقادیر ComboBox فراخونی شده از یک table
میتونید آیتم انتخابی یک کمبو را از دیتاسورس کمبوهای دیگر حذف کنید.
به چه صورت کمبو رو پر کردید؟ کد بزارید.
نقل قول: مساوی نبودن مقادیر ComboBox فراخونی شده از یک table
DataSet ds4 = new DataSet();
ds4 = sql.fill("select * from tblGroup where GroupID='" + x2 + "'");
comboBox3.DataSource = ds4.Tables["hi"];
comboBox3.DisplayMember = "GroupName";
comboBox3.ValueMember = "GroupName";
نقل قول: مساوی نبودن مقادیر ComboBox فراخونی شده از یک table
میتونید از طریق RowFilter در کلاس DataView ، فیلتر مناسب را روی دیتاسورس اعمال کنید؛ به اینصورت که برای هر کمبوباکس، آیتمهایی مورد قبول باشد که در کمبوهای دیگر سلکت نشده باشند.
فیلتر Not In در لینک زیر رو نگاه کنید:
http://www.csharp-examples.net/dataview-rowfilter
private void SetFilterToComboBoxes()
{
if (_allComboBoxesList == null) return;
foreach (ComboBox comboBox in _allComboBoxesList)
{
string strFilter = "id NOT IN (";
var listToGetSelectedValue = _allComboBoxesList.Where(c => !c.Equals(comboBox)).ToList();
foreach (ComboBox anotherComboBox in listToGetSelectedValue)
{
int selectedId = Convert.ToInt32(anotherComboBox.SelectedValue);
strFilter += selectedId + ",";
}
strFilter += "-9999999)";
comboBox.BeginUpdate();
int intTemp = Convert.ToInt32(comboBox.SelectedValue);
DataView dv = comboBox.DataSource as DataView;
if (dv != null) dv.RowFilter = strFilter;
comboBox.SelectedValue = intTemp;
comboBox.EndUpdate();
}
}
در رویداد SelectedIndexChanged کمبوباکسها ، متد بالا رو فراخوانی کنید.