2 votes

Listview : pagination personnalisée avec datapager

Quelqu'un peut-il me dire comment mettre en place une pagination personnalisée avec le datapager ? J'ai réussi à le faire avec 2 boutons (pour les pages suivantes et précédentes) et la méthode LoadListview(), mais j'aimerais utiliser cette méthode dans le datapager. Des suggestions ?

Code derrière le fichier :

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BusinessConnectionString"].ToString());
    SqlDataAdapter adap;
    int startIndex;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            LoadListview();
        }         
    }

    private void LoadListview()
    {
        string FindWhat = Request.QueryString["Find"];
        string FindWhere = Request.QueryString["Where"];
        string TownName = FindWhere;
        string CountyName = FindWhere;
        string PostcodeName = FindWhere;

        //startIndex = int.Parse(ViewState["index"].ToString());
        startIndex = MyDataPager.StartRowIndex * MyDataPager.PageSize;
        int endIndex = startIndex + MyDataPager.PageSize;

        adap = new SqlDataAdapter("SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND TownName Like '%" + TownName + "%') UNION ALL SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND CountyName Like '%" + CountyName + "%') UNION ALL SELECT ROW_NUMBER() OVER (ORDER BY id_Business) AS MyRow, id_Business, Name, TownName FROM UbeloView WHERE (Name Like '%" + FindWhat + "%' AND PostcodeName Like '%" + PostcodeName + "%')) AS log WHERE MyRow >=" + startIndex + " AND MyRow <=" + endIndex + " ", conn);

        DataSet ds = new DataSet();

        adap.Fill(ds);

        lstBusiness.DataSource = ds;
        lstBusiness.DataBind();
    }

    protected void MyDataPager_PreRender(object sender, EventArgs e)
    {
        LoadListview();
    }

0voto

sbhomra Points 1831

Cet article peut vous aider : http://www.codeproject.com/Articles/24065/Paging-ListView-With-DataPager

Dans cet article, l'auteur a utilisé un DataPager_PreRender pour lier ses données à un ListView :

protected void DataPagerProducts_PreRender(object sender, EventArgs e)
{
    ProductList db = new ProductList();
    this.ListViewProducts.DataSource = db.GellAll();
    this.ListViewProducts.DataBind();
}

Vous pouvez essayer quelque chose de similaire :

protected void MyDataPager_PreRender(object sender, EventArgs e)
{
    LoadListview();    
}

Il vous suffira alors de modifier votre LoadListview() pour obtenir l'index de départ à partir du contrôle DataPager lui-même.

private void LoadListview()
    {
        string FindWhat = Request.QueryString["Find"];
        string FindWhere = Request.QueryString["Where"];
        string TownName = FindWhere;
        string CountyName = FindWhere;
        string PostcodeName = FindWhere;

        startIndex = MyDataPager.StartRowIndex * MyDataPager.PageSize;
        adap = new SqlDataAdapter("<Query removed to save space>", conn);

        DataSet ds = new DataSet();    

        adap.Fill(ds);

        lstBusiness.DataSource = ds;
        lstBusiness.DataBind();
    }

Comme vous pouvez le voir, j'obtiens le message startIndex en obtenant l'index de la ligne et en le multipliant par la taille de la page de votre DataPager. Il ne vous reste plus qu'à modifier cette partie de votre requête SQL pour la faire passer de startIndex * 80 a startIndex .

Si tout se passe comme prévu, vous n'aurez pas besoin de votre btnPrevious y btnNext cliquer sur les événements.

J'espère que cela vous donnera une idée de ce que vous essayez de faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X