diff --git a/forms/gridfield/GridFieldExportButton.php b/forms/gridfield/GridFieldExportButton.php index 307399e20..d6eeb6610 100644 --- a/forms/gridfield/GridFieldExportButton.php +++ b/forms/gridfield/GridFieldExportButton.php @@ -91,6 +91,25 @@ class GridFieldExportButton implements GridField_HTMLProvider, GridField_ActionP return SS_HTTPRequest::send_file($fileData, $fileName, 'text/csv'); } } + + /** + * Return the columns to export + * + * @param GridField $gridField + * + * @return array + */ + protected function getExportColumnsForGridField(GridField $gridField) { + if($this->exportColumns) { + $exportColumns = $this->exportColumns; + } else if($dataCols = $gridField->getConfig()->getComponentByType('GridFieldDataColumns')) { + $exportColumns = $dataCols->getDisplayFields($gridField); + } else { + $exportColumns = singleton($gridField->getModelClass())->summaryFields(); + } + + return $exportColumns; + } /** * Generate export fields for CSV. @@ -100,9 +119,7 @@ class GridFieldExportButton implements GridField_HTMLProvider, GridField_ActionP */ public function generateExportFileData($gridField) { $separator = $this->csvSeparator; - $csvColumns = ($this->exportColumns) - ? $this->exportColumns - : singleton($gridField->getModelClass())->summaryFields(); + $csvColumns = $this->getExportColumnsForGridField($gridField); $fileData = ''; if($this->csvHasHeader) {