Compter les records d'un dataset avec une méthode paginée
Bonjour,
J'ai créé un affichage qui retourne les résultat d'une requête dans une table avec un Repeater auquel j'ai ajouté une méthode paginée grâce a un script que j'ai trouvé, étant nouveau en ASP.NET. Maintenant je voudrais afficher le nombre total de records quelque part, mais c'est le nombre de record de la page (20 au total) qui est affiché et pas le nombre de record de la requête. Quelqu'un sait comment je peux arranger cela?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
using System;
using System.Data;
using System.Collections;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class repeater : System.Web.UI.Page
{
public int PageNumber
{
get
{
if (ViewState["PageNumber"] != null)
return Convert.ToInt32(ViewState["PageNumber"]);
else
return 0;
}
set
{
ViewState["PageNumber"] = value;
}
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
rptPages.ItemCommand +=
new RepeaterCommandEventHandler(rptPages_ItemCommand);
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
LoadData();
}
private void LoadData()
{
SqlConnection cn = new SqlConnection("Ma connexion");
cn.Open();
SqlDataAdapter da = new SqlDataAdapter("Ma rquête", cn);
DataTable dt = new DataTable();
da.Fill(dt);
cn.Close();
PagedDataSource pgitems = new PagedDataSource();
DataView dv = new DataView(dt);
pgitems.DataSource = dv;
pgitems.AllowPaging = true;
pgitems.PageSize = 20;
pgitems.CurrentPageIndex = PageNumber;
if (pgitems.PageCount > 1)
{
rptPages.Visible = true;
ArrayList pages = new ArrayList();
for (int i = 0; i < pgitems.PageCount; i++)
pages.Add((i + 1).ToString());
rptPages.DataSource = pages;
rptPages.DataBind();
}
else
rptPages.Visible = false;
rptItems.DataSource = pgitems;
rptItems.DataBind();
//Compter le nombre de records
int CntRow = pgitems.Count;
string sCntRow = CntRow.ToString();
lblCntRow.Text = sCntRow;
}
void rptPages_ItemCommand(object source,
RepeaterCommandEventArgs e)
{
PageNumber = Convert.ToInt32(e.CommandArgument) - 1;
LoadData();
}
} |