If you want to keep the grid lines and avoid editing the empty cells, then I woul dnot use mergecells. Instead I would try using PrepareViewStyleInfo and set the text empty there, and handle CurrentCellStartEditing event, and prevent the editing there.
If you comment out the merge cell code in teh GridDataBoundGrid in teh sample from above, and subscribe to those two events with these handlers, the sample seems to do what you described.
private void gridDataBoundGrid1_PrepareViewStyleInfo(object sender, GridPrepareViewStyleInfoEventArgs e)
{
if(e.ColIndex == 2
&& e.RowIndex > 1
&& this.gridDataBoundGrid1[e.RowIndex, e.ColIndex].Text ==
this.gridDataBoundGrid1[e.RowIndex - 1, e.ColIndex].Text)
{
e.Style.Text = "";
}
}
private void gridDataBoundGrid1_CurrentCellStartEditing(object sender, CancelEventArgs e)
{
GridCurrentCell cc = this.gridDataBoundGrid1.CurrentCell;
if(cc.ColIndex == 2
&& cc.RowIndex > 1
&& this.gridDataBoundGrid1[cc.RowIndex, cc.ColIndex].Text ==
this.gridDataBoundGrid1[cc.RowIndex - 1, cc.ColIndex].Text)
{
e.Cancel = true;
}
}