diff options
author | xue <> | 2006-06-27 01:31:25 +0000 |
---|---|---|
committer | xue <> | 2006-06-27 01:31:25 +0000 |
commit | 56466c36f4bbe5a1fee8d77642dc57b2366164e3 (patch) | |
tree | f45a68cda2f0bbe8794e0d1ce40e6e5d0186a701 /demos/quickstart/protected/pages/Controls/Samples/TPager | |
parent | b03d276f8a70675907ec8746c77c780f77f5d11a (diff) |
Added tutorial and test cases for TPager.
Diffstat (limited to 'demos/quickstart/protected/pages/Controls/Samples/TPager')
-rw-r--r-- | demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.page | 77 | ||||
-rw-r--r-- | demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.php | 82 |
2 files changed, 159 insertions, 0 deletions
diff --git a/demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.page b/demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.page new file mode 100644 index 00000000..0d61f580 --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.page @@ -0,0 +1,77 @@ +<com:TContent ID="body">
+
+<h1>TPager Sample</h1>
+<p>
+The following sample displays three different pagers associated with a single TDataList control. The datalist control is enabled with custom paging, which allows it to read only one page of data each time. This is typical in DB-driven applications.
+</p>
+
+<div>
+Go to page:
+<com:TPager ID="Pager"
+ ControlToPaginate="DataList"
+ PageButtonCount="3"
+ Mode="Numeric"
+ OnPageIndexChanged="pageChanged"
+ />
+</div>
+
+<com:TDataList
+ ID="DataList"
+ AllowPaging="true"
+ AllowCustomPaging="true"
+ PageSize="2"
+ EnableViewState="true"
+ RepeatColumns="2"
+ RepeatDirection="Vertical"
+ ItemStyle.Font.Italic="true"
+ ItemStyle.BackColor="#BFCFFF"
+ HeaderStyle.BackColor="black"
+ HeaderStyle.ForeColor="white"
+ FooterStyle.BackColor="gray"
+ AlternatingItemStyle.BackColor="#E6ECFF">
+
+<prop:HeaderTemplate>
+<div style="font-weight:bold; text-align:center;">Computer Parts</div>
+</prop:HeaderTemplate>
+
+<prop:FooterTemplate>
+<div style="font-weight:bold; text-align:center;">
+Total <%# $this->Parent->PageCount %> pages.
+</div>
+</prop:FooterTemplate>
+
+<prop:ItemTemplate>
+<table border="0" width="300">
+<tr>
+ <th>ID</th><th>Name</th><th>Quantity</th><th>Price</th>
+</tr>
+<tr>
+ <td align="right"><com:TLiteral Text=<%#$this->DataItem['id'] %> /></td>
+ <td align="right"><com:TLiteral Text=<%#$this->DataItem['name'] %> /></td>
+ <td align="right"><com:TLiteral Text=<%#$this->DataItem['quantity'] %> /></td>
+ <td align="right">$<com:TLiteral Text=<%#$this->DataItem['price'] %> /></td>
+</tr>
+</table>
+</prop:ItemTemplate>
+
+</com:TDataList>
+
+<com:TPager ID="Pager2"
+ ControlToPaginate="DataList"
+ FirstPageText="9"
+ LastPageText=":"
+ Mode="NextPrev"
+ NextPageText="4"
+ PrevPageText="3"
+ Font.Name="Webdings"
+ OnPageIndexChanged="pageChanged"
+ />
+<br/>
+Choose page:
+<com:TPager ID="Pager3"
+ ControlToPaginate="DataList"
+ Mode="List"
+ OnPageIndexChanged="pageChanged"
+ />
+
+</com:TContent>
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.php b/demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.php new file mode 100644 index 00000000..e5446f60 --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TPager/Sample1.php @@ -0,0 +1,82 @@ +<?php
+
+class Sample1 extends TPage
+{
+ /**
+ * Returns total number of data items.
+ * In DB-driven applications, this typically requires
+ * execution of an SQL statement with COUNT function.
+ * Here we simply return a constant number.
+ */
+ protected function getDataItemCount()
+ {
+ return 19;
+ }
+
+ /**
+ * Fetches a page of data.
+ * In DB-driven applications, this can be achieved by executing
+ * an SQL query with LIMIT clause.
+ */
+ protected function getData($offset,$limit)
+ {
+ $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'=>true),
+ 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'=>false),
+ array('id'=>'ITN007','name'=>'Monitor','quantity'=>2,'price'=>300.00,'imported'=>true),
+ array('id'=>'ITN008','name'=>'CDRW drive','quantity'=>1,'price'=>40.00,'imported'=>true),
+ array('id'=>'ITN009','name'=>'Cooling fan','quantity'=>2,'price'=>10.00,'imported'=>false),
+ array('id'=>'ITN010','name'=>'Video camera','quantity'=>20,'price'=>30.00,'imported'=>true),
+ array('id'=>'ITN011','name'=>'Card reader','quantity'=>10,'price'=>24.00,'imported'=>true),
+ array('id'=>'ITN012','name'=>'Floppy drive','quantity'=>50,'price'=>12.00,'imported'=>false),
+ array('id'=>'ITN013','name'=>'CD drive','quantity'=>25,'price'=>20.00,'imported'=>true),
+ array('id'=>'ITN014','name'=>'DVD drive','quantity'=>15,'price'=>80.00,'imported'=>true),
+ array('id'=>'ITN015','name'=>'Mouse pad','quantity'=>50,'price'=>5.00,'imported'=>false),
+ array('id'=>'ITN016','name'=>'Network cable','quantity'=>40,'price'=>8.00,'imported'=>true),
+ array('id'=>'ITN017','name'=>'Case','quantity'=>8,'price'=>65.00,'imported'=>false),
+ array('id'=>'ITN018','name'=>'Surge protector','quantity'=>45,'price'=>15.00,'imported'=>false),
+ array('id'=>'ITN019','name'=>'Speaker','quantity'=>35,'price'=>65.00,'imported'=>false),
+ );
+ return array_slice($data,$offset,$limit);
+ }
+
+ /**
+ * Determines which page of data to be displayed and
+ * populates the datalist with the fetched data.
+ */
+ protected function populateData()
+ {
+ $offset=$this->DataList->CurrentPageIndex*$this->DataList->PageSize;
+ $limit=$this->DataList->PageSize;
+ if($offset+$limit>$this->DataList->VirtualItemCount)
+ $limit=$this->DataList->VirtualItemCount-$offset;
+ $data=$this->getData($offset,$limit);
+ $this->DataList->DataSource=$data;
+ $this->DataList->dataBind();
+ }
+
+ public function onLoad($param)
+ {
+ parent::onLoad($param);
+ if(!$this->IsPostBack)
+ {
+ $this->DataList->VirtualItemCount=$this->DataItemCount;
+ $this->populateData();
+ }
+ }
+
+ /**
+ * Event handler to the OnPageIndexChanged event of pagers.
+ */
+ public function pageChanged($sender,$param)
+ {
+ $this->DataList->CurrentPageIndex=$param->NewPageIndex;
+ $this->populateData();
+ }
+}
+
+?>
\ No newline at end of file |