Я использую виртуальный режим с кэшированием, чтобы загрузить свое представление данных в моем приложении 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;
, он отлично работает для поиска данных. Но когда я снова пытаюсь сбросить таблицу поиска и перезагрузки, приложение перестает отвечать на запросы.