System.OutOfMemoryException при загрузке данных из таблицы данных, которые имеют более 2 миллионов строк в сетку данных - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь назначить DataTable в качестве источника элементов dataGrid1 dataGrid1.ItemsSource = dtselect.DefaultView, но оно дает System.OutOfMemoryException

У меня есть один набор данных, который имеет несколько DataTable.Я случайным образом создаю кнопку при нажатии этой кнопки. Я хочу показать данные из DataTable в dataGrid1, но проблема здесь в том, что DataTable имеет более 2 миллионов строк, и когда я нажимаю на кнопку, это займет более 2 ГБ ОЗУ и выдаст мне Систему.OutOfMemoryException.

Button = sender as Button;
                    string content = button.Content.ToString();
                    foreach (DataTable table in dsr.Tables)
                    {
                        if (table.TableName == content)
                        {
                            dataGrid1.ItemsSource = table.DefaultView;
                            dtselect = table;
                        }
                    }

Ожидается вывод с меньшим использованием памяти и вывод результата вместо System.OutOfMemoryException

1 Ответ

0 голосов
/ 03 января 2019
<Viewbox Grid.Row="3" Stretch="Fill">
                <DataGrid x:Name="dataGrid1" Grid.Row="3" VirtualizingPanel.VirtualizationMode="Recycling" BorderThickness="0" VirtualizingPanel.IsVirtualizing="True" CanUserSortColumns="True" EnableRowVirtualization="True" IsReadOnly="True" CanUserResizeColumns="True" CanUserAddRows="False"  VerticalAlignment="Bottom"  HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Auto" 
                HorizontalScrollBarVisibility="Auto" ScrollViewer.CanContentScroll="True" Height="600" Width="auto" ItemsSource="{Binding}" AutoGenerateColumns="False" ScrollViewer.VerticalScrollBarVisibility="Auto"   Background="#b5d2fc"  ClipboardCopyMode="IncludeHeader" SelectionMode="Extended" CanUserDeleteRows="False">
                    <DataGrid.Columns>
                        <DataGridTextColumn Width="200" Header="Day"  Binding="{Binding Day}"/>
                        <DataGridTextColumn Width="200" Header="Date" Binding="{Binding Date}"/>
                        <DataGridTextColumn Width="200" Header="Time" Binding="{Binding Time}"/>
                        <DataGridTextColumn Width="200" Header="Lat" Binding="{Binding Lat}"/>
                        <DataGridTextColumn Width="200" Header="Long" Binding="{Binding Long}"/>
                        <DataGridTextColumn Width="400" Header="Address" Binding="{Binding Address}"/>
                        <DataGridTextColumn Width="200" Header="Accuracy" Binding="{Binding Accuracy}"/>
                        <DataGridTextColumn Width="200" Header="Type" Binding="{Binding Type}"/>
                    </DataGrid.Columns>
                </DataGrid>
                </Viewbox>

Я просто добавляю Viewbox, и мой код работает нормально, если я загружаю более двух файлов с огромными данными, тогда он также потребляет меньше памяти

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...