Click here to Skip to main content
Licence CPOL
First Posted 15 Jan 2012
Views 10,810
Bookmarked 11 times

Display a DataGridView in a Popup

By | 15 Jan 2012 | Technical Blog
How to display the WinForms GridView in a Popup control
A Technical Blog article. View original blog here.[^]

In this post, we will show you how to display the WinForms GridView in a Popup control. We will also use the new Metro Blue theme.

  1. The first step is to drag and drop a new instance of the VIBlend DataGridView and the ControlBox control. The ControlBox control is a control similar to the WinForms ComboBox, but it can display any content in its Popup.
  2. The next step is to initialize the Grid. We will add 5 rows and 5 columns and will populate it in unbound mode. The first column will display images in the grid cells. The rest of the columns will be traditional text columns.

    Create the Grid Rows and Columns

    C#

    for (int i = 0; i < 5; i++)
    {
        Grid1.RowsHierarchy.Items.Add(i.ToString());
        Grid1.ColumnsHierarchy.Items.Add("Column " + i);
    }

    VB .NET

    For i As Integer = 0 To 4
        Grid1.RowsHierarchy.Items.Add(i.ToString())
        Grid1.ColumnsHierarchy.Items.Add("Column " & i)
    Next i

    Fill the first grid column with images. In order to display an image in a grid cell, you need to do two things - set the cell's display settings to DisplaySettings.ImageOnly and call the SetCellImage method passing the cell's row, column and image index parameters.

    C#

    Grid1.ImageList = imageList1;<br />
    HierarchyItem columnImage = Grid1.ColumnsHierarchy.Items[0];
    for (int i = 0; i < Grid1.RowsHierarchy.Items.Count; i++)
    {
        HierarchyItem rowItem = Grid1.RowsHierarchy.Items[i];
        Grid1.CellsArea.SetCellDisplaySettings
            (rowItem, columnImage, DisplaySettings.ImageOnly);
        Grid1.CellsArea.SetCellImage(rowItem, columnImage, i);
    }

    VB.NET

    Grid1.ImageList = imageList1
    Dim columnImage As HierarchyItem = Grid1.ColumnsHierarchy.Items(0)
    
    For i As Integer = 0 To Grid1.RowsHierarchy.Items.Count - 1
        Dim rowItem As HierarchyItem = Grid1.RowsHierarchy.Items(i)
        Grid1.CellsArea.SetCellDisplaySettings_
        (rowItem, columnImage, DisplaySettings.ImageOnly)
        Grid1.CellsArea.SetCellImage(rowItem, columnImage, i)
    Next i

    Fill the rest of the columns by using the SetCellValue method.

    C#

    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[0], 
        Grid1.ColumnsHierarchy.Items[1], "Porsche Boxster");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[1], 
        Grid1.ColumnsHierarchy.Items[1], "Acura TL");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[2], 
        Grid1.ColumnsHierarchy.Items[1], "Audi A4");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[3], 
        Grid1.ColumnsHierarchy.Items[1], "BMW 645Ci");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[4], 
        Grid1.ColumnsHierarchy.Items[1], "BMW 760Li");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[0], 
        Grid1.ColumnsHierarchy.Items[2], true);
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[1], 
        Grid1.ColumnsHierarchy.Items[2], true);
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[2], 
        Grid1.ColumnsHierarchy.Items[2], true);
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[3], 
        Grid1.ColumnsHierarchy.Items[2], true);
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[4], 
        Grid1.ColumnsHierarchy.Items[2], true);
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[0], 
        Grid1.ColumnsHierarchy.Items[3], "4 years");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[1], 
        Grid1.ColumnsHierarchy.Items[3], "4 years");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[2], 
        Grid1.ColumnsHierarchy.Items[3], "4 years");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[3], 
        Grid1.ColumnsHierarchy.Items[3], "4 years");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[4], 
        Grid1.ColumnsHierarchy.Items[3], "4 years");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[0], 
        Grid1.ColumnsHierarchy.Items[4], "www.porsche.com");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[1], 
        Grid1.ColumnsHierarchy.Items[4], "www.acura.com");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[2], 
        Grid1.ColumnsHierarchy.Items[4], "www.audi.com");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[3], 
        Grid1.ColumnsHierarchy.Items[4], "www.bmw.com");
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items[4], 
        Grid1.ColumnsHierarchy.Items[4], "www.bmw.com");

    VB .NET

    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(0), _
        Grid1.ColumnsHierarchy.Items(1), "Porsche Boxster")< />
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(1), _
        Grid1.ColumnsHierarchy.Items(1), "Acura TL")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(2), _
        Grid1.ColumnsHierarchy.Items(1), "Audi A4")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(3), _
        Grid1.ColumnsHierarchy.Items(1), "BMW 645Ci")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(4), _
        Grid1.ColumnsHierarchy.Items(1), "BMW 760Li")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(0), _
        Grid1.ColumnsHierarchy.Items(2), True)
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(1), _
        Grid1.ColumnsHierarchy.Items(2), True)
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(2), _
        Grid1.ColumnsHierarchy.Items(2), True)
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(3), _
        Grid1.ColumnsHierarchy.Items(2), True)
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(4), _
        Grid1.ColumnsHierarchy.Items(2), True)
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(0), _
        Grid1.ColumnsHierarchy.Items(3), "4 years")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(1), _
        Grid1.ColumnsHierarchy.Items(3), "4 years")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(2), _
        Grid1.ColumnsHierarchy.Items(3), "4 years")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(3), _
        Grid1.ColumnsHierarchy.Items(3), "4 years")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(4), _
        Grid1.ColumnsHierarchy.Items(3), "4 years")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(0), _
        Grid1.ColumnsHierarchy.Items(4), "www.porsche.com")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(1), _
        Grid1.ColumnsHierarchy.Items(4), "www.acura.com")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(2), _
        Grid1.ColumnsHierarchy.Items(4), "www.audi.com")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(3), _
        Grid1.ColumnsHierarchy.Items(4), "www.bmw.com")
    Grid1.CellsArea.SetCellValue(Grid1.RowsHierarchy.Items(4), _
        Grid1.ColumnsHierarchy.Items(4), "www.bmw.com")
  3. In order to display the Grid in the ControlBox's Popup, you need to set the ControlBox's ContentControl property to point to the Grid instance.

    C#

    this.vControlBox.ContentControl = this.Grid1;

    VB .NET

    Me.vControlBox.ContentControl = Me.Grid1/pre>
    
    

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

VIBlend


VIBlend
United States United States

Member



Organisation
7 members

VIBlend designs and develops advanced components and controls for Windows platform

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
QuestionIt's a pity they're paying tools ! Pinmembercgirard_ceri22:06 21 Mar '12  
GeneralMy vote of 5 PinmemberOshtri Deka23:47 16 Jan '12  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 15 Jan 2012
Article Copyright 2012 by VIBlend
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid