From a7edca99c188c574125785c87198606527981d01 Mon Sep 17 00:00:00 2001 From: xue <> Date: Wed, 1 Feb 2006 18:09:18 +0000 Subject: Added a new TDataList demo. --- .../pages/Controls/Samples/TDataList/Sample2.page | 116 +++++++++++++++++++++ .../pages/Controls/Samples/TDataList/Sample2.php | 88 ++++++++++++++++ 2 files changed, 204 insertions(+) create mode 100644 demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.page create mode 100644 demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.php (limited to 'demos') diff --git a/demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.page b/demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.page new file mode 100644 index 00000000..018aabfd --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.page @@ -0,0 +1,116 @@ +<com:TContent ID="body"> + +<h1>TDataList Sample 2</h1> +<p>This demo shows a simple application of TDataList control.</p> +<p>TDataList allows you to show a list of data items (rows), edit, select and delete them.</p> + +<com:TDataList ID="DataList" + CellPadding="2" + CellSpacing="3" + GridLines="Both" + RepeatColumns="1" + RepeatLayout="Table" + RepeatDirection="Vertical" + OnEditCommand="editItem" + OnCancelCommand="cancelItem" + OnUpdateCommand="updateItem" + OnDeleteCommand="deleteItem" + OnSelectedIndexChanged="selectItem" + HeaderStyle.BackColor="#AAAADD" + ItemStyle.BackColor="#EEEEEE" + SeparatorStyle.BackColor="#FAFAFA" + FooterStyle.BackColor="#BBBBBB" + EditItemStyle.BackColor="lightgreen" + SelectedItemStyle.BackColor="lightyellow"> +<prop:HeaderTemplate> +<div style="font-weight:bold; text-align:center;">Computer Parts</div> +</prop:HeaderTemplate> + +<prop:ItemTemplate> +<table border="0" width="100%"> +<tr><td> +<com:TLinkButton + Text=<%#$this->Parent->DataItem['id']%> + CommandName="select" + /> +<%#$this->Parent->DataItem['name']%> +</td> +<td align="right"> +<com:TLinkButton + Text="Edit" + CommandName="edit" + /> +<com:TLinkButton + Text="Delete" + CommandName="delete" + Attributes.onclick="if(!confirm('Are you sure?')) return false;" + /> +</td></tr> +</table> +</prop:ItemTemplate> + +<prop:SelectedItemTemplate> +<table border="1" width="100%"> +<tr><th>ID</th><th>Name</th><th>Quantity</th><th>Price</th></tr> +<tr> +<td align="right"><%#$this->Parent->DataItem['id'] %></td> +<td align="right"><%#$this->Parent->DataItem['name'] %></td> +<td align="right"><%#$this->Parent->DataItem['quantity'] %></td> +<td align="right">$<%#$this->Parent->DataItem['price'] %></td> +</tr> +<tr><td colspan="4" align="right"> +<com:TLinkButton + Text="Edit" + CommandName="edit" + /> +<com:TLinkButton + Text="Delete" + CommandName="delete" + Attributes.onclick="if(!confirm('Are you sure?')) return false;" + /> +</td></tr> +</table> +</prop:SelectedItemTemplate> + +<prop:EditItemTemplate> +<table border="0" width="100%"> +<tr> + <td align="right">ID</td> + <td><%#$this->Parent->DataItem['id']%></td> +</tr> +<tr> + <td align="right">Name</td> + <td><com:TTextBox + ID="ProductName" + Text=<%#$this->Parent->DataItem['name'] %> + /> + </td> +</tr> +<tr> + <td align="right">Quantity</td> + <td><com:TTextBox + ID="ProductQuantity" + Text=<%#$this->Parent->DataItem['quantity'] %> + /> + </td> +</tr> +<tr> + <td align="right">Price</td> + <td><com:TTextBox + ID="ProductPrice" + Text=<%#$this->Parent->DataItem['price'] %> + /> + </td> +</tr> +<tr> + <td colspan="2" align="right"> + <com:TLinkButton Text="Save" CommandName="update" /> + <com:TLinkButton Text="Cancel" CommandName="cancel" /> + </td> +</tr> +</table> +</prop:EditItemTemplate> + +</com:TDataList> + +</com:TContent> \ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.php b/demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.php new file mode 100644 index 00000000..ccc87498 --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.php @@ -0,0 +1,88 @@ +<?php + +class Sample2 extends TPage +{ + protected function getData() + { + // We use viewstate keep track of data. + // In real applications, data should come from database. + if(($data=$this->getViewState('Data',null))===null) + { + $data=array( + array('id'=>'ITN001','name'=>'Motherboard','quantity'=>1,'price'=>100.00), + array('id'=>'ITN002','name'=>'CPU','quantity'=>1,'price'=>150.00), + array('id'=>'ITN003','name'=>'Harddrive','quantity'=>2,'price'=>80.00), + array('id'=>'ITN004','name'=>'Sound card','quantity'=>1,'price'=>40.00), + array('id'=>'ITN005','name'=>'Video card','quantity'=>1,'price'=>150.00), + array('id'=>'ITN006','name'=>'Keyboard','quantity'=>1,'price'=>20.00), + array('id'=>'ITN007','name'=>'Monitor','quantity'=>2,'price'=>300.00), + ); + $this->saveData($data); + } + return $data; + } + + protected function saveData($data) + { + // In real applications, data should be saved to database. + $this->setViewState('Data',$data); + } + + function onLoad($param) + { + parent::onLoad($param); + if(!$this->IsPostBack) + { + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + } + + function editItem($sender,$param) + { + $this->DataList->EditItemIndex=$param->Item->ItemIndex; + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + + function cancelItem($sender,$param) + { + $this->DataList->SelectedItemIndex=-1; + $this->DataList->EditItemIndex=-1; + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } + + function updateItem($sender,$param) + { + $item=$param->Item; + $data=$this->Data; + $product=&$data[$item->ItemIndex]; + $product['name']=$item->ProductName->Text; + $product['price']=TPropertyValue::ensureFloat($item->ProductPrice->Text); + $product['quantity']=TPropertyValue::ensureInteger($item->ProductQuantity->Text); + $this->saveData($data); + $this->DataList->EditItemIndex=-1; + $this->DataList->DataSource=$data; + $this->DataList->dataBind(); + } + + function deleteItem($sender,$param) + { + $data=$this->Data; + array_splice($data,$param->Item->ItemIndex,1); + $this->saveData($data); + $this->DataList->SelectedItemIndex=-1; + $this->DataList->EditItemIndex=-1; + $this->DataList->DataSource=$data; + $this->DataList->dataBind(); + } + + function selectItem($sender,$param) + { + $this->DataList->DataSource=$this->Data; + $this->DataList->dataBind(); + } +} + +?> \ No newline at end of file -- cgit v1.2.3