Blame | Letzte Änderung | Log anzeigen | RSS feed
<?phpclass Sample3 extends TPage{private $_data=null;protected function getData(){if($this->_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 'ISBN' 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('ISBN'=>'0596007124','title'=>'Head First Design Patterns','publisher'=>'O\'Reilly Media, Inc.','price'=>29.67,'instock'=>true,'rating'=>4,),array('ISBN'=>'0201633612','title'=>'Design Patterns: Elements of Reusable Object-Oriented Software','publisher'=>'Addison-Wesley Professional','price'=>47.04,'instock'=>true,'rating'=>5,),array('ISBN'=>'0321247140','title'=>'Design Patterns Explained : A New Perspective on Object-Oriented Design','publisher'=>'Addison-Wesley Professional','price'=>37.49,'instock'=>true,'rating'=>4,),array('ISBN'=>'0201485672','title'=>'Refactoring: Improving the Design of Existing Code','publisher'=>'Addison-Wesley Professional','price'=>47.14,'instock'=>true,'rating'=>3,),array('ISBN'=>'0321213351','title'=>'Refactoring to Patterns','publisher'=>'Addison-Wesley Professional','price'=>38.49,'instock'=>true,'rating'=>2,),array('ISBN'=>'0735619670','title'=>'Code Complete','publisher'=>'Microsoft Press','price'=>32.99,'instock'=>false,'rating'=>4,),array('ISBN'=>'0321278658 ','title'=>'Extreme Programming Explained : Embrace Change','publisher'=>'Addison-Wesley Professional','price'=>34.99,'instock'=>true,'rating'=>3,),);$this->saveData();}}protected function saveData(){$this->setViewState('Data',$this->_data);}protected function updateBook($isbn,$title,$publisher,$price,$instock,$rating){// In real applications, data should be saved to database using an SQL UPDATE statementif($this->_data===null)$this->loadData();$updateRow=null;foreach($this->_data as $index=>$row)if($row['ISBN']===$isbn)$updateRow=&$this->_data[$index];if($updateRow!==null){$updateRow['title']=$title;$updateRow['publisher']=$publisher;$updateRow['price']=TPropertyValue::ensureFloat(ltrim($price,'$'));$updateRow['instock']=TPropertyValue::ensureBoolean($instock);$updateRow['rating']=TPropertyValue::ensureInteger($rating);$this->saveData();}}protected function deleteBook($isbn){// In real applications, data should be saved to database using an SQL DELETE statementif($this->_data===null)$this->loadData();$deleteIndex=-1;foreach($this->_data as $index=>$row)if($row['ISBN']===$isbn)$deleteIndex=$index;if($deleteIndex>=0){unset($this->_data[$deleteIndex]);$this->saveData();}}public function onLoad($param){parent::onLoad($param);if(!$this->IsPostBack){$this->DataGrid->DataSource=$this->Data;$this->DataGrid->dataBind();}}public function itemCreated($sender,$param){$item=$param->Item;if($item->ItemType==='EditItem'){// set column width of textboxes$item->BookTitleColumn->TextBox->Columns=40;$item->PriceColumn->TextBox->Columns=5;}if($item->ItemType==='Item' || $item->ItemType==='AlternatingItem' || $item->ItemType==='EditItem'){// add an aleart dialog to delete buttons$item->DeleteColumn->Button->Attributes->onclick='if(!confirm(\'Are you sure?\')) return false;';}}public function editItem($sender,$param){$this->DataGrid->EditItemIndex=$param->Item->ItemIndex;$this->DataGrid->DataSource=$this->Data;$this->DataGrid->dataBind();}public function saveItem($sender,$param){$item=$param->Item;$this->updateBook($this->DataGrid->DataKeys[$item->ItemIndex], // ISBN$item->BookTitleColumn->TextBox->Text, // title$item->PublisherColumn->TextBox->Text, // publisher$item->PriceColumn->TextBox->Text, // price$item->InStockColumn->CheckBox->Checked, // instock$item->RatingColumn->DropDownList->SelectedValue // rating);$this->DataGrid->EditItemIndex=-1;$this->DataGrid->DataSource=$this->Data;$this->DataGrid->dataBind();}public function cancelItem($sender,$param){$this->DataGrid->EditItemIndex=-1;$this->DataGrid->DataSource=$this->Data;$this->DataGrid->dataBind();}public function deleteItem($sender,$param){$this->deleteBook($this->DataGrid->DataKeys[$param->Item->ItemIndex]);$this->DataGrid->EditItemIndex=-1;$this->DataGrid->DataSource=$this->Data;$this->DataGrid->dataBind();}}?>