From 139ca38ddcf4998c882cfc98cb932524de210d86 Mon Sep 17 00:00:00 2001 From: xue <> Date: Sat, 4 Feb 2006 23:56:29 +0000 Subject: Modified TDataGrid sample to enable updating rating. --- framework/Web/UI/WebControls/TDataGrid.php | 106 +++++++++++++---------------- 1 file changed, 48 insertions(+), 58 deletions(-) (limited to 'framework/Web/UI/WebControls/TDataGrid.php') diff --git a/framework/Web/UI/WebControls/TDataGrid.php b/framework/Web/UI/WebControls/TDataGrid.php index eceb498b..1817d03e 100644 --- a/framework/Web/UI/WebControls/TDataGrid.php +++ b/framework/Web/UI/WebControls/TDataGrid.php @@ -869,76 +869,66 @@ class TDataGrid extends TBaseDataList implements INamingContainer $this->reset(); $keys=$this->getDataKeys(); $keys->clear(); - if($data instanceof Traversable) + $keyField=$this->getDataKeyField(); + $this->_pagedDataSource=$ds=$this->createPagedDataSource(); + $ds->setDataSource($data); + $allowPaging=$ds->getAllowPaging(); + if($allowPaging && $ds->getCurrentPageIndex()>=$ds->getPageCount()) + throw new TInvalidDataValueException('datagrid_currentpageindex_invalid'); + // get all columns + if($this->getAutoGenerateColumns()) { - $keyField=$this->getDataKeyField(); - $this->_pagedDataSource=$ds=$this->createPagedDataSource(); - $ds->setDataSource($data); - $allowPaging=$ds->getAllowPaging(); - if($allowPaging && $ds->getCurrentPageIndex()>=$ds->getPageCount()) - throw new TInvalidDataValueException('datagrid_currentpageindex_invalid'); - // get all columns - if($this->getAutoGenerateColumns()) - { - $columns=new TList($this->getColumns()); - $autoColumns=$this->createAutoColumns($ds); - $columns->mergeWith($autoColumns); - } - else - $columns=$this->getColumns(); + $columns=new TList($this->getColumns()); + $autoColumns=$this->createAutoColumns($ds); + $columns->mergeWith($autoColumns); + } + else + $columns=$this->getColumns(); - $items=$this->getItems(); + $items=$this->getItems(); - if(($columnCount=$columns->getCount())>0) - { - foreach($columns as $column) - $column->initialize(); - $allowPaging=$ds->getAllowPaging(); - if($allowPaging) - $this->createPager(-1,-1,$columnCount,$ds); - $this->createItemInternal(-1,-1,'Header',true,null,$columns); - $selectedIndex=$this->getSelectedItemIndex(); - $editIndex=$this->getEditItemIndex(); - $index=0; - $dsIndex=$ds->getAllowPaging()?$ds->getFirstIndexInPage():0; - foreach($ds as $data) - { - if($keyField!=='') - $keys->add($this->getDataFieldValue($data,$keyField)); - if($index===$editIndex) - $itemType='EditItem'; - else if($index===$selectedIndex) - $itemType='SelectedItem'; - else if($index % 2) - $itemType='AlternatingItem'; - else - $itemType='Item'; - $items->add($this->createItemInternal($index,$dsIndex,$itemType,true,$data,$columns)); - $index++; - $dsIndex++; - } - $this->createItemInternal(-1,-1,'Footer',true,null,$columns); - if($allowPaging) - $this->createPager(-1,-1,$columnCount,$ds); - $this->setViewState('ItemCount',$index,0); - $this->setViewState('PageCount',$ds->getPageCount(),0); - $this->setViewState('DataSourceCount',$ds->getDataSourceCount(),0); - } - else + if(($columnCount=$columns->getCount())>0) + { + foreach($columns as $column) + $column->initialize(); + $allowPaging=$ds->getAllowPaging(); + if($allowPaging) + $this->createPager(-1,-1,$columnCount,$ds); + $this->createItemInternal(-1,-1,'Header',true,null,$columns); + $selectedIndex=$this->getSelectedItemIndex(); + $editIndex=$this->getEditItemIndex(); + $index=0; + $dsIndex=$ds->getAllowPaging()?$ds->getFirstIndexInPage():0; + foreach($ds as $data) { - $this->clearViewState('ItemCount'); - $this->clearViewState('PageCount'); - $this->clearViewState('DataSourceCount'); + if($keyField!=='') + $keys->add($this->getDataFieldValue($data,$keyField)); + if($index===$editIndex) + $itemType='EditItem'; + else if($index===$selectedIndex) + $itemType='SelectedItem'; + else if($index % 2) + $itemType='AlternatingItem'; + else + $itemType='Item'; + $items->add($this->createItemInternal($index,$dsIndex,$itemType,true,$data,$columns)); + $index++; + $dsIndex++; } - $this->_pagedDataSource=null; + $this->createItemInternal(-1,-1,'Footer',true,null,$columns); + if($allowPaging) + $this->createPager(-1,-1,$columnCount,$ds); + $this->setViewState('ItemCount',$index,0); + $this->setViewState('PageCount',$ds->getPageCount(),0); + $this->setViewState('DataSourceCount',$ds->getDataSourceCount(),0); } else { - $this->_pagedDataSource=null; $this->clearViewState('ItemCount'); $this->clearViewState('PageCount'); $this->clearViewState('DataSourceCount'); } + $this->_pagedDataSource=null; } /** -- cgit v1.2.3