One way you can handle this is to override the OnTextChanged method in a derived GridAwareTextBox and do work there to make sure only list items appear for this type of cell. Here is any initial try at this. Depending upon the exact behavior you want, you might have to add/remove code to handle other such behavior.
public class MyGridAwareTextBox : GridAwareTextBox
{
protected override void OnTextChanged(EventArgs e)
{
GridCurrentCell cc = this.grid.CurrentCell;
if(cc != null)
{
GridStyleInfo style = this.grid.Model[cc.RowIndex, cc.ColIndex];
if(style.CellType == "ComboBox" && style.DropDownStyle == GridDropDownStyle.Exclusive)
{
GridComboBoxCellRenderer cr = cc.Renderer as GridComboBoxCellRenderer;
int found = cr.ListBoxPart.FindStringExact(this.Text);
if(found == -1)
{
found = cr.ListBoxPart.FindString(this.Text);
if(found == -1)
{
this.Text = cc.Renderer.ControlText;
return;
}
else
{
int pos = this.SelectionStart;
this.Text = cr.ListBoxPart.Items[found].ToString();
this.SelectionStart = pos;
this.SelectionLength = this.Text.Length - pos;
}
}
}
}
base.OnTextChanged (e);
}
GridControlBase grid;
// WireGrid modified to get a reference to the grid.
public new void WireGrid(GridControlBase grid)
{
if (grid != null)
{
this.grid = grid;
base.WireGrid(grid);
}
}
}