[ASP.NET]Pb "bizarre" maj TextBox [Résolu]

Signaler
Messages postés
33
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
13 janvier 2006
-
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
-
Bonjour,

J'ai un projet contenant 2 parties (sur 2 feuilles differentes):

- 1 partie saisie (nouveau + modif): contient des textbox permettant d'inserer/modifier des elements dans une bdd access. Pas de souci.

- 1 partie validation: cette page affiche les données saisie et permet de les modifier.
Pour cela, je fait ue redirection vers ma page de saisie, en remettant dans lmes textbox les valeurs de la bdd.

Et la probleme: lorsque je fais des modifs dans les textbox et que je lance un UPDATE, les valeurs des textbox ne sont pas celle que j'ai saisie, mais les anciennes!!!

Ex: mon textbox1.text="toto", je le modifie en saisissant "tata", et bien lorsque je lance mon update, j'ai encore la valeur "toto"

Si quelqu'un peut m'expliquer d'ou vient le phenomene, et comment le regler ... d'avance merci!

8 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
etonnement si tu es tres clair; lol

Je pensais a un problème de ce genre moi aussi

PS: Si ton sujet est traité clique sur le bouton, reponse accepté :)

Cyril
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Ce que tu fais c'est bien ca :

modif.aspx
>response.redirect("valid.aspx")

valid.aspx
if OK then
ajout BDD
else
response.redirect("modif.aspx")
end if

et le problème c'est quand tu fais le chemin : modif.aspx ==> valid.aspx (not OK) ==> modif.aspx ==> Valid.aspx

et tu n'as aucune modification sur ta derniere page valid.aspx, elle te revient identique à la premiere fois ?

Il peut y avoir plusieurs raison à ton problème, le plus simple serait que tu me donnes une partie du code faisant les liaisons.

et pour continuer dans la simplicité, tu peux enregistrer tes variables dans une variable session, ce sera peut etre plus simple si tu debutes.

Je peux pas t'aider plus, car la je ne sais pas assez comment tu travailles pour pouvoir t'aider, et il y a des dizaines de facons de faire ce que tu décrit.

Cyril
Messages postés
33
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
13 janvier 2006

Salut Cyril,

Merci d'avoir repondu.

Voila la partie du code (il manque les declarations etc):

'Dans ma page valid, lorsque je clique sur un item de mon datagrid, je passe 2 param (des Id):

Dim WebFormParam As New FSaisie
WebFormParam.ID1 = e.Item.Cells(3).Text
WebFormParam.ID2 = e.Item.Cells(2).Text
Response.Redirect("FSaisie.aspx?PValID=" & e.Item.Cells(3).Text & "&PValIDPaie=" & e.Item.Cells(2).Text)


'Dans ma page saisie

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LId_Soc = Request.QueryString("ID1")
        LId_Paie = Request.QueryString("ID2")

        PStrConn = New OleDbConnection("provider=microsoft.jet.oledb.4.0;" & _
                        "data source=" & Server.MapPath(".\bdd\saispaie.mdb") & ";")
        PStrConn.Open()

'(...)

        If IsNothing(LId_Paie) = False Then 'LId_Paie est different de null si on vient de la page de validation

            TextBox1.Enabled = True   '(...) je rends mes controles visibles/enable

            'SELECT dans ma bdd pour alimenter mes controles
            LReq = "SELECT * FROM T_TABLE " & _
                   "WHERE Id_Societe=" & CInt(LId_Soc)
            PCmd = New OleDbCommand(LReq, PStrConn)
            PReader = PCmd.ExecuteReader()

            PReader.Read()
            TextBox1.Text = PReader("Nom")
            PCmd.Dispose() : PReader.Close()
        End If
        PStrConn.Close()
    End Sub

'imaginons que TEXTBOX1.TEXT="toto"
'je le modifie en mettant "tata" (en saisissant directement dans le navigateur)

