דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. טעינה איטית של נתונים לSfDataGrid של syncfusion בwpf

טעינה איטית של נתונים לSfDataGrid של syncfusion בwpf

מתוזמן נעוץ נעול הועבר תכנות
4 פוסטים 2 כותבים 350 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • אבייא מנותק
    אבייא מנותק
    אביי
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי נתונים עם כ20 עמודות, ושעשויים להכיל אף 20,000 שורות. כרגע בטסטים יש לי כ1000 רשומות בלבד, ולוקח לפקד להיטען כ15 שניות.. אני מבין שזה לא צריך להיות ככה..

    לאחר עיון כאן
    https://help.syncfusion.com/wpf/datagrid/data-virtualization
    וכאן
    https://support.syncfusion.com/kb/article/6938/how-to-improve-performance-when-loading-grid-with-records-and-columns-in-wpf-datagrid

    הוספתי את "EnableDataVirtualization="True אבל "UseDrawing="Default לא מתאים (וגם לא ראיתי שעזר..) כי הוא מרנדר את העברית משמאל לימין כמו כתב מראה.. ועדיין לא נושעתי..

    אותו קוד טוען את אותם הנתונים לפקד DataGrid רגיל בחלקיק שניה..

    מצורף הxaml (הורדתי חלק מהעמודות טקסט או צ'ק בוקס, כשהשארתי 2 עמודות בלבד, זה נטען לאחר 3 שניות.. עדיין הרבה ל2 עמודות בלבד..)

    <syncfusion:SfDataGrid x:Name="dataGrid2" Margin="43,153,43,130" AutoGenerateColumns="False"
        AllowFiltering="True" AllowEditing="True" FontSize="14"
        AllowResizingColumns="True" EnableDataVirtualization="True" AllowDraggingColumns="True"
        MouseDoubleClick="DataGrid2_MouseDoubleClick" HeaderStyle="{StaticResource headerStyle}"
        AlternatingRowStyle="{StaticResource alternatingRowStyle}" AlternationCount="2"
        RowStyle="{StaticResource RowStyle}">
    
        <syncfusion:SfDataGrid.Columns>
            <syncfusion:GridCheckBoxColumn HeaderText="בחר" MappingName="selectTemp" Width="50"
                IsReadOnly="False" AllowEditing="True" />
            <syncfusion:GridTextColumn HeaderText="איידי" MappingName="id" Width="60"
                IsReadOnly="True" AllowEditing="False" />
            <syncfusion:GridCheckBoxColumn HeaderText="פעיל" MappingName="active" Width="40"
                IsReadOnly="True" AllowEditing="False" />
            <syncfusion:GridTextColumn HeaderText="שם" MappingName="name" Width="90"
                IsReadOnly="True" AllowEditing="False" />
            <syncfusion:GridTemplateColumn HeaderText="רייטינג" MappingName="rating" Width="150">
                <syncfusion:GridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <local:StarRatingControl x:Name="starRatingControl" Rating="{Binding rating}"
                            IsHitTestVisible="False" />
                    </DataTemplate>
                </syncfusion:GridTemplateColumn.CellTemplate>
            </syncfusion:GridTemplateColumn>
        </syncfusion:SfDataGrid.Columns>
    </syncfusion:SfDataGrid>
    

    זה הקוד שאיתו אני טוען את הנתונים לפקד בפתיחת הטופס

            private SQLiteDataAdapter adapter;
            private DataTable dataTable;
            private DataView dataView;
    
            public async void LoadData()
            {
                UpdateStatusBar("טוען נתונים..");
    
                try
                {
                    await Task.Run(() =>
                    {
    
                        using (SQLiteConnection connection = new SQLiteConnection(Globals.connectionString))
                        {
                            connection.Open();
    
                            string selectSql = "SELECT selectTemp, id, name, active, rating FROM tPeople";
                            using (SQLiteCommand cmd = new SQLiteCommand(selectSql, connection))
                            {
                                adapter = new SQLiteDataAdapter(cmd);
                                SQLiteCommandBuilder commandBuilder = new SQLiteCommandBuilder(adapter);
    
                                dataTable = new DataTable();
                                adapter.Fill(dataTable);
    
                                dataView = new DataView(dataTable);
                            }
    
                            connection.Close();
                        }
    
                        Dispatcher.Invoke(() =>
                        {
                            dataGrid2.ItemsSource = dataView;
                            UpdateStatusBar("מוכן");
                        });
                    });
                }
                catch (Exception ex)
                {
                    // exceptions
                }
            }
    

    ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
    הלינקיה שלי https://abaye.co/link.html

    צדיק תמיםצ אבייא 2 תגובות תגובה אחרונה
    0
    • צדיק תמיםצ מנותק
      צדיק תמיםצ מנותק
      צדיק תמים
      השיב לאביי ב נערך לאחרונה על ידי
      #2

      @אביי אולי יעזור
      https://www.syncfusion.com/forums/118297/sfdatagrid-asynchron-data-loading?reply=lSgHm9

      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
      טיפים

      אבייא תגובה 1 תגובה אחרונה
      0
      • אבייא מנותק
        אבייא מנותק
        אביי
        השיב לצדיק תמים ב נערך לאחרונה על ידי
        #3

        @צדיק-תמים זה לא עוזר, הם מדברים על חלוקה לעמודים, אני רוצה גלילה אינסופית, לא אכפת לי שיטען שורה שורה...

        ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
        הלינקיה שלי https://abaye.co/link.html

        תגובה 1 תגובה אחרונה
        0
        • אבייא מנותק
          אבייא מנותק
          אביי
          השיב לאביי ב נערך לאחרונה על ידי
          #4

          עדכון.

          לאחר שפניתי לתמיכה של syncfusion והוברר שאין כל בעיה בקוד וכו', הם זרקו לי משפט שאולי עשיתי התאמות אישיות כלשהם, ולאחר בדיקה התברר שהשורה הזו בapp.xaml היא זו שדפקה את העסק:

                      <ResourceDictionary.MergedDictionaries>
                          <ResourceDictionary Source="Views/Styles/Scrollbar.xaml" />
                      </ResourceDictionary.MergedDictionaries>
          

          זה קוד שמצאתי ברשת לעיצוב פס הגלילה, רציתי להצר אותו כי הוא תפס לי מקום באחד הטפסים..

          אני לא כ"כ מבין בxaml כך שאיני יודע להצביע על הבעיה עצמה
          Scrollbar.xaml

          <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
          
              <SolidColorBrush x:Key="StandardBorderBrush"
                           Color="#888" />
              <SolidColorBrush x:Key="StandardBackgroundBrush"
                           Color="Black" />
              <SolidColorBrush x:Key="HoverBorderBrush"
                           Color="#DDD" />
              <SolidColorBrush x:Key="SelectedBackgroundBrush"
                           Color="Gray" />
              <SolidColorBrush x:Key="SelectedForegroundBrush"
                           Color="White" />
              <SolidColorBrush x:Key="DisabledForegroundBrush"
                           Color="#888" />
              <SolidColorBrush x:Key="GlyphBrush"
                           Color="#444" />
              <SolidColorBrush x:Key="NormalBrush"
                           Color="#888" />
              <SolidColorBrush x:Key="NormalBorderBrush"
                           Color="#888" />
              <SolidColorBrush x:Key="HorizontalNormalBrush"
                           Color="#FF070AC8" />
              <SolidColorBrush x:Key="HorizontalNormalBorderBrush"
                           Color="#888" />
          
              <Style x:Key="ScrollBarLineButton"
                 TargetType="{x:Type RepeatButton}">
                  <Setter Property="Visibility"
                      Value="Hidden" />
                  <Setter Property="SnapsToDevicePixels"
                      Value="True" />
                  <Setter Property="OverridesDefaultStyle"
                      Value="true" />
                  <Setter Property="Focusable"
                      Value="false" />
                  <Setter Property="Template">
                      <Setter.Value>
                          <ControlTemplate TargetType="{x:Type RepeatButton}">
                              <Border Name="Border"
                                  Margin="1"
                                  CornerRadius="2"
                                  Background="{StaticResource NormalBrush}"
                                  BorderBrush="{StaticResource NormalBorderBrush}"
                                  BorderThickness="1">
                                  <Path HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Fill="{StaticResource GlyphBrush}"
                                    Data="{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}" />
                              </Border>
                              <ControlTemplate.Triggers>
                                  <Trigger Property="IsPressed"
                                       Value="true">
                                      <Setter TargetName="Border"
                                          Property="Background"
                                          Value="{StaticResource PressedBrush}" />
                                  </Trigger>
                                  <Trigger Property="IsEnabled"
                                       Value="false">
                                      <Setter Property="Foreground"
                                          Value="{StaticResource DisabledForegroundBrush}" />
                                  </Trigger>
                              </ControlTemplate.Triggers>
                          </ControlTemplate>
                      </Setter.Value>
                  </Setter>
              </Style>
              <Style x:Key="ScrollBarPageButton"
                 TargetType="{x:Type RepeatButton}">
                  <Setter Property="Visibility"
                      Value="Hidden" />
                  <Setter Property="SnapsToDevicePixels"
                      Value="True" />
                  <Setter Property="OverridesDefaultStyle"
                      Value="true" />
                  <Setter Property="IsTabStop"
                      Value="false" />
                  <Setter Property="Focusable"
                      Value="false" />
                  <Setter Property="Template">
                      <Setter.Value>
                          <ControlTemplate TargetType="{x:Type RepeatButton}">
                              <Border Background="Black" />
                          </ControlTemplate>
                      </Setter.Value>
                  </Setter>
              </Style>
          
              <Style x:Key="ScrollBarThumb"
                 TargetType="{x:Type Thumb}">
                  <Setter Property="SnapsToDevicePixels"
                      Value="True" />
                  <Setter Property="OverridesDefaultStyle"
                      Value="true" />
                  <Setter Property="IsTabStop"
                      Value="false" />
                  <Setter Property="Focusable"
                      Value="false" />
                  <Setter Property="Template">
                      <Setter.Value>
                          <ControlTemplate TargetType="{x:Type Thumb}">
                              <Border CornerRadius="4"
                                  Background="{TemplateBinding Background}"
                                  BorderBrush="{TemplateBinding BorderBrush}"
                                  BorderThickness="0"
                                  Width="8"
                                  Margin="8,0,-2,0" />
                          </ControlTemplate>
                      </Setter.Value>
                  </Setter>
              </Style>
          
              <Style x:Key="ScrollBarThumbHor"
                 TargetType="{x:Type Thumb}">
                  <Setter Property="SnapsToDevicePixels"
                      Value="True" />
                  <Setter Property="OverridesDefaultStyle"
                      Value="true" />
                  <Setter Property="IsTabStop"
                      Value="false" />
                  <Setter Property="Focusable"
                      Value="false" />
                  <Setter Property="Template">
                      <Setter.Value>
                          <ControlTemplate TargetType="{x:Type Thumb}">
                              <Border CornerRadius="4"
                                  Background="{TemplateBinding Background}"
                                  BorderBrush="{TemplateBinding BorderBrush}"
                                  BorderThickness="0"
                                  Height="8"
                                  Margin="0,0,-2,0" />
                          </ControlTemplate>
                      </Setter.Value>
                  </Setter>
              </Style>
          
              <ControlTemplate x:Key="VerticalScrollBar"
                           TargetType="{x:Type ScrollBar}">
                  <Grid>
                      <Grid.RowDefinitions>
                          <RowDefinition MaxHeight="0" />
                          <RowDefinition Height="0.00001*" />
                          <RowDefinition MaxHeight="0" />
                      </Grid.RowDefinitions>
                      <Border Grid.RowSpan="3"
                          CornerRadius="2"
                          Background="Transparent" />
                      <RepeatButton Grid.Row="0"
                                Style="{StaticResource ScrollBarLineButton}"
                                Height="18"
                                Command="ScrollBar.LineUpCommand"
                                Content="M 0 4 L 8 4 L 4 0 Z" />
                      <Track Name="PART_Track"
                         Grid.Row="1"
                         IsDirectionReversed="true">
                          <Track.DecreaseRepeatButton>
                              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                                        Command="ScrollBar.PageUpCommand" />
                          </Track.DecreaseRepeatButton>
                          <Track.Thumb>
                              <Thumb Style="{StaticResource ScrollBarThumb}"
                                 Margin="1,0,1,0"
                                 Background="{StaticResource HorizontalNormalBrush}"
                                 BorderBrush="{StaticResource HorizontalNormalBorderBrush}" />
                          </Track.Thumb>
                          <Track.IncreaseRepeatButton>
                              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                                        Command="ScrollBar.PageDownCommand" />
                          </Track.IncreaseRepeatButton>
                      </Track>
                      <RepeatButton Grid.Row="3"
                                Style="{StaticResource ScrollBarLineButton}"
                                Height="18"
                                Command="ScrollBar.LineDownCommand"
                                Content="M 0 0 L 4 4 L 8 0 Z" />
                  </Grid>
              </ControlTemplate>
          
              <ControlTemplate x:Key="HorizontalScrollBar"
                           TargetType="{x:Type ScrollBar}">
                  <Grid>
                      <Grid.ColumnDefinitions>
                          <ColumnDefinition Width="0" />
                          <ColumnDefinition Width="0.00001*" />
                          <ColumnDefinition Width="0" />
                      </Grid.ColumnDefinitions>
                      <Border Grid.ColumnSpan="3"
                          CornerRadius="3"
                          Background="Transparent" />
                      <RepeatButton Grid.Column="0"
                                Style="{StaticResource ScrollBarLineButton}"
                                Width="18"
                                Command="ScrollBar.LineLeftCommand"
                                Content="M 4 0 L 4 8 L 0 4 Z" />
                      <Track Name="PART_Track"
                         Grid.Column="1"
                         IsDirectionReversed="False">
                          <Track.DecreaseRepeatButton>
                              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                                        Command="ScrollBar.PageLeftCommand" />
                          </Track.DecreaseRepeatButton>
                          <Track.Thumb>
                              <Thumb Style="{StaticResource ScrollBarThumbHor}"
                                 Margin="0,1,0,1"
                                 Background="{StaticResource HorizontalNormalBrush}"
                                 BorderBrush="{StaticResource HorizontalNormalBorderBrush}" />
                          </Track.Thumb>
                          <Track.IncreaseRepeatButton>
                              <RepeatButton Style="{StaticResource ScrollBarPageButton}"
                                        Command="ScrollBar.PageRightCommand" />
                          </Track.IncreaseRepeatButton>
                      </Track>
                      <RepeatButton Grid.Column="3"
                                Style="{StaticResource ScrollBarLineButton}"
                                Width="18"
                                Command="ScrollBar.LineRightCommand"
                                Content="M 0 0 L 4 4 L 0 8 Z" />
                  </Grid>
              </ControlTemplate>
          
              <Style x:Key="{x:Type ScrollBar}"
                 TargetType="{x:Type ScrollBar}">
                  <Setter Property="SnapsToDevicePixels"
                      Value="True" />
                  <Setter Property="OverridesDefaultStyle"
                      Value="true" />
                  <Style.Triggers>
                      <Trigger Property="Orientation"
                           Value="Horizontal">
                          <Setter Property="Width"
                              Value="Auto" />
                          <Setter Property="Height"
                              Value="12" />
                          <Setter Property="Template"
                              Value="{StaticResource HorizontalScrollBar}" />
                      </Trigger>
                      <Trigger Property="Orientation"
                           Value="Vertical">
                          <Setter Property="Width"
                              Value="18" />
                          <Setter Property="Height"
                              Value="Auto" />
                          <Setter Property="Template"
                              Value="{StaticResource VerticalScrollBar}" />
                      </Trigger>
                  </Style.Triggers>
              </Style>
          
              <Style x:Key="FavsScrollViewer"
                 TargetType="{x:Type ScrollViewer}">
                  <Setter Property="OverridesDefaultStyle"
                      Value="True" />
                  <Setter Property="Template">
                      <Setter.Value>
                          <ControlTemplate TargetType="{x:Type ScrollViewer}">
                              <Grid>
                                  <Grid.ColumnDefinitions>
                                      <ColumnDefinition Width="Auto" />
                                      <ColumnDefinition />
                                  </Grid.ColumnDefinitions>
                                  <Grid.RowDefinitions>
                                      <RowDefinition />
                                      <RowDefinition Height="Auto" />
                                  </Grid.RowDefinitions>
                                  <ScrollContentPresenter Grid.Column="1" />
                                  <ScrollBar Name="PART_VerticalScrollBar"
                                         Value="{TemplateBinding VerticalOffset}"
                                         Maximum="{TemplateBinding ScrollableHeight}"
                                         ViewportSize="{TemplateBinding ViewportHeight}"
                                         Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
                                  <ScrollBar Name="PART_HorizontalScrollBar"
                                         Orientation="Horizontal"
                                         Grid.Row="1"
                                         Grid.Column="1"
                                         Value="{TemplateBinding HorizontalOffset}"
                                         Maximum="{TemplateBinding ScrollableWidth}"
                                         ViewportSize="{TemplateBinding ViewportWidth}"
                                         Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
                              </Grid>
                          </ControlTemplate>
                      </Setter.Value>
                  </Setter>
              </Style>
          
              <Style TargetType="{x:Type ScrollViewer}">
                  <Setter Property="Template">
                      <Setter.Value>
                          <ControlTemplate TargetType="{x:Type ScrollViewer}">
                              <Grid>
                                  <Grid.ColumnDefinitions>
                                      <ColumnDefinition />
                                      <ColumnDefinition Width="Auto" />
                                  </Grid.ColumnDefinitions>
                                  <Grid.RowDefinitions>
                                      <RowDefinition />
                                      <RowDefinition Height="Auto" />
                                  </Grid.RowDefinitions>
                                  <ScrollContentPresenter Grid.Column="0" />
                                  <ScrollBar x:Name="PART_VerticalScrollBar"
                                         Grid.Row="0"
                                         Grid.Column="1"
                                         Value="{TemplateBinding VerticalOffset}"
                                         Maximum="{TemplateBinding ScrollableHeight}"
                                         ViewportSize="{TemplateBinding ViewportHeight}"
                                         Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}" />
                                  <ScrollBar x:Name="PART_HorizontalScrollBar"
                                         Orientation="Horizontal"
                                         Grid.Row="1"
                                         Grid.Column="0"
                                         Value="{TemplateBinding HorizontalOffset}"
                                         Maximum="{TemplateBinding ScrollableWidth}"
                                         ViewportSize="{TemplateBinding ViewportWidth}"
                                         Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}" />
                              </Grid>
                          </ControlTemplate>
                      </Setter.Value>
                  </Setter>
              </Style>
          
          </ResourceDictionary>
          

          ניתן ליצור עימי קשר 8140hp+t@gmail.com | קטלוג מוצרים
          הלינקיה שלי https://abaye.co/link.html

          תגובה 1 תגובה אחרונה
          2

          בא תתחבר לדף היומי!
          • התחברות

          • אין לך חשבון עדיין? הרשמה

          • התחברו או הירשמו כדי לחפש.
          • פוסט ראשון
            פוסט אחרון
          0
          • דף הבית
          • קטגוריות
          • פוסטים אחרונים
          • משתמשים
          • חיפוש
          • חוקי הפורום