دسته بندی ها
22:46 1399/07/30

نمایش ناقص اطلاعات در کمبوباکس WPF سی شارپ

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

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3134
هوش مصنوعی

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

به نظر می رسد که مشکل شما به نوع داده هایی که به کمبوباکس اضافه می کنید برمی گردد. وقتی شما از `QVkala.NAMES` استفاده می کنید، احتمالاً این یک آرایه یا لیستی از رشته ها است و به همین دلیل کاراکترها به صورت جدا جدا در کمبوباکس نمایش داده می شوند.

برای حل این مشکل، شما باید از یک `List` یا `ObservableCollection` استفاده کنید که مقادیر خود را به درستی به نمایش بگذارد. از طریق یکی از این دو روش زیر می توانید مشخص کنید که نمایش کمبوباکس چگونه باشد:

1. استفاده از `List`:

private void datagrid1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    Q_View QVkala = datagrid1.SelectedItem as Q_View;
    if (QVkala != null)
    {
        // اگر NAMES یک لیست با کاراکترهای جداگانه باشد
        combobox1.ItemsSource = new List { QVkala.NAMES }; // یا
        // combobox1.ItemsSource = QVkala.NAMES.ToList();   
    }
}

2. اگر شما می خواهید فقط یک مقدار خاص از `NAMES` را در کمبوباکس نمایش دهید:

private void datagrid1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    Q_View QVkala = datagrid1.SelectedItem as Q_View;
    if (QVkala != null)
    {
        // فرض کنید که NAMES یک آرایه از نام ها باشد
        combobox1.ItemsSource = QVkala.NAMES.ToList(); // این اطمینان میده که همه نام ها به صورت یکجا اضافه بشود
    }
}

با استفاده از یکی از این دو روش، بایستی مشکل شما در نمایش کاراکترها در کمبوباکس برطرف گردد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 23:05 1399/07/30

 برای Bind کردن اطلاعات دیتابیس به کمبوباکس در WPF میتونید از کدهای زیر استفاده کنید.

 

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

 

به نظرم اگر اطلاعات به درستی نمایش داده نمیشه اول یک BreakPoint روی کدهای خودتون و در خط ItemSource قرار بدید و مطمئن بشید اطلاعات از دیتابیس کامل و به صورت صحیح داره Load میشه. اگر در این قسمت مشکلی نبود میشه اطمینان داشت که اشکال از خود comboBox هست.

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
2 نظر
mojtabahakimian : نکته جالب اینجاست که توی Trace میکنم میبینم کاراکتر رو درست نوشته "عدد"

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 11:39 1399/07/30
mojtabahakimian : ولی توی نمایشش درست نیست !

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 11:40 1399/07/30
پاسخ دهنده : Alireza 17:53 1399/09/21

سلام

شما میخوای اون ردیفی که از دیتاگرید انتخاب کردی اطلاعاتش بره توی کومبوباکس؟یا کل اطلاعات جدول دیتابیس؟

به این پاسخ امتیاز بدهید    1
امتیاز: 115 رتبه: 13
پاسخ دهنده : Alireza 19:59 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";
            }
        }

 

ویرایش شده در جمعه 21 آذر 1399 ساعت 20:06:02
به این پاسخ امتیاز بدهید    2
امتیاز: 115 رتبه: 13
پاسخ دهنده : Alireza 20:11 1399/09/21

اگر میخوای همه اطلاعات دیتابیس نمایش داده بشه این کد رو استفاده کن:

private void datagrid1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            var qre = dbms.Database.SqlQuery<Q_View>("SELECT * FROM Q_View");
            var name = qre.ToList();
            object item = datagrid1.SelectedItem;
            if (item != null)
            {
                combobox1.ItemsSource = name;
                combobox1.SelectedValuePath = "«KalaID";
                combobox1.DisplayMemberPath = "KalaName";
            }
        }

 

به این پاسخ امتیاز بدهید    2
امتیاز: 115 رتبه: 13
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود