I have a WinGrid with several columns. Each column has a header and the grid has several rows. When a user clicks on the column header I have code the changes the background color to indicate the column was selected. I also have a right click popup menu defined.
When a user right clicks on the column header, I want to copy the entire column, header and data, so the data can paste into Excel. But this isn't working. I can see the column in the Selected.Columns collection, but nothing on the clipboard.
Any suggestions or exmaple links? Thanks.
Hi Thom,
When using UltraGridAction.Copy it actually copies the grid's selected cells. You might have already noticed that the UltraGridColumn class does not contain a Cells collection. This is why you don't get a copy by column. If you take a closer look you'll notice that the Selected.Columns actually contains mainly headers. You can use them to loop trought the cells and check which ones you have selected. I have created some code for you doing this:
foreach (UltraGridRow row in ultraGrid1.Rows)
{
foreach (UltraGridCell cel in row.Cells)
if (ultraGrid1.Selected.Columns.Contains(cel.Column.Header))
ultraGrid1.Selected.Cells.Add(cel);
}
ultraGrid1.PerformAction(UltraGridAction.Copy, false, false);
This is what you might use in yout "CopiClick" event...
And in order to have not only cells but also the ColumnHeaders there is a property you can set to add them to the data you are copying whether it is row or cell-typed:
ultraGrid1.DisplayLayout.Override.AllowMultiCellOperations = AllowMultiCellOperation.CopyWithHeaders;
Hope this is what you needed.
Sincerely,
Petar Monov
Developer Support Engineer,
Infragistics, Inc