Member 14079266 Ответов: 1

System.outofmemoryexception при отображении данных из datatable в datagrid C# WPF


Я пытаюсь отобразить данные из DataTable в Datagrid, но DataTable содержит более 2 лакхов строк, поэтому он дает систему.OutOfMemoryException. И я не могу отобразить данные, и приложение перестает работать.

Пожалуйста, помогите мне решить
System.OutOfMemoryException
этот вопрос.

Что я уже пробовал:

private void newBtn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (txtDayfind.Text == "" || txtDatefind.Text == "" || txtTimefind.Text == "" || txtLatfind.Text == "" || txtLongfind.Text == "" || txtAddressfind.Text == "" || txtaccuracy.Text == "" || txtTypefind.Text == "")
                {
                    Button 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;
                        }
                    }
                }
                else
                {
                    dataGrid1.ItemsSource = dtselect.DefaultView;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

1 Ответов

Рейтинг:
0

OriginalGriff

На первый взгляд - и это все, что может быть без какого - либо доступа к вашей машине- вы загружаете слишком много строк в свою сетку. Используйте отладчик, узнайте, сколько таблиц вы устанавливаете и сколько строк в каждой таблице.

Затем подумайте о бедном пользователе, столкнувшемся с таким количеством строк. Сколько времени ему понадобится, чтобы найти нужную информацию? Страница его, поиск его, фильтр его. не просто свалить его на него и уйти!

И вообще, почему вы загружаете все столы по очереди? Все, что вы делаете, это перезаписываете его следующим, так что остается только последняя таблица...