Débutant en asp.net - pb navigation dans dataview

Résolu
bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009 - 9 août 2006 à 11:04
bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009 - 9 août 2006 à 13:56
Bonjour,
 je débute en asp.net.
 Je souhaite avoir les mêmes facilités de navigation que avec un recordset sous VB.
 Aussi après avoir regarder un peu les différents sources sur le site, j'ai assemblé ce petit bout de code :

Imports System.Data.OleDb

Public Class Annuaire
    Inherits System.Web.UI.Page

    Private Connection As New OleDbConnection
    Private myDataView As DataView
    Private MyDataSet As DataSet
    Private position As Integer

    Public Sub connecter(ByVal nombd As String)
        Try
            Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & nombd
            Connection.Open()
        Catch ex As Exception
            lbPosition.Text = ex.Message
        End Try
    End Sub

    Public Sub deconnecter()
        Try
            Connection.Close()
        Catch ex As Exception
            lbPosition.Text = ex.Message
        End Try
    End Sub

    Public Function access(ByVal requetesql As String) As DataSet
        Dim MyAdapter As OleDbDataAdapter = New OleDbDataAdapter
        Dim MyDataSet As DataSet = New DataSet("MesDonnées")
        Dim StrConnect As String
        Dim MyCommand As OleDbCommand
        Dim requete As String

        Try
            MyCommand = New OleDbCommand(requetesql, Connection)
            MyAdapter.SelectCommand = MyCommand
            MyDataSet.Clear()
            MyAdapter.Fill(MyDataSet, "fichier")
            'A ce niveau les donnes résultantes de la requete
            'se trouvent dans => MyDataSet.Tables(0)
            Return MyDataSet
        Catch ex As Exception
            lbPosition.Text = ex.Message
        End Try
    End Function

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Placez ici le code utilisateur pour initialiser la page
        If Not Page.IsPostBack Then
            connecter(Server.MapPath("DB\Base annuaire.mdb"))
            position = 0
            MyDataSet = access("select * from tblannu where fldnom like 'L%' order by fldNom")
            deconnecter()
            myDataView = New DataView(MyDataSet.Tables(0))
            myDataView.Sort = "fldNom"
            tbNom.Text = myDataView(0)("fldNom")
            tbPrenom.Text = myDataView(0)("fldPrenom")
            lbPosition.Text = "1/" & myDataView.Count
        End If
    End Sub

    Private Sub bDebut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bDebut.Click
     Affichage(0)
    End Sub

    Private Sub bSuivant_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bSuivant.Click
        position = position + 1
        Affichage(position)
    End Sub

    Private Sub Affichage(ByVal i As Integer)
        tbNom.Text = myDataView(i)("fldNom")
        tbPrenom.Text = myDataView(i)("fldPrenom")
        lbPosition.Text = i + 1 & "/" & myDataView.Count
    End Sub

Le problème est que dès que je clique sur le bouton Suivant, j'ai un message "Détails de l'exception: System.NullReferenceException: La référence
d'objet n'est pas définie à une instance d'un objet."
En regardeant via l'"espion" myDataView est vide, quelqu'un peut me dire où est la grosse erreur ?

Merci pour tout aide que vous pourriez m'apporter.

6 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 août 2006 à 11:35
Bonjour,

quand tu click sur suivant ispostback sera vrai donc mydataview sera null d'ou l'exception :-/ pour cela il faut faire un

if page.ispostback then
mondataset = chargement du dataset
session("mondsamoi") = mondataset
else
mondataset = session("mondsamoi")
end if

si tu ne sauvegardes pas ton datast entre 2 passages tu ne vas pas pouvoir y acceder :-p il ne faut pas oublier qu'a chaque requete l'instance de la page est détruite ...

<hr />Cyril - MVS - MCP
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 août 2006 à 12:24
Chaque Thread est killé aprés la fin de la request tu peux donc pas avoir de variable global ...


Si tu veux pas mettre dans la session tu peux le mettre en variable application, cela sera partagé pour tous les users contrairement aux variables session.





<hr />

Cyril - MVS - MCP
3
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
9 août 2006 à 13:28
Application("TaVariable") = taVariable

on est pas obligé de les déclarer, faut juste vérifier qu'elle existe avant de les utiliser

<hr />Cyril - MVS - MCP
3
bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009
9 août 2006 à 12:10
Merci de cette réponse rapide.

Comment dois je faire pour avoir des variables "à porter globale" comme en VB, sans utiliser les "session" ?
Car comme pour le Dataview, je veux conserver le variable "position"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009
9 août 2006 à 13:20
Question de débutant : où déclare t'on les variables application ?
J'ai voulu le déclarer dans global.aspx, mais dans ce cas sur ma page la variable n'est pas reconnue.
0
bdl20042000 Messages postés 63 Date d'inscription mercredi 18 août 2004 Statut Membre Dernière intervention 19 mai 2009
9 août 2006 à 13:56
Encore mille merci à jesusonline pour ces réponses rapides et précises qui m'aident à mieux comprendre le fonctionnement de asp.net.
0
Rejoignez-nous