/** * Renders data grid body. * @return string */ public function renderBody() { $container = $this->getWrapper('datagrid container'); // headers $header = Html::el($container->getName() == 'table' ? 'thead' : NULL); $header->add($this->generateHeaderRow()); if ($this->dataGrid->hasFilters()) { $header->add($this->generateFilterRow()); } // footer $footer = Html::el($container->getName() == 'table' ? 'tfoot' : NULL); $footer->add($this->generateFooterRow()); // body $body = Html::el($container->getName() == 'table' ? 'tbody' : NULL); if ($this->dataGrid->paginator->itemCount) { $iterator = new Nette\Iterators\CachingIterator($this->dataGrid->getRows()); foreach ($iterator as $data) { $row = $this->generateContentRow($data); $row->addClass($iterator->isEven() ? $this->getValue('row.content .even') : NULL); $body->add($row); } } else { $size = count($this->dataGrid->getColumns()); $row = $this->getWrapper('row.content container'); $cell = $this->getWrapper('row.content cell container'); $cell->colspan = $size; $cell->style = 'text-align:center'; $cell->add(Html::el('div')->setText($this->dataGrid->translate('No data were found'))); $row->add($cell); $body->add($row); } if ($container->getName() == 'table') { $container->add($header); $container->add($footer); $container->add($body); } else { $container->add($header); $container->add($body); $container->add($footer); } return $container->render(0); }