Home / Programmazione / C# - Asp.NET / GridView con pager personalizzato
Mattepuffo

GridView con pager personalizzato

GridView con pager personalizzato

In questo articolo ho cominciato a parlarvi di come controllare una GridView da code-behind.

Come detto quell'articolo non è completo per due motivi:

  • il pager
  • il sorting

Qui vediamo come usare un pager personalizzato.

Prima di tutto vi riporto la GV:

protected void decoderViewSource()
{

SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["MYDB"].ConnectionString);
String queryString = "SELECT * FROM siti";
try
{
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter(queryString, conn);
DataSet ds = new DataSet();
adapter.Fill(ds);
DataView dv = new DataView();
dv = ds.Tables[0].DefaultView;
if (sortExpr != string.Empty)
{
dv.Sort = string.Format("{0} {1}", sortExpr, sortDir);
}
DecoderView.DataSource = dv;
DecoderView.AutoGenerateColumns = false;
DecoderView.AutoGenerateSelectButton = true;
DecoderView.AllowSorting = true;
DecoderView.AllowPaging = true;
DecoderView.CssClass = "grid";
DecoderView.PageSize = int.Parse(ddlPagine.SelectedValue);
DecoderView.PagerSettings.Visible = false;
DecoderView.DataBind();
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
conn.Close();
}
}

 

Il paging è attivato ma c'è una riga in più:

DecoderView.PageSize = int.Parse(ddlPagine.SelectedValue);

Questo fa il parsing del valore selezionato in una DDL.

La DDL in questione è questa:

<asp:DropDownList ID="ddlPagine" runat="server" AutoPostBack="True" OnSelectedIndexChanged="numeroPagine">
<asp:ListItem Text="5" Value="5"></asp:ListItem>
<asp:ListItem Text="10" Value="10"></asp:ListItem>
<asp:ListItem Text="20" Value="20"></asp:ListItem>
<asp:ListItem Text="Tutti" Value="1000000"></asp:ListItem>
</asp:DropDownList>

Le opzioni importatnti da attivare sono l'AutoPostBack e l'evento OnSelectedIndexChanged che richiama un metodo del code-behind.

protected void numeroPagine(Object sender, EventArgs e)
{
DecoderView.PageSize = int.Parse(ddlPagine.SelectedValue);
decoderViewSource();
}

Fa il parse del valore e poi richiama il metodo di caricamento della GV.

Per quanto riguarda le voci state attenti all'ultima: nel caso abbiate tantissimi record il caricamento potrebbe essere molto lento.