PopulateValues is a method that will efficiently populate a GridControl from some specific initial datasource like an array or a DataTable.
Efficiently here means avoiding raising events that slow things down. But if you have special requirements (and it sounds like you do since you do not want to load the whole array), then you could not use the PopulateValues method.
But you can always just loop through the cells you want to populate, and use an indexer based on the loop indexes to populate cells:
grid.RowCount = 10;
grid.ColCount = 8;
for(int row = 1; row <= 10; ++row)
{
for(int col = 1; col <= 8; ++col)
{
// change the offsets to match the columns MyArray that you want
grid[row, col].CellValue = MyArray[row - 1, col + 1];
}
}
Now using an indexer like this will raise events, but with this many cells, the time will not be noticeable. If you were loading hundreds of thousands of cells, instead of using an indexer like grid[row, col], you would want to work directly with the dataobject. In that case, the inside of your loop would look something like:
GridStyleInfo style = new GridStyleInfo();
style.CellValue = MyArray[row - 1, col + 1];
grid.Data[row, col] = style.Store;
It would speed things up dozens of times for large loops.