نمایش اطلاعات دو ستون در یک ComboBox در سی شارپ
سلام
من میخوام توی یک کمبوباکس از یک کویری که دوتا ستون یکی نام و یکی کد برام برمیگردونه رو همزمان در یک کمبوباکس نشون بدم مثل عکس زیر
اما وقتی کاربر یکی از آیتمن های این لیست کمبوباکس رو انتخاب کرد نهایتا چیزی که توی کمبوباکس نشون داده میشه یه کد هستش یعنی بعد از کلیک روی یکی از آیتم های Selected Item برابر رو همون کد نشون داده بشه
مدل داده ای :
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>
From Stackoverflow :
how to do I show two displaymemeber and one selected value path in a combobox c# wpf only left one
چطور این کار رو انجام بدم ؟
برای نمایش اطلاعات دو ستون در یک کمبوباکس میتونید به روش زیر عمل کنید. روشی که در ادامه میگم خدمتتون برای سی شارپ، 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";
از این روش در هر زبان برنامه نویسی می تونید استفاده کنید.
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- نمایش صفحه در پنجره جدید با کلیک روی لینک (تگ a) در Asp
- افزودن مقادیر به صورت دستی به List دریافت شده از ریپازیتوری
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- رفع خطا در مایگریشن - Specify ON DELETE NO ACTION or ON UPDATE NO ACTION
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress