From b9f9a16d7eefc48ac489c8cb2b87749459bb3d38 Mon Sep 17 00:00:00 2001 From: "ctrlaltca@gmail.com" <> Date: Thu, 2 Jun 2011 09:56:29 +0000 Subject: merged documentation changes from branch/3.1 to trunk/ --- .../Samples/TActiveDataList/Home.page | 125 +++++++++++++++++++ .../Samples/TActiveDataList/Home.php | 132 +++++++++++++++++++++ 2 files changed, 257 insertions(+) create mode 100644 demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.page create mode 100644 demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.php (limited to 'demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList') diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.page b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.page new file mode 100644 index 00000000..ebd88424 --- /dev/null +++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.page @@ -0,0 +1,125 @@ + + +

TActiveDataList Sample

+ + + + +
Computer Parts
+
+ + + + + + + +
+ DataItem['id']%> + CommandName="select" + /> + <%#$this->DataItem['name']%> + + + +
+
+ + + + + + + + + + + + + + + +
IDNameQuantityPrice
<%#$this->DataItem['id'] %><%#$this->DataItem['name'] %><%#$this->DataItem['quantity'] %>$<%#$this->DataItem['price'] %>
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
ID<%#$this->DataItem['id']%>
NameDataItem['name'] %> + /> +
QuantityDataItem['quantity'] %> + /> +
PriceDataItem['price'] %> + /> +
ImportedDataItem['imported'] %> + /> +
+ + +
+
+ +
+ +
$Id$
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.php b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.php new file mode 100644 index 00000000..c62a239d --- /dev/null +++ b/demos/quickstart/protected/pages/ActiveControls/Samples/TActiveDataList/Home.php @@ -0,0 +1,132 @@ +_data===null) + $this->loadData(); + return $this->_data; + } + + protected function loadData() + { + // We use viewstate keep track of data. + // In real applications, data should come from database using an SQL SELECT statement. + // In the following tabular data, field 'id' is the primary key. + // All update and delete operations should come with an 'id' value in order to go through. + if(($this->_data=$this->getViewState('Data',null))===null) + { + $this->_data=array( + array('id'=>'ITN001','name'=>'Motherboard','quantity'=>1,'price'=>100.00,'imported'=>true), + array('id'=>'ITN002','name'=>'CPU','quantity'=>1,'price'=>150.00,'imported'=>true), + array('id'=>'ITN003','name'=>'Harddrive','quantity'=>2,'price'=>80.00,'imported'=>false), + array('id'=>'ITN004','name'=>'Sound card','quantity'=>1,'price'=>40.00,'imported'=>false), + array('id'=>'ITN005','name'=>'Video card','quantity'=>1,'price'=>150.00,'imported'=>true), + array('id'=>'ITN006','name'=>'Keyboard','quantity'=>1,'price'=>20.00,'imported'=>true), + array('id'=>'ITN007','name'=>'Monitor','quantity'=>2,'price'=>300.00,'imported'=>false), + ); + $this->saveData(); + } + } + + protected function saveData() + { + $this->setViewState('Data',$this->_data); + } + + protected function updateProduct($id,$name,$quantity,$price,$imported) + { + // In real applications, data should be saved to database using an SQL UPDATE statement + if($this->_data===null) + $this->loadData(); + $updateRow=null; + foreach($this->_data as $index=>$row) + if($row['id']===$id) + $updateRow=&$this->_data[$index]; + if($updateRow!==null) + { + $updateRow['name']=$name; + $updateRow['quantity']=TPropertyValue::ensureInteger($quantity); + $updateRow['price']=TPropertyValue::ensureFloat($price); + $updateRow['imported']=TPropertyValue::ensureBoolean($imported); + $this->saveData(); + } + } + + protected function deleteProduct($id) + { + // In real applications, data should be saved to database using an SQL DELETE statement + if($this->_data===null) + $this->loadData(); + $deleteIndex=-1; + foreach($this->_data as $index=>$row) + if($row['id']===$id) + $deleteIndex=$index; + if($deleteIndex>=0) + { + unset($this->_data[$deleteIndex]); + $this->saveData(); + } + } + + public function onLoad($param) + { + parent::onLoad($param); + if(!$this->IsPostBack) + { + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + } + + public function editItem($sender,$param) + { + $this->DataList->SelectedItemIndex=-1; + $this->DataList->EditItemIndex=$param->Item->ItemIndex; + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + + public function cancelItem($sender,$param) + { + $this->DataList->SelectedItemIndex=-1; + $this->DataList->EditItemIndex=-1; + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + + public function updateItem($sender,$param) + { + $item=$param->Item; + $this->updateProduct( + $this->DataList->DataKeys[$item->ItemIndex], + $item->ProductName->Text, + $item->ProductQuantity->Text, + $item->ProductPrice->Text, + $item->ProductImported->Checked); + $this->DataList->EditItemIndex=-1; + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + + public function deleteItem($sender,$param) + { + $this->deleteProduct($this->DataList->DataKeys[$param->Item->ItemIndex]); + $this->DataList->SelectedItemIndex=-1; + $this->DataList->EditItemIndex=-1; + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + + public function selectItem($sender,$param) + { + $this->DataList->EditItemIndex=-1; + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } +} + +?> \ No newline at end of file -- cgit v1.2.3