'Appuie sur mon bouton de maj

    Private Sub ImageButton5_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ImageButton5.Click
        LId_Soc = CInt(Request.QueryString("PValID"))
        LId_Paie = Request.QueryString("PValIDPaie")

                PStrConn = New OleDbConnection("provider=microsoft.jet.oledb.4.0;" & _
                                "data source=" & Server.MapPath(".\bdd\saispaie.mdb") & ";")
                PStrConn.Open()

                'Maj de ma table ...
                LReq = "UPDATE T_TABLE " & _
                       "SET Nom='" & TextBox1.Text & "'"
                PCmd = New OleDbCommand(LReq, PStrConn)
                PCmd.ExecuteNonQuery()
    End Sub

'Et la TEXTBOX1.TEXT="toto"


Et voila, en esperant que tu pourras m'aider.

Bye
Messages postés
33
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
13 janvier 2006

[EDIT]

Je me demande si je n'ai pas un probleme au niveau des proprietes de ma page, car j'ai exactement le meme probleme en utilisant la technique d'edit direct du datagrid

ex:

'Lors de l'appui sur la commande "Mettre a jour"

    Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
        Dim LReq, LId As String
        Dim LNom As TextBox

        LNom = e.Item.Cells(5).Controls(0)
        LId = e.Item.Cells(2).Text

        PStrConn = New OleDbConnection("provider=microsoft.jet.oledb.4.0;" & _
                        "data source=" & Server.MapPath(".\bdd\saispaie.mdb") & ";")
        PStrConn.Open()

        LReq = "UPDATE T_TABLE SET Nom='" & LNom.Text & "' " & _
               "WHERE Id=" & LId & ""
        PCmd = New OleDbCommand(LReq, PStrConn)
        PCmd.ExecuteNonQuery()
        PCmd.Dispose()

        DataGrid1.EditItemIndex = -1
        ChargerData()    'mise a jour de mon datagrid
    End Sub


Et bie dans ce cas aussi, la valeur que j'ai saisie n'est pas prise en compte (il garde celle "par defaut")
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
J'ai pas compris ca :

Dim WebFormParam As New FSaisie
WebFormParam.ID1 = e.Item.Cells(3).Text
WebFormParam.ID2 = e.Item.Cells(2).Text
Response.Redirect("FSaisie.aspx?PValID=" & e.Item.Cells(3).Text & "&PValIDPaie=" & e.Item.Cells(2).Text)

tu es dans quelle procédure la ? et le FSaisie c'est quoi ?

si tu pouvais me zipper tout ca, et essayer de me mettre ca quelque part pour que je puisse y regarder, car la je pige pas tout ce que tu fais :) faut dire aussi que j'ai pas pris beaucoup de temps pour reflechir vraiment :-p

si t'as aucun endroit pour mettre un zip, contacts moi je te passerais une adresse mail

Cyril
Messages postés
33
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
13 janvier 2006

Pour la partie "zarbe" ;) , je suis dans ma page de validation ou j'ai un datagrid; et ce code intervient lorsque je clique sur une ligne de ce datagrid, sur le
Private Sub DataGrid1_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.ItemCommand

Ensuite FSaisie est le nom de ma page de saisie. Je lui ait donc une redirection en passant 2 parametres qui sont des Id (pour mettre a jour ma bdd)

Il ne peut pas y avoir une propriete de la page a changer pour "accepter" des modifications?

Pour le code j'essaye de te le zipper, par contre si tu as un mail ou t'envoyer tout ca ...

Merci!
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
ok je vais t'envoyer mon mail en message privée, car la le Fsaisie.ID j'ai peur :big)

Cyril
Messages postés
33
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
13 janvier 2006

Salut,

J'ai bien recu ton mail, no souci.

Mais je pense avoir trouvé le souci: en fait je repassais par un databind avant de recuperer mes valeurs, qui du coup reprennais les anciennes (je suis pas sur d'etre super clair ^_^ ...)

Je lui ai rajouté un IsPostBack, et la c'est tout bon

Merci pour ton aide et @+