תשמע דוד, זה ממש מדהים הקודים שאתה מביא,
תודה רבה!
פורסם במקור בפורום CODE613 ב06/01/2014 22:36 (+02:00)
תשמע דוד, זה ממש מדהים הקודים שאתה מביא,
תודה רבה!
פורסם במקור בפורום CODE613 ב06/01/2014 22:36 (+02:00)
משהו פה לא מסתדר לי מה צריך בדיוק לתקן תוכל בבקשה לשים את הקוד המלא מ <Window.Resources> עד </Window.Resources>
פורסם במקור בפורום CODE613 ב06/01/2014 20:40 (+02:00)
הוספתי כך כדי לעשות צל:
<Window.Resources>
<DropShadowEffect x:Key="ShadowEffect" BlurRadius="15" Color="#FFB6B7BE" />
<Style TargetType="DataGridRow">
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="Effect" Value="{StaticResource ResourceKey=ShadowEffect}" />
</Style>
<Style TargetType="DataGridColumnHeadersPresenter">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
<Grid>
<ItemsPresenter Effect="{StaticResource ResourceKey=ShadowEffect}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
אבל זה נתן צל וגם טישטש את הכתב בתוך התאים של הדטה גריד.
פורסם במקור בפורום CODE613 ב06/01/2014 18:40 (+02:00)
נפלא ממש !
תודה רבה!
הקוד שהשתמשתי בו מהקישור שהבאת הוא:
<Window.Resources>
<Style TargetType="DataGridRow">
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<Style TargetType="DataGridColumnHeadersPresenter">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeadersPresenter}">
<Grid>
<ItemsPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
אפשר גם להוסיף משהו לסטולים האלו כדי שיופיע צל מתחת לעמודות וזה יראה כמו גליון אקסל אחרי שמסתירים עמודות ושורות ?
פורסם במקור בפורום CODE613 ב06/01/2014 18:07 (+02:00)
אולי בכל זאת יש רעיונות :?:
פורסם במקור בפורום CODE613 ב06/01/2014 14:35 (+02:00)
בדטה-גריד כל שורה מתפרסת על כל רוחב הפקד אף שהעמודות לא רחבות, איך אני יכול לעצב את הדטה-גריד כך ששורה לא תתפרס על כל רוחב הפקד אלא רק עד סוף העמודה האחרונה ובדומה לפקד הדטה-גריד שב WIN FORMS ?
פורסם במקור בפורום CODE613 ב25/12/2013 12:57 (+02:00)
בסוף חשבתי לעצמי במקום לשים את האחריות על שמירת העמודות במחלקה של הטבלה הגנארית, אני אשים את זה בפקד גליון הנתונים, שהרי הדטה-גריד מופיע בגליון הזה ושמירת מצב העמודות קשור אליו, ובכל פקד יש ארוע לפני ה Finalize שנקרא Unloaded ושם שמתי את הפקודה לשמירת מצב העמודת.
פורסם במקור בפורום CODE613 ב25/12/2013 12:52 (+02:00)
כי אני רוצה להגיש למתכנת [כלומר לעצמי] את המסד שאני בונה, כאילו היה אקסס על כל מעלותיו ללא חסרונותיו, ולכן אני בונה בתוך המסד: טבלה גנארית שמנהלת את הנתונים כנ''ל ומנהלת את הקשרים בין הטבלאות, וגליון נתונים גנארי שזה פקד שבקשר עם הטבלה הגנארית ויכול גם לשמש כגליון משנה בתוך טופס או בתוך גליון אחר, וטופס גנארי שמציג רשומה אחר רשומה עם נווט כו' וכו'.
כך שהכל כלול בתוך המסד, ומה שנשאר לעשות בכל תוכנה שארצה להשתמש בה במסד נתונים, זה רק ליצור מחלקה עם כמה מאפיינים כאשר כל מאפיין הוא בעצם עמודה בטבלה, וליצור מופע חדש של טבלה גנארית עבור מחלקה זו, ואז יש לי טבלה עם גליון וטופס וכו' וכו', וכך עבור כל טבלה שאני צריך באותה תוכנית, וכן להגדיר את הקשרים בין הטבלאות אם יש כאלה.
ולכן גם נושא של שמירת סדר העמודות אני דוחף לתוך המסד הגנארי ולא אצטרך לזכור לטפל בזה בכל תוכנה.
פורסם במקור בפורום CODE613 ב24/12/2013 19:13 (+02:00)
כי זו מחלקה שנמצאת ב DLL חיצוני ולא קשורה כלל לממשק, זו מחלקה שמנהלת את הנתונים, שומרת בדיסק קוראת מהדיסק, ומגישה את האוסף לכל צורך שהוא כמו להציג בפקד גליון נתונים וכדומה, כך שכל מה שקשור למסד נתונים אני דוחף שם, ולכן אני רוצה שגם נושא סידור העמודות יהיה חלק מהגדרות גליון הנתונים השייך למסד. ובחלק של הממשק אני לא מתעסק עם כל זה רק עם להצהיר על מופע של טבלה כזו וכזו.
פורסם במקור בפורום CODE613 ב24/12/2013 18:47 (+02:00)
קודם כל תודה לכולם על כל המידע
כעת עשיתי לולאה שעוברת על כל העמודות שבדטה-גריד, ואמורה לרשום בדיסק את DisplayIndex ואת מה שכתוב בכותרת העמודה
אלא שאז קיבלתי שגיאה:
The calling thread cannot access this object because a different thread owns it.
כלומר אני לא יכול לגשת לדטה-גריד בכלל משום מה, אולי בגלל שאני מנסה לשמור את הנתונים ב Overrides Sub Finalize()
ובאמת ניסיתי לשמור באמצע זמן ריצה הכל עבד טוב, אבל ה Finalize כנראה פועל ב thread נפרד.
אז מה אני צריך לעשות כתחליף?
יצויין שהשמירה צריכה להעשות בתוך מחלקה שהיא לא חלון שיש לו ארוע לפני סגירת החלון. יש משהו שקודם ל Finalize כאשר עדיין נמצאים ב thread הראשי של היישום ?
פורסם במקור בפורום CODE613 ב24/12/2013 18:28 (+02:00)
כידוע המשתמש יכול לגרור ולהזיז את העמודות בדטה גריד ולסדר אותם כרצונו, השאלה שלי איך אני יכול לשמור את מצב סדר העמודות בדיסק ובריצה הבאה של התוכנית לסדר את העמודות באותו הסדר?
תודה לכולם.
פורסם במקור בפורום CODE613 ב24/12/2013 14:37 (+02:00)
בניתי, ניסיתי, ואז העתקתי לפה. זה מאוד מוזר אבל איך אפשר בכלל להתחיל לחשוב על הסיבה?
פורסם במקור בפורום CODE613 ב25/12/2013 18:53 (+02:00)
טוב, אז כמו שאצלי משום מה זה לא עובד כך גם יכול לא לעבוד אצל איזה לקוח ואז מה נעשה?
לכן כדי לא להיתקע אני אכתוב בעצמי פונקציה AutoGenerateColumns ושלום על ישראל.
פורסם במקור בפורום CODE613 ב25/12/2013 17:55 (+02:00)
איזה פרימוורק מותקן אצלך? כי אצלי מותקן 4 ולא 4.5
פורסם במקור בפורום CODE613 ב25/12/2013 15:56 (+02:00)
Imports System.Collections.ObjectModel
Class MainWindow
Dim coll As New ObservableCollection(Of Person)
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
DataContext = coll
'רק אם נפעיל את השורה הבאה יהיה אפשר להזין את הטבלה
' אלא שאז יופיע מראש 2 שורות
' ואין בחירה ביד המשתמש להשאיר את הטבלה ללא רשומות
' coll.Add(New Person)
End Sub
End Class
Public Class Person
Private _Name As String
Public Property Name() As String
Get
Return _Name
End Get
Set(value As String)
_Name = value
End Set
End Property
Private _LastName As String
Public Property LastName() As String
Get
Return _LastName
End Get
Set(value As String)
_LastName = value
End Set
End Property
End Class
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid AutoGenerateColumns="True"
Height="289" HorizontalAlignment="Left"
Margin="10,10,0,0" Name="DataGrid1"
VerticalAlignment="Top" Width="481"
ItemsSource="{Binding}"/>
</Grid>
</Window>
תודה רבה!
פורסם במקור בפורום CODE613 ב24/12/2013 19:01 (+02:00)
אני משתמש ב ObservableCollection שהוא גם עם סוגריים וOF
אבל בכ''ז יש את הבעיה.
פורסם במקור בפורום CODE613 ב24/12/2013 16:59 (+02:00)
הגדרתי את AutoGenerateColumns ל "True"
וזה עובד מצויין אבל רק כאשר יש באוסף לפחות רשומה אחת אבל אם אין שום רשומה הדטה-גריד לא נותן אפשרות להוסיף את הראשון.
מה אפשר לעשות?
אני רוצה שזה יהיה כמו באקסס שגם אם אין רשומות בטבלה תמיד אפשר להוסיף חדש.
תודה לכולם.
פורסם במקור בפורום CODE613 ב24/12/2013 14:26 (+02:00)
חפש משהו 'Display Member Path' וגם צריך להיות טמפלט לחלק המוצג בקומבו.
פורסם במקור בפורום CODE613 ב19/03/2014 17:30 (+02:00)
לתרגם לVB לא הצלחתי אבל השתמשתי בעצה של דוד וזה הספיק לי לאותו פרוייקט.
פורסם במקור בפורום CODE613 ב19/03/2014 17:16 (+02:00)