PradoSoft

Custom Datagrid paging with PROPEL

From PRADO Wiki

Back to the Cookbook

Custom Paging for Datagrid w/ PROPEL

Keep in mind i am using PROPEL for my database access, but you should be able to convert it into how you may be doing it. The main points are setting "VirtualItemCount" and "AllowCustomPaging="True"".

 
class EmailPage extends TPage
{
	public function onLoad($param)
	{
		parent::onLoad($param);
		if (!$this->IsPostBack)
		{
			$this->MemberDataGrid->DataSource = $this->populateMemberDataGrid();
			$this->MemberDataGrid->dataBind();
		}
	}
	
	public function populateMemberDataGrid()
	{
		$this->MemberDataGrid->VirtualItemCount = EmaillistmemberlinkPeer::doCountJoinAll(new Criteria());
 
		$c = new Criteria();
		$c->setLimit($this->MemberDataGrid->PageSize);
		$c->setOffset($c->getLimit() * $this->MemberDataGrid->CurrentPageIndex);
 
		$list = EmaillistmemberlinkPeer::doSelectJoinAll($c);
 
		//Handle no data
		if (count($list) === 0)
		$this->MemberDataMultiView->ActiveView=$this->MemberNoDataView;
		else
		$this->MemberDataMultiView->ActiveView=$this->MemberDataView;
 
		return $list;
	}
	
	public function OnPageIndexChanged($sender,$param)
	{
		$dgId = $sender->ID;
		$this->$dgId->CurrentPageIndex=$param->NewPageIndex;
		$this->$dgId->DataSource = $this->populateDataGrid($dgId);
		$this->$dgId->dataBind();
	}
?>
 
<com:TDataGrid
	ID="MemberDataGrid"
	AutoGenerateColumns="False"
	PageSize="20"
	AllowCustomPaging="True"
	DataKeyField="Emaillistmember.Id"
	OnPageIndexChanged="Page.OnPageIndexChanged">
				
	<com:TBoundColumn HeaderText="Email" DataField="Emaillistmember.Email" />
	<com:TBoundColumn HeaderText="List" DataField="Emaillist.Name" />
	
	<com:TCheckBoxColumn HeaderText="Disabled" DataField="Emaillistmember.Disabled" />
				
	<com:TEditCommandColumn 
		ButtonType="PushButton"
		HeaderText="Action"
		EditText="Edit"
		ItemStyle.HorizontalAlign="Center"/>
</com:TDataGrid>
Personal tools
Your user name:

Your password:

MediaWiki