WPF RowDetailsTemplate
-
יש לי בדטה סט טבלת אנשי קשר וטבלה מקושרת של קטגוריות כל איש קשר יכול להיות בקטגוריה אחת.
ברגע שיצרתי את קשרי הגומלין הנ''ל התווסף ענף חדש לטבלת קטגוריות בשם אנשי קשר, כעת גררתי את הענף הזה לטופס ונוצר לי דטה גריד. בזמן ריצה אני רואה שהדטה גריד הזה לא מראה את כל הרשומות שבטבלת אנשי קשר אלא רק את אנשי הקשר השייכים לקטגוריה הנבחרת בדטה-גריד של הקטגוריות, וכאשר אני מעביר את הבחירה לקטגוריה אחרת גם בדטה גריד של הקשרי גומלין משתנה הרשימה של האנשי קשר,אחרי הקדמה זו לשאלה.
לקחתי את הגריד הזה של הקשרי גומלין והעברתי אותו ל RowDetailsTemplate של הדטה-גריד שמציג את טבלת הקטגוריות, ובאמת זה היה נראה עובד מצויין כל פעם שבחרתי שורה נפתח ה RowDetails וראיתי שם את כל האנשי הקשר שבקטגוריה הנבחרת, אלא שאחר כך באתי לשכלל את הדטה גריד הזה וכמו שדובר פה פעם הוספתי לחצנים לראש כל שורה שבלחיצה על לחצן ה '+' יפתח ה RowDetails ובלחיצה שוב יסגר.וכעת הבעיה היא שאם פותחים את ה RowDetails של כמה שורות בבת אחת בכולם מופיע אותו דבר וכאשר לוחצים על שורה אחרת כל ה RowDetails משתנים אבל כולם אותו דבר וכולם מתאימים את עצמם לשורה הנבחרת.
מה הפתרון? האם יש אפשרות שהטמפלט עבור כל RowDetails יהיה מופע חדש ואז הם אל יושפעו אחד מהשני או שזה לא קשר בכלל?
פורסם במקור בפורום CODE613 ב09/01/2014 22:58 (+02:00)
-
יש פה איזה מנגנון שגורם לדטה גריד של קשרי הגומלין להראות רק את האנשי קשר המקושרים לקטגוריה הנבחרת בדטה גריד של הקטגוריות וזה אכן יכול להיות שימושי לפעמים, אבל כאשר אני שם את הדטה גריד הזה כ RowDetails בתוך הדטה גריד של הקטגוריות זה כבר לא טוב.
פורסם במקור בפורום CODE613 ב13/01/2014 13:00 (+02:00)
-
זה מה שכתוב ב XAML
<my:Database1DataSet x:Key="Database1DataSet" /> <CollectionViewSource x:Key="ContactsViewSource" Source="{Binding Path=Contacts, Source={StaticResource Database1DataSet}}" /> <CollectionViewSource x:Key="CategoriesViewSource" Source="{Binding Path=Categories, Source={StaticResource Database1DataSet}}" /> <CollectionViewSource x:Key="CategoriesContactsViewSource" Source="{Binding Path=FK_Contacts_Categories, Source={StaticResource CategoriesViewSource}}" />
את שלושת הראשונים אני מבין
אבל את האחרון לא הבנתי את הבינדינג הזה שהנתיב שלו הוא FK_Contacts_Categories איך זה גורם להראות את אנשי הקשר מסוננים לפי השורה הנבחרת בקטגוריות?פורסם במקור בפורום CODE613 ב13/01/2014 13:32 (+02:00)
-
זה שואב מ"השורה הנוכחית" (מושג בקולקשיין ויו) של האוסף קטגוריות את המאפיין FK_Contacts_Categories שמכיל אוסף רשומות רלוונטיים של טבלת הבן.
מה שאתה צריך זה פשוט למחוק את הקולקשיין הזה, ולשים בתוך האיזור הנדרש לפירוט במקום בינדינג לקולקשיין אז בינדינג לשורה שלה וPath לFK הנ"ל.
פורסם במקור בפורום CODE613 ב13/01/2014 13:51 (+02:00)
-
ניחשתי שזה אמור להיות כך אבל כאשר אני מדבג ורואה ב WATCHE את כל המאפיינים של CategoriesViewSource אין שם מאפיין FK_Contacts_Categories
וגם בתוך ה Source של CategoriesViewSource אין כזה מאפיין.
וזה מה שמפליא אותי מאיפה הבינדינג לוקח את זה?פורסם במקור בפורום CODE613 ב13/01/2014 13:58 (+02:00)
-
ניחשתי שזה אמור להיות כך אבל כאשר אני מדבג ורואה ב WATCHE את כל המאפיינים של CategoriesViewSource אין שם מאפיין FK_Contacts_Categories
וגם בתוך ה Source של CategoriesViewSource אין כזה מאפיין.
וזה מה שמפליא אותי מאיפה הבינדינג לוקח את זה?צודק. אני לא מבין למה לא רואים זאת במאפיינים.
אבל התווכנתי שפשוט תראה איך זה ותעתיק למקום הדרוש, כמו מה שעשית.איך זה עובד? יש כאן שני שלבים: א. הבינדינג מתייחס לDataContext שזה שורת קטגוריה. ב. לשורת קטגוריה יש מאפיין מסתורי בשם FK_XX_XX שנותן שורות בנים.
פורסם במקור בפורום CODE613 ב13/01/2014 17:13 (+02:00)