using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataHolder.Containers;
using DataHolder.DataPersistence;
using DBWebControls.WebNavigator;
namespace DBWebControls.Controls{
/// <summary>
/// Summary description for GenericListPage.
/// </summary>
public class GenericListUserControl :GenericUserControl
{
private DataGrid MainDataGrid;
private ControlsBinder filterControls;
private Button FilterButton;
private TextBox itemsPerPage;
public void InitListControl( DataGrid p_MainDataGrid, ControlsBinder p_filterControls, Button p_FilterButton, TextBox p_itemsPerPage)
{
MainDataGrid = p_MainDataGrid;
filterControls = p_filterControls;
FilterButton = p_FilterButton;
itemsPerPage = p_itemsPerPage;
FilterButton.Click +=new EventHandler(FilterData);
MainDataGrid.SortCommand += new DataGridSortCommandEventHandler(MainDataGrid_SortCommand);
MainDataGrid.PageIndexChanged += new DataGridPageChangedEventHandler(MainDataGrid_PageIndexChanged);
}
#region UserControlsOverrides
protected override void OnLoad(EventArgs e)
{
base.OnLoad (e);
if(!this.IsPostBack)
{
MainDataGrid.CurrentPageIndex = 0;
BindDataGrid();
}
else
filterControls.GetValuesFromControls(((NavListUserControlState)ControlData).ListState.GEfilters);
}
protected override void OnPreRender(EventArgs e)
{
filterControls.SetValuesToControls(((NavListUserControlState)ControlData).ListState.GEfilters);
base.OnPreRender (e);
}
#endregion
#region BindData
public virtual void SetDataGridDataSource()
{
MainDataGrid.DataSource = ((NavListUserControlState)ControlData).ListState.LoadedData;
MainDataGrid.DataBind();
}
public virtual void BindDataGrid()
{
NavListUserControlState cdata = (NavListUserControlState)ControlData;
MainDataGrid.PageSize = int.Parse(itemsPerPage.Text);
int RowsCount = 0;
ColumnFilterInfoCollection cfi = cdata.ListState.GetFilterValues();
OrderByInfoCollection obi = cdata.ListState.GetorderByInfo();
GenericDataCollection gecoll = LoadDataPagedData(out RowsCount, cfi, obi, MainDataGrid.PageSize, MainDataGrid.CurrentPageIndex, 0);
MainDataGrid.VirtualItemCount = RowsCount;
cdata.ListState.LoadedData = gecoll;
SetDataGridDataSource();
}
#endregion
#region Events
public virtual void FilterData(object sender, System.EventArgs e)
{
MainDataGrid.CurrentPageIndex = 0;
BindDataGrid();
}
public virtual void MainDataGrid_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
NavListUserControlState cdata = (NavListUserControlState)ControlData;
if(cdata.ListState.SortColumn == e.SortExpression)
{
if(cdata.ListState.SortDirection == ListSortDirection.Ascending)
cdata.ListState.SortDirection = ListSortDirection.Descending;
else
cdata.ListState.SortDirection = ListSortDirection.Ascending;
}
else
{
cdata.ListState.SortColumn = e.SortExpression;
cdata.ListState.SortDirection = ListSortDirection.Ascending;
}
BindDataGrid();
}
public virtual void MainDataGrid_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
MainDataGrid.CurrentPageIndex = e.NewPageIndex;
BindDataGrid();
}
#endregion
#region LoadData Abstracts
public virtual GenericDataCollection LoadDataPagedData(out int RowsCount, ColumnFilterInfoCollection filters, OrderByInfoCollection orderinfo,int PageSize, int CurrentPageIndex, int EmptySpacesInPage)
{
throw new Exception("List Page Exception : LoadDataPagedData function not implemented");
}
#endregion
}
}
|