WPF DisplayMemberPath datagridcomboboxcolumn
-
יש לי דטה גריד שמציג מכירות, בעמודת 'מזהה איש קשר' אני רוצה להציג רשימה של אנשי קשר ולזה השתמשתי ב datagridcomboboxcolumn אלא שה DisplayMemberPath מציג רק מאפיין אחד מתוך האנשי קשר, איך אני יכול להציג כמה מאפיינים מאיש הקשר כמו למשל שם פרטי ושם משפחה וכדומה?
תודה לכולם.
פורסם במקור בפורום CODE613 ב13/01/2014 23:11 (+02:00)
-
בכל מקרה שהItem אמור להיראות מעבר לטקסט פשוט, צריך להשתמש בDataTemplate.
עם משתמשים בDataTemplate, אין צורך בDisplayMemberPath.בשימוש בDataTemplate אז הDataContex הוא פריט מהרשימה, ואפשר לאגד אלמנטים מאפיינים.
במקרה שלך זה אמור להיראות בערך ככה:
<ComboBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal" > <TextBlock Text="{Binding FirstName}" Margin="0,0,6,0" /> <TextBlock Text="{Binding LastName}" /> </StackPanel> </DataTemplate> </ComboBox.ItemTemplate>
פורסם במקור בפורום CODE613 ב14/01/2014 12:24 (+02:00)
-
אז בעצם אתה מציע להשתמש ב DataGridTemplateColumn במקום ב datagridcomboboxcolumn.
ניסיתי לעשות כך ובאמת הקומבו מציג את כל הרשימה וזה מצויין.
כעת השלב שני הוא:
איך אני מגדיר שהפריט שנבחר בקומבו שהוא בעצם מטבלת אנשי קשר ישמר במפתח הזר שבטבלת המכירות? שהרי הפריט הנבחר באנשי קשר מכיל ID של האיש קשר ו ID זה צריך להשמר בעמודה של הקומבו, וגם שהקומבו ידע להציג את השם המלא של האיש קשר על פי ה ID שנשמר בעמודת מפתח זר.ב datagridcomboboxcolumn דברים אלו עבדו די פשוט והכל היה מתעדכן ומומר הלוך ושוב כמו שצריך, אבל כשמשתמשים ב DataGridTemplateColumn זה אחרת.
תודה.פורסם במקור בפורום CODE613 ב14/01/2014 12:56 (+02:00)
-
אז בעצם אתה מציע להשתמש ב במקום ב datagridcomboboxcolumn.
לא הצעתי לך את זה.
אכן לא שמתי ליבי שעיצוב הItemTemplate של DataTemplateDataGridTemplateColumn הוא מסובך, ככה:<DataGridComboBoxColumn.ElementStyle> <Style TargetType="ComboBox"> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <TextBlock Text="{Binding Path=Name}" /> </DataTemplate> </Setter.Value> </Setter> </Style> </DataGridComboBoxColumn.ElementStyle>
אבל גם מה שכתבת זה ממש אפשרי, ואיגוד הID נעשה גם ע"י בינדינג בין הSelectedValue של הקומבו לשדה המתאים לעמודה זו.
פורסם במקור בפורום CODE613 ב14/01/2014 13:21 (+02:00)