Ordinamento griglia e paginazione

giovedì 22 novembre 2007 - 16.33

squilibrio Profilo | Expert

Ciao a tutti, come posso fare in modo che la paginazione tenga in cosiderazione il filtro applicato in una griglia?? Attualmente se cambio pagina viene applicata l'ordine iniziale della pagina



private void BindGrid()
{
DataSet dsElenco;
dsElenco = msnHelper.DataHelper.GetProgetti(sqlConnection);
if (dsElenco.Tables[0].Rows.Count > 0)
{
// Imposto il filtro presente nel ViewState
if (ViewState["LastFilter"] != null)
{
dsElenco.Tables[0].DefaultView.RowFilter = ViewState["LastFilter"].ToString();
}

gwtest.DataSource = dsElenco.Tables[0];
gwtest.DataBind();
}
}



per gestire l'ordine uso

private string GridViewSortDirection
{
get { return ViewState["SortDirection"] as string ?? "ASC"; }
set { ViewState["SortDirection"] = value; }
}

private string GridViewSortExpression
{
get { return ViewState["SortExpression"] as string ?? string.Empty; }
set { ViewState["SortExpression"] = value; }
}

private string GetSortDirection()
{
switch (GridViewSortDirection)
{
case "ASC":
GridViewSortDirection = "DESC";
break;

case "DESC":
GridViewSortDirection = "ASC";
break;
}
return GridViewSortDirection;
}

protected void gwtest_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gwtest.DataSource = SortDataTable(gwtest.DataSource as DataTable, true);
gwtest.PageIndex = e.NewPageIndex;
BindGrid();
}

protected DataView SortDataTable(DataTable dataTable, bool isPageIndexChanging)
{
if (dataTable != null)
{
DataView dataView = new DataView(dataTable);
if (GridViewSortExpression != string.Empty)
{
if (isPageIndexChanging)
{
dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GridViewSortDirection);
}
else
{
dataView.Sort = string.Format("{0} {1}", GridViewSortExpression, GetSortDirection());
}
}
return dataView;
}
else
{
return new DataView();
}
}

protected void gwtest_Sorting(object sender, GridViewSortEventArgs e)
{
GridViewSortExpression = e.SortExpression;
int pageIndex = gwtest.PageIndex;
gwtest.DataSource = SortDataTable(gwtest.DataSource as DataTable, false);
//BindGrid();
gwtest.DataBind();
gwtest.PageIndex = pageIndex;
}
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5