[VS2005] GridView et pagination

Résolu
cs_dadou74 Messages postés 11 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 27 avril 2007 - 25 sept. 2006 à 17:28
vhj Messages postés 5 Date d'inscription jeudi 13 juin 2002 Statut Membre Dernière intervention 17 novembre 2009 - 16 avril 2008 à 16:37
Bonjour,

je charge une GridView par l'intermédiaire d'un DataReader lui même chargé par une procédure stockée Oracle ou Sql en fonction de la connexion de mon utilisateur.




Dim PreFixe As String = Outils.getPrefixe
Dim DB As SesameDatabase = Outils.getDB
Dim societe As Societe = Outils.getSociete
Dim cmd As DbCommand
If societe.IsOracleBdd Then
    Dim paramOut(,) As Object = {{"IO_CURSOR", OracleType.Cursor}}
    cmd = DB.GetStoredProcCommand(PreFixe & "PS_ACTIONS", paramOut)
Else
    cmd = DB.GetStoredProcCommand(PreFixe & "PS_ACTIONS")
End If
Using dataReader As IDataReader = DB.ExecuteReader(cmd)
    GridView1.Visible = True
    GridView1.DataSource = dataReader
    GridView1.DataBind()
End Using

Je souhaite avoir la propriété AllowPaging à True étant donné que j'ai beaucoup de données.
Mais lors du databind il me met l'erreur suivante :




La source de données ne prend pas en charge la pagination des données côté serveur
.
Évidemment cette erreur disparaît lorsque je mets AllowPaging = False
Merci de votre aide.<!-- / message -->

2 réponses

cs_dadou74 Messages postés 11 Date d'inscription mercredi 9 août 2006 Statut Membre Dernière intervention 27 avril 2007 1
27 sept. 2006 à 11:04
J'ai réussi en m'en sortir en utilisant un dataset à la place de mon datareader

_dataset = DB.ExecuteDataset(CommandType.Text, "SELECT ID_ACTION, CODE_ACTION, DESI_ACTION, VISE FROM " & PreFixe & "ACTIONS ORDER BY CODE_ACTION")
GridView1.Visible = True
GridView1.DataSource = _dataset
GridView1.DataBind()

et surtout en codant la méthode PageIndexChanging

GridView1.PageIndex = e.NewPageIndex
GridView1.DataSource = _dataset
GridView1.DataBind()
1
vhj Messages postés 5 Date d'inscription jeudi 13 juin 2002 Statut Membre Dernière intervention 17 novembre 2009
16 avril 2008 à 16:37
Bonjour,


Voici mon bout de code



Dim



SQL

As



String






Dim
SQL1

As



String

SQL =




"SELECT "

SQL &=




" NocS"



'0

SQL &=




" FROM MaTable"

SQL &=




" ORDER BY NocS"






Dim
cn

As



New
Data.SqlClient.SqlConnection(CsC(4))cn.Open()


Dim
cmd

As



New
Data.SqlClient.SqlCommand(SQL, cn)


Dim
dr

As
Data.SqlClient.SqlDataReader = cmd.ExecuteReader()


With
GridView1.DataSource = dr

.DataBind()


End



With 

 

 



dr.Close()


CN.Close()


SQL1 =




"SELECT "

SQL1 &=




" NocS"



'0

SQL1 &=




",Descr"



'1

SQL1 &=




" FROM MaTable"

SQL1 &=




" ORDER BY NocS"






Dim
cn1

As



New
Data.SqlClient.SqlConnection(CsC(4))cn1.Open()


Dim
cmd1

As



New
Data.SqlClient.SqlCommand(SQL1, cn1)


Dim
dr1

As
Data.SqlClient.SqlDataReader = cmd1.ExecuteReader()


With
GridView1


Dim
a = 0


Do



While
dr1.Read.Rows.Item(a).Cells(1).Text = a

.Rows.Item(a).Cells(2).Text = dr1(1)

a = a + 1


Loop






End



With

dr1.Close()


cn1.Close()

Ce bout de code fonctionne bien, je souhaiterais maintenant pouvoir bénéficier de la pagination
sur le Gridview. En mettant l'option AllowPaging = true évidemment le databind ne fonctionne pas
et je reçois le message d'erreur suivant:

"La source de données ne prend pas en charge la pagination des données côté serveur."

Alors voic ma question:

Est-ce que quelqu'un peut me dire comment mon code devrait être écrit pour que je puisse paginer
mon Gridview ?

Merci d'avance
0
Rejoignez-nous