PDA

View Full Version : سوال: مشکل در تشخیص عناصر تکراری در ComboBox



AmiN0012
یک شنبه 18 بهمن 1394, 08:43 صبح
سلام دوستان من یک کامبو دارم که بصورت کد بش گفتم به ی جدول وصل شه.که جدول شامل فیلدهای کد و نام هست.به کامبو گفتم نام رو نمایش بده ولی موقع درج یا ویرایش کد ذخیره شه. درست عمل میکنه.فقط زمانی که من دوتا نام تکراری ولی با کدهای مجزا داشته باشم کامبو بعد leave شدن از روش ،کد اولین فیلد تکراری رو ذخیره میکنه.
تابع:

public static void FillCmb(ComboBox Cmb, string FirstRow, string query, string name, string id)
{
try
{
Connection.Open();
DataTable D = new DataTable();
new SqlDataAdapter(query, Connection).Fill(D);
DataRow row1 = D.NewRow();
row1[0] = 0;
row1[1] = FirstRow;
D.Rows.InsertAt(row1, 0);
Cmb.DataSource = D;
Cmb.DisplayMember = name;
Cmb.ValueMember = id;
}
catch
{
}
Connection.Close();
}
فراخوانی

private void Frm_Treat_Load(object sender, EventArgs e)
{
FillCmb(Cmb_SrchDoctor, "مشخص نشده", "select Doc_Id,Doc_Name from Doctor", "Doc_Name", "Doc_Id");
}
رویداد SelectedValueChanged است. البته رویداد keydown و leave هم به کامبوی من وصله که من غیر فعالشونم کردم تاثیری نداشت. لینک زیر رو هم دیدم http://stackoverflow.com/questions/28581471/same-two-items-in-combobox-but-first-one-always-gets-selected-c-sharp

Mahmoud.Afrad
یک شنبه 18 بهمن 1394, 16:25 عصر
وقتی DropDownStyle را روی DropDown قرار داده باشید هنگامی که منوی کشویی باز میشه ، اولین متنی که برابر مقدار تایپ شده در باکس باشه انتخاب میشه، یا به معنی دیگه ، این حالت زمانی استفاده میشه که متن (Text) مهم هست نه چیز دیگه.

اگر DropDownStyle را روی DropDownList قرار بدید این مشکل بوجود نمیاد. یا اینکه از کمبوباکسی استفاده کنید که حساس به متن نباشه.
راه دیگرش هم اینه که کاری کنید متن ها یکی نباشند. مثلا شماره ای مثل ردیف یا کد بهشون اختصاص بدید. این کار رو میتونید در سلکت انجام بدید.