我使用带缓存的虚拟模式在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;
它可以很好地搜索数据。但是,当我再次尝试重置搜索和重新加载表时,应用程序将变得没有响应。
当我从.cs
文件以编程方式添加DataGridView时,它就工作了。
private DataGridView masterChartGrid = new DataGridView();