<blush>Erm, user error I'm afraid...</blush>
I had quotes around the individual items in the Enum array instead of the collection of items. So SS was seeing the second array item as the default.
In case anyone is interested, the fixed version of my code is here:
class ContentBlockPage extends Page {
static $db = array(
'ColumnRef' => "Enum('columnLeft, columnMiddle, columnRight')",
'RowNumber' => 'Int',
'BlockColour' => "Enum('blue, bluegrey, brickred, mustardyellow, mossgreen')",
'TeaserText' => 'HTMLText'
);
static $has_one = array(
'TeaserImage' => 'Image'
);
static $defaults = array(
'ColumnRef' => 'columnLeft',
'RowNumber' => 1,
'BlockColour' => 'blue'
);
static $icon = "themes/tellura/images/treeicons/blockpage";
function getCMSFields() {
$fields = parent::getCMSFields();
$rowOptions = array(1, 2, 3, 4, 5, 6, 7, 8);
$fields->addFieldToTab("Root.Content.Main", new DropdownField('ColumnRef', 'Which column?', singleton('ContentBlockPage')->dbObject('ColumnRef')->enumValues()), 'Content');
$fields->addFieldToTab("Root.Content.Main", new DropdownField('RowNumber', 'Row number', $rowOptions), 'Content');
$fields->addFieldToTab("Root.Content.Main", new DropdownField('BlockColour', 'Header bar colour?', singleton('ContentBlockPage')->dbObject('BlockColour')->enumValues()), 'Content');
$fields->addFieldToTab("Root.Content.Main", new HTMLEditorField('TeaserText'), 'Content');
$fields->addFieldToTab("Root.Content.Images", new ImageField('TeaserImage'));
return $fields;
}
}