دسته بندی ها
19:54 1400/04/23

نمایش اطلاعات دو ستون در یک ComboBox در سی شارپ

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

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 5071
3 نظر
mojtabahakimian : لطفا راهنمایی کنید باتشکر

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 10:36 1400/04/24
hamid_b : من این کار رو چندین بار انجام دادم. الان سیستم ندارم کدشو بهت بگم تا فردا اگر پاسخ نگرفتی همینجا کدشو برات قرار میدم.

امتیاز کاربر : 518   رتبه کاربر : 4   تاریخ ثبت : 11:26 1400/04/24
mojtabahakimian : مهندس ممنونم لطف میکنی کدشو رو بذاری

امتیاز کاربر : 155   رتبه کاربر : 10   تاریخ ثبت : 03:05 1400/04/24
ادامه نظرات ...
هوش مصنوعی

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

برای نمایش اطلاعات دو ستون در یک ComboBox در سی شارپ و WPF، شما باید از یک خاصیت ترکیبی استفاده کنید که شامل هر دو مقدار باشد و برای تنظیم مقدار انتخاب شده نیز از یک کلید اصلی استفاده کنید. با توجه به کد شما، به نظر می رسد که ساختار اصلی شما درست است. در صورت انتخاب یکی از آیتم ها، ComboBox شناسه اصلی (کد) را به عنوان مقدار انتخاب شده برمی گرداند.

کد شما به نظر می رسد صحیح باشد. فقط باید مطمین شوید که ویژگی 'Shoy' به درستی نمایش داده می شود و آیا ComboBox به درستی بروز می شود یا خیر. در ادامه می توانید استفاده از ComboBox را مشاهده کنید:

مدل داده ای:

public partial class CST
{
    public string Tafcode { get; set; } //ID
    public string Esm { get; set; } //Name
    public string Shoy => $"{Tafcode}  {Esm}";
}

کد سی شارپ:

var quer_ITM = dbms.Database.SqlQuery<CST>("SELECT Tafcode , Esm FROM CST").ToList();

cmb.ItemsSource = quer_ITM;
cmb.DisplayMemberPath = "Shoy"; //Merg of Esm + Tafcode
cmb.SelectedValuePath = "Tafcode"; //The Primary Key 112-1-1

XAML ComboBox:

<ComboBox x:Name="cmb"  Margin="0,312,202,0" VerticalAlignment="Top" Height="22" 
    FlowDirection="RightToLeft" FontFamily="/Negin;component/NT/#IRANSans" 
    IsEditable="True" Background="#FFCCFFFF" HorizontalAlignment="Right" Width="402">
</ComboBox>

هنگامی که کاربر یک مقدار را از شی ComboBox انتخاب می کند، مقدار 'SelectedValue' باید به کد متناظر (Tafcode) تغییر کند که می توانید آن را اینگونه بررسی کنید:

string selectedValue = cmb.SelectedValue?.ToString(); // اینجا 'selectedValue' باید کد انتخاب شده باشد

اگر این کدها را امتحان کردید و هنوز مشکلاتی وجود دارد، ممکن است بخواهید از لینک کمک Stackoverflow استفاده کنید که در سوال شما وجود دارد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 12:36 1400/04/26

برای نمایش اطلاعات دو ستون در یک کمبوباکس میتونید به روش زیر عمل کنید. روشی که در ادامه میگم خدمتتون برای سی شارپ، WPF و  حتی Asp.net می تونید استفاده کنید و هیچ محدودیتی نداره.

ببینید شما وقتی میخواید اطلاعات رو درون ComboBox و یا در وب درون یک تگ Select نمایش بدید نیاز به 2 فیلد دارید. یکی DisplayMember که فیلدی هست که اطلاعات رو به کاربر نمایش میده و یکی ValueMember که این فیلد هم کد معادل DisplayMember هست و برای ذخیره اطلاعات در دیتابیس و یا کار با اطلاعات هست.

خب نکته اینجاست شما نیاز نیست برای DisplayMember حتما یک ستون از جدول رو مشخص کنید. میتونید یک کوئری بنویسید و 2 یا چند ستون رو مشخص کنید (به عبارتی Join کنید) و نتیجه اون کوئری رو در DisplayMember نمایش بدید.

 

مثال

var query = _context.CST.Select(c => new { Value = c.Tafcode , DisplayMemebr = c.Esm + " " + c.Tafcode }).ToList()

 

خب در مثال بالا یک کوئری داریم که 2 تا فیلد در خروجی داره. فیلد اول که اسمش رو Value گذاشتیم و مقدار ID شما رو داره و فیلد دوم هم اسمش رو DisplayMember گذاشتیم و مقدار مورد نظر شما و مقداری که قراره کاربر ببینه رو نمایش میده.

حالا خیلی راحت میتونید از این کوئری استفاده کنید.

cmb.DisplayMemberPath = "DisplayMember"; 
cmb.SelectedValuePath = "Value";

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

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