I think I was able to avoid the bad drop in the attached sample using a ColsMoving handler. But I do not know of a way of not showing the drop cursor past the good columns. If you just wanted to drop the column to the right of teh last column if the user tried to drop the col past the good columns, then I think you could cancel teh current drop in ColsMoving, and call MoveCols to position the column correctly. Here is sample code:
private void gridModel_ColsMoving(object sender, GridRangeMovingEventArgs e)
{
Console.WriteLine("gridModel_ColsMoving " + e.Target.ToString());
if(e.Target > this.gridDataBoundGrid1.Model.ColCount)
{
e.Cancel = true;
this.gridDataBoundGrid1.Model.Cols.MoveRange(e.From, e.Count, this.gridDataBoundGrid1.Model.ColCount);
}
}