So I have done some investigation of my own and I have found that adding
void grid_CopyingCellClipboardContent(object sender, GridViewCellClipboardEventArgs e)
if(e != null && e.Value == null)
e.Value = string.Empty;
Drastically reduces the amount of time copying takes so I am guessing it does not like null values for some reason
Even so ~60,000 records takes 30-60 seconds is that about the best performance I can expect?
Some of the properties being used are doing small mathematically calculations i.e.
public decimal TotalValue
return this.items * this.price;
Some are also enumeration lookups
public enum Status
Unknown = 0,
Rejected = 'R',
Approved = 'A',
If that matters at all for the most part they are plain strings being copied