Datalist sur un table sql avec pagination (avec c#)

Contenu du snippet

En ASP c'etait assez facile de faire une page qui afficher 30 enregitrements par page avec en bas de la page des pitit boutton "Precedent" "Suivant" ou "Page1 Page2",etc... D'alleur en ASP, Nix nous a fais un bon code pour faire une pagination !!!! Et en ASP.NET cmt fait-on??? Ben c po tres compliquer !!!! Ca merche dans un WebForm (.aspx) ou un UserControl (.ascx) !!! Le Code est en C# (et non pas en VB.NET !)

Source / Exemple :


Puis le code scr C# (ps : il fo appeller la fonction Paging() dans le Page_Load()) :

public void Paging()
{
SqlConnection myConnection = new SqlConnection("server=SERVER;uid=USER;pwd=PASS;database=TABLE");
SqlDataAdapter myAdapter = new SqlDataAdapter("select * from news order by id DESC", myConnection);

DataSet ds = new DataSet();

int startRecord = ( int.Parse( CurrentPageType.Value ) - 1 ) *
int.Parse( PageSize.Value );

myAdapter.Fill( ds , startRecord , int.Parse( PageSize.Value ) , "News");
 
datalist.DataSource = ds.Tables["News"].DefaultView;
datalist.DataBind();

SqlCommand myCmd = new SqlCommand( "SELECT Count(*) from news", myConnection );
myConnection.Open();

TotalSize.Value = myCmd.ExecuteScalar().ToString() ;
myConnection.Close();
BuildPagers();
}

public void BuildPagers()
{
if( ( int.Parse( CurrentPage.Value ) - 1 ) <= 0 )
  {
     Prev.Enabled = false;
  }

 {
     Prev.Enabled = true ;
 }

if( ( int.Parse( CurrentPage.Value ) * int.Parse( PageSize.Value ) ) > int.Parse( TotalSize.Value ) )
 {
   Next.Enabled = false;
 }
else
 {
   NextType.Enabled = true ;
 }
}
public void Page_datalist( object sender, EventArgs e )
{
 if( ((LinkButton)sender).ID == "Prev" )
  {
    if( ( int.Parse( CurrentPage.Value ) - 1 ) >= 0 )
      {
          CurrentPage.Value = ( int.Parse( CurrentPage.Value ) - 1 ).ToString() ;
      }
   }
else if( ((LinkButton)sender).ID == "Next" )
  {
     if( ( int.Parse( CurrentPage.Value ) * int.Parse( PageSize.Value ) ) < int.Parse( TotalSize.Value ) )
      {
          CurrentPage.Value = ( int.Parse( CurrentPage.Value ) + 1 ).ToString() ;
      }
   }
Paging();
}

Dans le scr HTML :

<asp:DataList id="datalist" runat="server" Height="35px"  Visible="False">
<ItemTemplate>
<b><# DataBinder.Eval(Container.DataItem, "titre") %></B>
<p><%# DataBinder.Eval(Container.DataItem, "date") %></p>
face="Arial, Helvetica, sans-serif" size="-2">
<p><%# DataBinder.Eval(Container.DataItem, "news") %></p>
</ItemTemplate>
</asp:DataList>
<INPUT id="PageSize" type="hidden" value="30" name="PageSize" runat="server">
<INPUT id="CurrentPage" type="hidden" value="1" name="CurrentPage" runat="server">
<INPUT id="TotalSize" type="hidden" name="TotalSize" runat="server">
<asp:LinkButton id="Prev" onclick="Page_datalist" runat="server" Visible="False" Text="<< Precedent"><< Precedent</asp:LinkButton>
<asp:LinkButton id="Next" onclick="Page_datalist" runat="server" Visible="False" Text="Suivant >>">Suivant >></asp:LinkButton>

Conclusion :


Enfin voila !!! Le rappelle que tout ca a ete ecrit en C#!!! Si vous avez des prb seboss@lestoons.net ou un ptit message sur VBfrance !!! ps : si vous dev en C# g un projet sur VbFrance qui consiste a cree un server web HTTP !!! (nom du projet : ServerSeboss) !!!
Seboss <seboss@lestoons.net>
http://www.lestoons.net/
http://www.seboss.fr.st/

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.