From 08bf73e5621cdc384db7c416e6e8b689123bb3a8 Mon Sep 17 00:00:00 2001 From: xue <> Date: Sun, 5 Feb 2006 03:48:45 +0000 Subject: Added paging example of TDataGrid. --- .gitattributes | 2 + .../protected/pages/Controls/DataGrid2.page | 17 +++++- .../pages/Controls/Samples/TDataGrid/Sample5.page | 55 +++++++++++++++++++ .../pages/Controls/Samples/TDataGrid/Sample5.php | 63 ++++++++++++++++++++++ framework/Web/UI/WebControls/TDataGrid.php | 16 +++--- 5 files changed, 143 insertions(+), 10 deletions(-) create mode 100644 demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.page create mode 100644 demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.php diff --git a/.gitattributes b/.gitattributes index 3e1a7e86..772e65f1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -128,6 +128,8 @@ demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample3.page -text demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample3.php -text demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample4.page -text demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample4.php -text +demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.page -text +demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.php -text demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample1.page -text demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample1.php -text demos/quickstart/protected/pages/Controls/Samples/TDataList/Sample2.page -text diff --git a/demos/quickstart/protected/pages/Controls/DataGrid2.page b/demos/quickstart/protected/pages/Controls/DataGrid2.page index a081fa46..4c295f5a 100644 --- a/demos/quickstart/protected/pages/Controls/DataGrid2.page +++ b/demos/quickstart/protected/pages/Controls/DataGrid2.page @@ -21,7 +21,22 @@ The following example turns the datagrid in

Paging

- +

+When dealing with large datasets, paging is helpful in reducing the page size and complexity. TDataGrid has an embedding paging feature. By setting AllowPaging to true, a pager is displayed automatically at the bottom of the datagrid. The pager can be further customized by setting PagerStyle, through which you can set pager visibility, mode, position, etc. +

+

+When users click on a pager button, TDataGrid raises OnPageIndexChanged event. Typically, the event handler is written as follows, +

+ +public function pageIndexChanged($sender,$param) { + $this->DataGrid->CurrentPageIndex=$param->NewPageIndex; + $this->DataGrid->DataSource=$this->Data; + $this->DataGrid->dataBind(); +} + +

+The following example enables the paging functionality of the datagrid shown in Example 1. In this example, you can set various pager styles interactively to see how they affect the pager display. +

Custom Paging

diff --git a/demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.page b/demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.page new file mode 100644 index 00000000..17f2c5d4 --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.page @@ -0,0 +1,55 @@ + + +

TDataGrid Sample 5

+

Paging

+ + + + + + + + + + + + + + + + +Next Page Text: +
+Prev Page Text: +
+ +
+ + + +Page Button Count: +
+ +
+ +
+ +
\ No newline at end of file diff --git a/demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.php b/demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.php new file mode 100644 index 00000000..6d6d967c --- /dev/null +++ b/demos/quickstart/protected/pages/Controls/Samples/TDataGrid/Sample5.php @@ -0,0 +1,63 @@ +DataGrid->CurrentPageIndex=$param->NewPageIndex; + $this->DataGrid->DataSource=$this->Data; + $this->DataGrid->dataBind(); + } + + public function itemCreated($sender,$param) + { + $item=$param->Item; + if($item->ItemType==='Pager') + { + // prepend 'Page: ' to the pager + $item->Cells[0]->Controls->insertAt(0,'Page: '); + } + } + + public function changePagerPosition($sender,$param) + { + $top=$sender->Items[0]->Selected; + $bottom=$sender->Items[1]->Selected; + if($top && $bottom) + $position='TopAndBottom'; + else if($top) + $position='Top'; + else if($bottom) + $position='Bottom'; + else + $position=''; + if($position==='') + $this->DataGrid->PagerStyle->Visible=false; + else + { + $this->DataGrid->PagerStyle->Position=$position; + $this->DataGrid->PagerStyle->Visible=true; + } + } + + public function useNumericPager($sender,$param) + { + $this->DataGrid->PagerStyle->Mode='Numeric'; + $this->DataGrid->PagerStyle->PageButtonCount=$this->PageButtonCount->Text; + $this->DataGrid->DataSource=$this->Data; + $this->DataGrid->dataBind(); + } + + public function useNextPrevPager($sender,$param) + { + $this->DataGrid->PagerStyle->Mode='NextPrev'; + $this->DataGrid->PagerStyle->NextPageText=$this->NextPageText->Text; + $this->DataGrid->PagerStyle->PrevPageText=$this->PrevPageText->Text; + $this->DataGrid->DataSource=$this->Data; + $this->DataGrid->dataBind(); + } +} + +?> \ No newline at end of file diff --git a/framework/Web/UI/WebControls/TDataGrid.php b/framework/Web/UI/WebControls/TDataGrid.php index 91b0c374..b0dafb5d 100644 --- a/framework/Web/UI/WebControls/TDataGrid.php +++ b/framework/Web/UI/WebControls/TDataGrid.php @@ -605,9 +605,9 @@ class TDataGrid extends TBaseDataList implements INamingContainer else if(strcasecmp($command,'page')===0) { $p=$param->getCommandParameter(); - if(strcasecmp($p,'next')) + if(strcasecmp($p,'next')===0) $pageIndex=$this->getCurrentPageIndex()+1; - else if(strcasecmp($p,'prev')) + else if(strcasecmp($p,'prev')===0) $pageIndex=$this->getCurrentPageIndex()-1; else $pageIndex=TPropertyValue::ensureInteger($p)-1; @@ -812,11 +812,10 @@ class TDataGrid extends TBaseDataList implements INamingContainer protected function restoreGridFromViewState() { $this->reset(); - if(($itemCount=$this->getViewState('ItemCount',0))<=0) - return; + $itemCount=$this->getViewState('ItemCount',0); $this->_pagedDataSource=$ds=$this->createPagedDataSource(); $allowPaging=$ds->getAllowPaging(); - if($allowPaging) + if($allowPaging && $ds->getAllowCustomPaging()) $ds->setDataSource(new TDummyDataSource($itemCount)); else $ds->setDataSource(new TDummyDataSource($this->getViewState('DataSourceCount',0))); @@ -826,7 +825,7 @@ class TDataGrid extends TBaseDataList implements INamingContainer $items=$this->getItems(); $items->clear(); - if($columns->getCount()>0) + if(($columnCount=$columns->getCount())>0) { foreach($columns as $column) $column->initialize(); @@ -1239,15 +1238,14 @@ class TDataGrid extends TBaseDataList implements INamingContainer if($pagerStyle) { $item->getStyle()->mergeWith($pagerStyle); - $mode=$pagerStyle->getMode(); if($index===0) { - if($mode==='Bottom') + if($pagerStyle->getPosition()==='Bottom' || !$pagerStyle->getVisible()) $item->setVisible(false); } else { - if($mode==='Top') + if($pagerStyle->getPosition()==='Top' || !$pagerStyle->getVisible()) $item->setVisible(false); } } -- cgit v1.2.3