В виртуальном режиме мой datagridview является шлаком при загрузке несколько раз - PullRequest
0 голосов
/ 22 марта 2020

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

Изменена функция SupplyData для возможности поиска данных, например ниже

public DataTable SupplyPageOfData(int lowerPageBoundary, int rowsPerPage)
    {
        // Store the name of the ID column. This column must contain unique 
        // values so the SQL below will work properly.
        columnToSortBy = this.Columns[0].ColumnName;

        //if (!this.Columns[columnToSortBy].Unique)
        //{
        //    throw new InvalidOperationException(String.Format(
        //        "Column {0} must contain unique values.", columnToSortBy));
        //}

        // Retrieve the specified number of rows from the database, starting
        // with the row specified by the lowerPageBoundary parameter.
        command.CommandText = "Select CPNum, strftime('%d-%m-%Y', CPEdtDate) AS CPEdtDate From " + tableName + " WHERE CPNum LIKE '%" + search + "%' AND " + columnToSortBy + " NOT IN (SELECT " + columnToSortBy + " From " +
            tableName + " WHERE CPNum LIKE '%" + search + "%' Order By " + columnToSortBy + " LIMIT " + lowerPageBoundary + ") Order By " + columnToSortBy + " LIMIT " + rowsPerPage;
        adapter.SelectCommand = command;

        DataTable table = new DataTable();
        table.Locale = CultureInfo.InvariantCulture;
        adapter.Fill(table);
        return table;
    }

При перезагрузке сетки я использую следующий код

DataRetriever retriever =
            new DataRetriever(connectionString, table, search);
        memoryCache = new Cache(retriever, 16);
        foreach (DataColumn column in retriever.Columns)
        {
            if (!masterChartGrid.Columns.Contains(column.ColumnName))
            {
                masterChartGrid.Columns.Add(
                        column.ColumnName, "Edition Date");
            }
        }
        masterChartGrid.Rows.Clear();
        this.masterChartGrid.RowCount = retriever.RowCount;

, он отлично работает для поиска данных. Но когда я снова пытаюсь сбросить таблицу поиска и перезагрузки, приложение перестает отвечать на запросы.

1 Ответ

0 голосов
/ 23 марта 2020

Это сработало, когда я добавил DataGridView программно из файла .cs.

private DataGridView masterChartGrid = new DataGridView();

...