Repaint all rows in the grid on the same hierarchical level as the header.

Namespace: Dapfor.Net.Ui
Assembly: Dapfor.Net (in Dapfor.Net.dll) Version: 2.10.3.24917 (2.10.3.24917)

Syntax

C#
public void InvalidateRows()
Visual Basic
Public Sub InvalidateRows
Visual C++
public:
void InvalidateRows()
F#
member InvalidateRows : unit -> unit 

Remarks

It is well known that System.Windows.Forms controls use standard Windows API based on window messages. To repaint a certain part of a control, it should invoke the Control.Invalidate(Rectangle) method, where Rectangle specifies location and size of the client surface that should be repainted. In general, the calculation of screen coordinates of an element is a quite complicated process, especially in a hierarchical data grid. The .Net Grid provides very convenient API to repaint different elements such as cells, rows, columns etc.

Below you may see a list of elements that can be repainted in the grid:

  • Cell.Invalidate() - Repainting of a single cell.
  • Row.Invalidate() - Repainting of a single row.
  • Header.Invalidate() - Header invalidation. If the header is located in the hierarchical grid (not top-level header), all duplicates in visible surface are repainted.
  • Header.InvalidateRows() - Repaint all rows in the grid on the same hierarchical level as the header.
  • Column.Invalidate() - Column title invalidation.
  • Column.InvalidateCells() - Repainting of all cells in the grid that are related to a certain column located on the same hierarchical level as a header.
 Copy imageCopy
public void InvalidateUiElements(Grid grid)
{
    //Add a new header on the top hierarchical level (level 0)
    Header header1 = new Header();
    header1.Add(new Column("Name"));
    header1.Add(new Column("Price"));
    header1.Add(new Column("Quantity"));
    grid.Headers.Add(header1);

    Header header2 = new Header();
    header2.Add(new Column("Name"));
    header2.Add(new Column("Date"));
    grid.Headers.Add(header2);


    //Add some data objects 
    Row product1 = grid.Rows.Add(new Product());
    Row product2 = grid.Rows.Add(new Product());

    //Add some customers to the first product
    Row customer1 = product1.Add(new Customer());
    Row customer2 = product1.Add(new Customer());

    //Add some customers to the another product
    Row customer3 = product2.Add(new Customer());

    //Expand all rows
    grid.Rows.ExpandAll();


    //Invalidate the cell
    customer1["Date"].Invalidate();

    //Invalidate the row
    customer1.Invalidate();

    //Invalidate the top-level header
    header1.Invalidate();

    //Invalidate product1 and product2
    header1.InvalidateRows();

    //Invalidate the column's caption 'Date' on the header2
    header2["Date"].Invalidate();

    //Invalidate the cell 'Date' of each customer
    header2["Date"].InvalidateCells();
}

See Also