public void PagingWorks() { CreateTable(database); var reader = new DataStoreReader(database); var provider = new PagedDataProvider(reader, "Current", "Report", null, null, null, 2); Assert.AreEqual(3, provider.ColumnCount); Assert.AreEqual("SimulationName", provider.GetCellContents(0, 0)); Assert.AreEqual("Col1", provider.GetCellContents(1, 0)); Assert.AreEqual("Col2", provider.GetCellContents(2, 0)); Assert.AreEqual(9, provider.RowCount); Assert.AreEqual(2, provider.NumHeadingRows); Assert.AreEqual("g", provider.GetCellContents(1, 1)); Assert.AreEqual("1", provider.GetCellContents(1, 2)); Assert.AreEqual("2", provider.GetCellContents(1, 3)); Assert.AreEqual("3", provider.GetCellContents(1, 4)); Assert.AreEqual("4", provider.GetCellContents(1, 5)); Assert.AreEqual("5", provider.GetCellContents(1, 6)); Assert.AreEqual("6", provider.GetCellContents(1, 7)); Assert.AreEqual("7", provider.GetCellContents(1, 8)); }
/** * Treat edge cases (1, 2, before last, last) separately, and the rest generically */ private void SetPageLinks(int pageIndex) { lnkPageA.Enabled = lnkPageB.Enabled = lnkPageC.Enabled = lnkPageD.Enabled = lnkPageE.Enabled = true; lnkPageA.Visible = true; lnkPageB.Visible = true; lnkPageC.Visible = (PagedDataProvider.GetRecordCount(DataSetId) > 2 * PageSize); lnkPageD.Visible = (PagedDataProvider.GetRecordCount(DataSetId) > 3 * PageSize); lnkPageE.Visible = (PagedDataProvider.GetRecordCount(DataSetId) > 4 * PageSize); int pageCount = GetPageCount(PagedDataProvider.GetRecordCount(DataSetId)); //Edge cases: 1, 2, last one and before last one if (pageIndex == 1) { SetPageLinksForPage1(); } else if (pageIndex == 2) { SetPageLinksForPage2(); } else if (pageIndex == pageCount) { SetPageLinksForLastPage(pageCount); } else if (pageIndex == pageCount - 1) { SetPageLinksForPageBeforeLast(pageCount); } else //General case: center page selected { SetPageLinksForInnerPage(pageIndex); } }
/** * Read the page from the provider, set the sort mode, and update all of the pagination links * If page 1 is selected, don't show "First" and "Previous" links. * If last page selected, don't show "Next" and "Last" links. * If a page has no data, don't set a link to it. */ public void SelectPage(int pageIndex) { _currentPageIndex = pageIndex; dgv.DataSource = PagedDataProvider.GetPage(DataSetId, pageIndex, PageSize); foreach (DataGridViewColumn col in dgv.Columns) { col.SortMode = DefaultColumnSortMode; } SetPageDescription(GetPageDescription(pageIndex, PagedDataProvider.GetRecordCount(DataSetId))); int pageCount = GetPageCount(PagedDataProvider.GetRecordCount(DataSetId)); if (PagedDataProvider.GetRecordCount(DataSetId) > PageSize) { lnkFirstPage.Visible = (pageIndex != 1); lnkPreviousPage.Visible = (pageIndex != 1); SetPageLinks(pageIndex); lnkNextPage.Visible = (pageIndex != pageCount); lnkLastPage.Visible = (pageIndex != pageCount); } else { lnkFirstPage.Visible = lnkLastPage.Visible = false; lnkPreviousPage.Visible = lnkNextPage.Visible = false; lnkPageA.Visible = lnkPageB.Visible = lnkPageC.Visible = lnkPageD.Visible = lnkPageE.Visible = false; } }
public void PagingWithSimulationColumnandRowFilterWorks() { CreateTable(database); var reader = new DataStoreReader(database); var provider = new PagedDataProvider(reader, "Current", "Report", new string[] { "Sim1" }, "Col1,Col2", "Col1 > 2", 2); Assert.AreEqual(3, provider.ColumnCount); Assert.AreEqual("SimulationName", provider.GetCellContents(0, 0)); Assert.AreEqual("Col1", provider.GetCellContents(1, 0)); Assert.AreEqual("Col2", provider.GetCellContents(2, 0)); Assert.AreEqual(3, provider.RowCount); Assert.AreEqual(2, provider.NumHeadingRows); Assert.AreEqual("g", provider.GetCellContents(1, 1)); Assert.IsNull(provider.GetCellContents(2, 1)); Assert.AreEqual("10", provider.GetCellContents(2, 2)); }
public void PagingWithColumnFilterWorks() { CreateTable(database); var reader = new DataStoreReader(database); var provider = new PagedDataProvider(reader, "Current", "Report", null, "Col2", null, 2); Assert.AreEqual(2, provider.ColumnCount); Assert.AreEqual("SimulationName", provider.GetCellContents(0, 0)); Assert.AreEqual("Col2", provider.GetCellContents(1, 0)); Assert.AreEqual(8, provider.RowCount); Assert.AreEqual(1, provider.NumHeadingRows); Assert.AreEqual("8", provider.GetCellContents(1, 1)); Assert.AreEqual("9", provider.GetCellContents(1, 2)); Assert.AreEqual("10", provider.GetCellContents(1, 3)); Assert.AreEqual("11", provider.GetCellContents(1, 4)); Assert.AreEqual("12", provider.GetCellContents(1, 5)); Assert.AreEqual("13", provider.GetCellContents(1, 6)); Assert.AreEqual("14", provider.GetCellContents(1, 7)); }
/// <summary>Populate the grid control with data.</summary> public void PopulateGrid() { if (!string.IsNullOrEmpty(tableDropDown.SelectedValue)) { // Note that the filter contains the zone filter and experiment filter but not simulation filter. IEnumerable <string> simulationNames = null; if (ExperimentFilter != null) { // fixme: this makes some serious assumptions about how the query is generated in the data store layer... simulationNames = ExperimentFilter.GenerateSimulationDescriptions().Select(s => s.Name); } else if (SimulationFilter == null) { simulationNames = null; } else { simulationNames = new string[] { SimulationFilter.Name } }; string filter = rowFilterEditBox.Text; if (ZoneFilter != null) { // More assumptions about column names filter = AppendToFilter(filter, $"[Zone] = '{ZoneFilter.Name}'"); } // Create sheet control if (tableDropDown.SelectedValue != null) { try { // Cleanup existing sheet instances before creating new ones. CleanupSheet(); dataProvider = new PagedDataProvider(dataStore.Reader, checkpointDropDown.SelectedValue, tableDropDown.SelectedValue, simulationNames, columnFilterEditBox.Text, filter); dataProvider.PagingStart += (sender, args) => explorerPresenter.MainPresenter.ShowWaitCursor(true); dataProvider.PagingEnd += (sender, args) => explorerPresenter.MainPresenter.ShowWaitCursor(false); sheet = new SheetWidget() { DataProvider = dataProvider, NumberFrozenRows = dataProvider.NumHeadingRows, NumberFrozenColumns = dataProvider.NumPriorityColumns }; #if NETFRAMEWORK sheet.RowHeight = 20; #endif cellSelector = new SingleCellSelect(sheet); var scrollbars = new SheetScrollBars(sheet); sheet.CellPainter = new DefaultCellPainter(sheet, sheetSelection: cellSelector); sheetContainer.Add(scrollbars.MainWidget); statusLabel.Text = $"Number of rows: {dataProvider.RowCount - dataProvider.NumHeadingRows}"; } catch (Exception err) { explorerPresenter.MainPresenter.ShowError(err.ToString()); } } } }
/** * Go to last page */ private void lnkLastPage_LinkClicked(object sender, EventArgs e) { int pageCount = GetPageCount(PagedDataProvider.GetRecordCount(DataSetId)); SelectPage(pageCount); }