From fd4b8d9f45d1707035021bc19b8d5bc17ede66ce Mon Sep 17 00:00:00 2001 From: wei <> Date: Mon, 12 Feb 2007 12:46:11 +0000 Subject: Add IBM DB2 driver for active record. --- .../ActiveRecord/Scaffold/TScaffoldListView.php | 85 ++++++++++++++++------ 1 file changed, 63 insertions(+), 22 deletions(-) (limited to 'framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php') diff --git a/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php b/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php index 35c53473..2ac3fe99 100644 --- a/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php +++ b/framework/Data/ActiveRecord/Scaffold/TScaffoldListView.php @@ -1,7 +1,28 @@ + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2007 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @package System.Data.ActiveRecord.Scaffold + */ + +/** + * Load the scaffold base class. + */ Prado::using('System.Data.ActiveRecord.Scaffold.TScaffoldBase'); +/** + * TScaffoldListView displays instance of Active Record class. + * + * @author Wei Zhuo + * @version $Id$ + * @package System.Data.ActiveRecord.Scaffold + * @since 3.1 + */ class TScaffoldListView extends TScaffoldBase { public function onLoad($param) @@ -32,31 +53,26 @@ class TScaffoldListView extends TScaffoldBase public function onPreRender($param) { parent::onPreRender($param); - $this->initializeItemCount(); $this->loadRecordData(); } - protected function initializeItemCount() - { - $this->_list->setVirtualItemCount($this->getRecordFinder()->count()); - } - protected function loadRecordData() { + $this->_list->setVirtualItemCount($this->getRecordFinder()->count()); $finder = $this->getRecordFinder(); - $criteria = $this->getPagingCriteria(); + $criteria = $this->getRecordCriteria(); $this->_list->setDataSource($finder->findAll($criteria)); $this->_list->dataBind(); } - protected function getPagingCriteria() + protected function getRecordCriteria() { $total = $this->_list->getVirtualItemCount(); $limit = $this->_list->getPageSize(); $offset = $this->_list->getCurrentPageIndex()*$limit; if($offset + $limit > $total) $limit = $total - $offset; - $criteria = new TActiveRecordCriteria; + $criteria = new TActiveRecordCriteria($this->getSearchCondition(), $this->getSearchParameters()); $criteria->setLimit($limit); $criteria->setOffset($offset); $order = explode(' ',$this->_sort->getSelectedValue(), 2); @@ -65,6 +81,26 @@ class TScaffoldListView extends TScaffoldBase return $criteria; } + public function setSearchCondition($value) + { + $this->setViewState('SearchCondition', $value); + } + + public function getSearchCondition() + { + return $this->getViewState('SearchCondition'); + } + + public function setSearchParameters($value) + { + $this->setViewState('SearchParameters', TPropertyValue::ensureArray($value),array()); + } + + public function getSearchParameters() + { + return $this->getViewState('SearchParameters', array()); + } + public function bubbleEvent($sender, $param) { switch(strtolower($param->getCommandName())) @@ -72,21 +108,26 @@ class TScaffoldListView extends TScaffoldBase case 'delete': return $this->deleteRecord($sender, $param); case 'edit': - if(($ctrl=$this->getEditViewControl())!==null) - { - if($param instanceof TRepeaterCommandEventParameter) - { - $pk = $param->getItem()->getCustomData(); - $ctrl->setRecordPk($pk); - $ctrl->initializeEditForm(); - } - } + $this->initializeEdit($sender, $param); } $this->raiseBubbleEvent($this, $param); return true; } - public function deleteRecord($sender, $param) + protected function initializeEdit($sender, $param) + { + if(($ctrl=$this->getEditViewControl())!==null) + { + if($param instanceof TRepeaterCommandEventParameter) + { + $pk = $param->getItem()->getCustomData(); + $ctrl->setRecordPk($pk); + $ctrl->initializeEditForm(); + } + } + } + + protected function deleteRecord($sender, $param) { if($param instanceof TRepeaterCommandEventParameter) { @@ -111,10 +152,10 @@ class TScaffoldListView extends TScaffoldBase $item = $param->getItem(); if(($data = $item->getData()) !== null) { - $item->setCustomData($this->getRecordObjectPk($data)); + $item->setCustomData($this->getRecordPkValues($data)); if(($prop = $item->findControl('_properties'))!==null) { - $item->_properties->setDataSource($this->getRecordProperties($data)); + $item->_properties->setDataSource($this->getRecordPropertyValues($data)); $item->_properties->dataBind(); } } -- cgit v1.2.3