سلام
من میخوام توی یک کمبوباکس از یک کویری که دوتا ستون یکی نام و یکی کد برام برمیگردونه رو همزمان در یک کمبوباکس نشون بدم مثل عکس زیر
اما وقتی کاربر یکی از آیتمن های این لیست کمبوباکس رو انتخاب کرد نهایتا چیزی که توی کمبوباکس نشون داده میشه یه کد هستش یعنی بعد از کلیک روی یکی از آیتم های 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";
از این روش در هر زبان برنامه نویسی می تونید استفاده کنید.
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
565
- پاسخ :
1
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|
تاریخ :
1403/06/24
- ساعت :
08:52:00 PM
- بازدید :
272
- پاسخ :
1
|
تاریخ :
1398/09/14
- ساعت :
01:58:00 PM
- بازدید :
4221
- پاسخ :
1
|
تاریخ :
1398/09/16
- ساعت :
11:41:00 AM
- بازدید :
4242
- پاسخ :
1
|
تاریخ :
1398/09/07
- ساعت :
02:15:00 PM
- بازدید :
3836
- پاسخ :
5
|
تاریخ :
1403/05/16
- ساعت :
05:43:00 AM
- بازدید :
550
- پاسخ :
0
|
تاریخ :
1398/09/05
- ساعت :
06:04:00 PM
- بازدید :
3146
- پاسخ :
2
|
تاریخ :
1398/09/08
- ساعت :
11:38:00 PM
- بازدید :
3232
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
370
- پاسخ :
1
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
909
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
891
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1281
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4746
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1113
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
565
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
126
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
72
- پاسخ :
0
|
تاریخ :
1403/07/13
- ساعت :
12:06:00 PM
- بازدید :
300
- پاسخ :
1
|