دسته بندی ها
15:28 1399/07/30

مشکل عدم نمایش صحیح اطلاعات در ComboBox در WPF سی شارپ

مشخصات سوال کننده :
کاربر : mojtabahakimian     امتیاز کاربر : 155     رتبه کاربر : 10
دسته بندی : WPF سی شارپ Entity Framework Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4350
5 نظر
mojtabahakimian : سلام همه چی و همهجور حالتی رو امتحان کردم رو امتحان کردم کار نمیکه کد نویسیم یه اشکال داره

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 10:22 1399/07/30
mojtabahakimian : ??????

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 11:57 1399/08/01
fateme : اگر متن داخل کمبوباکس درست نمایش داده نمیشه خب یکبار کمبوباکس رو پاک کنید دوباره یک کمبوباکس دیگه روی پنجره بذارید. شاید کمبوباکس شما استایلهایی از قبل داره که این مشکل رو به وجود میاره.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 05:42 1399/07/30
saedbfd : سلام ببینید توی سوال قبلیتون کاربر fateme کدهای نمایش اطلاعات در کمبوباکس رو براتون نوشت. اگر مجدد خطا دارید بنظرم یک پروژه خالی ایجاد کنید و اون کدها رو تست کنید و مطمئن بشید که کدها مشکلی نداره. چون توی این پروژه ممکنه بخاطر تغییراتی که دادید این مشکل باشه.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 12:33 1399/08/02
saedbfd : ضمنا شما برای پر کردن Combo دو روش رو نوشتید و در هر دو روش خاصیت Text رو مقدار دهی کردید !!! در حالی که باید DisplayMemberPath و SelectedValuePath رو مقداردهی کنید.

امتیاز کاربر : 1664   رتبه کاربر : 1   تاریخ ثبت : 12:34 1399/08/02
ادامه نظرات ...
هوش مصنوعی

پاسخ هوش مصنوعی

برای رفع مشکل عدم نمایش صحیح داده ها در ComboBox، مطمین شوید که ComboBox به درستی با منبع داده ها پر می شود. کد شما این امکان را دارد، اما به نظر می رسد که به درستی کار نمی کند. در زیر چند نکته و راه حل برای اطمینان از این موضوع آورده ام:

1. **استفاده از ItemsSource:** استفاده از `ItemsSource` به جای `Items.Add()`، کاری است که شما در روش دوم خود انجام کرده اید. این روش مناسب تر است زیرا به ComboBox اجازه می دهد تا به طور خودکار نمایه ها را بر اساس تغییرات منبع داده ها به روز کند.

2. **تنظیم DisplayMemberPath:** مطمین شوید که `DisplayMemberPath` به درستی تنظیم شده باشد تا ComboBox بتواند مقدار قابل نمایش (بر اساس خصیصه NAMES در Q_View) را نشان دهد.

نمونه کد زیر می تواند به شما کمک کند:

private void dgv_Kalaha_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   Q_View QVkala = dgv_Kalaha.SelectedItem as Q_View;
   if (QVkala != null)
   {
      texb_codekala.Text = QVkala.CODE.ToString();
      texb_namekala.Text = QVkala.NAME.ToString();
      cmd_vahedkala.ItemsSource = QVkala.NAMES; // تنظیم منبع داده
      cmd_vahedkala.DisplayMemberPath = "NAMES"; // تعیین خصیصه نمایشی
   }
}

3. **کاهش مشکلات نمایش:** اطمینان حاصل کنید که خصیصه های NAMES که به ComboBox واگذار شده اند به طور صحیح مقادیر عددی را نمایش دهند. اگر NAMES شامل اعداد است و شما می خواهید آن ها را به صورت رشته نمایش دهید، مطمین شوید که متن آن ها به درستی فرمت شده است.

4. **بررسی مقادیر NAMES:** اگر NAMES یک لیست از اشیاء است، مطمین شوید که هر شیء شامل یک خصیصه برای نمایش (مانند یک نام یا توضیح) باشد. همچنین بهتر است بررسی کنید که آیا NAMES یک لیست از رشته ها است یا لیست از اشیاء. در صورتی که لیست از اشیاء باشد، `DisplayMemberPath` باید به خصوصیت مناسب آن شیء اشاره کند.

5. **تنظیمات UI:** اگر تغییرات فوق به شما کمک نکرد، اجازه دهید تا UI را دوباره رفرش کنید و از `DataContext` برای ارتباط بین ویرایشگرها استفاده کنید.

با استفاده از این نکات و روش ها، باید بتوانید ComboBox خود را به درستی پر کنید و اطمینان حاصل کنید که اطلاعات به درستی نمایش داده می شوند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 12:37 1399/08/02

سلام نحوه نمایش اطلاعات از دیتابیس در ComboBox رو در این سوال براتون توضیح دادم. برای بایند کردم کمبوباکس باید مطابق کد زیر عمل کنید.

 

cmb.ItemsSource = database.Table.ToList();
cmb.DisplayMemberPath = "ColumnName";
cmb.SelectedValuePath = "ColumnID";

 

در حالی که شما خاصیت Text رو مقداردهی کردید که اشتباه هست.

به این پاسخ امتیاز بدهید    1
امتیاز: 1635 رتبه: 2
پاسخ دهنده : Alireza 22:21 1399/09/21

این کد حتما به دردت میخوره:

private void datagrid1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            object item = datagrid1.SelectedItem;
            if (item != null)
            {
                int Id = Convert.ToInt32((datagrid1.SelectedCells[0].Column.GetCellContent(item) as TextBlock).Text);
                var qre = dbms.Database.SqlQuery<Q_View>("SELECT * FROM Q_View where 1=1 And KalaID = " + Id);
                var Name = qre.ToList();
                combobox1.ItemsSource = Name;
                combobox1.SelectedValuePath = "KalaID";
                combobox1.DisplayMemberPath = "KalaName";
                combobox1.SelectedIndex = 0;
            }
        }

 

به این پاسخ امتیاز بدهید    1
امتیاز: 115 رتبه: 13
2 نظر
Alireza : you're welcome

امتیاز کاربر : 115   رتبه کاربر : 13   تاریخ ثبت : 02:25 1399/09/22
mojtabahakimian : Thank you so much

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 09:25 1399/09/22
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود