In a GridDataBoundGrid, there is no grid data object to store individual cell properties. So, you cannot use code like grid[row, col].DataSource = xyz. The reason is that there is no place to store this individual cell data. (The only thing you can do by indexing a grid cell is to set the Text or CellValue property as this property is mapped back to the DataSource bound to the GridDataBoundGrid.)
To change individual cell style attributes, you can use either the GridDataBoundGrid.PrepareViewStyleInfo event, or the GridDataBoundGrid.Model.QueryCellInfo event. The PrepareViewStyleInfo is generally used for style propeties that affect the appearance of the cell (such as the BackColor or Font). QueryCellInfo is used to handle properties that may be used by other aspects of the grid. To change the DataSource, DisplayMember and ValueMember, I would first try QueryCellInfo.
Here is some code that sets the displaymember in col 4 based on the cell value in col 2.
private void grid_QueryCellInfo(object sender, GridQueryCellInfoEventArgs e)
{
if(e.RowIndex > 0 && e.ColIndex == 4)
{
e.Style.CellType = "ComboBox";
e.Style.DataSource = this.foreignKeys;
e.Style.DisplayMember = this.gridDataBoundGrid1[e.RowIndex, 2].Text;
e.Style.ValueMember = "WordID";
e.Handled = true;
}
}