Urgent..Probleme pour mettre a jour la valeur d'un ItemTemplate dans une gridvi

Signaler
Messages postés
3
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
10 avril 2008
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour à tous!

Voila j'ai un probleme. je suis debutant en asp.net.

J'ai un gridview lié a une base de donnée via une procedure stockée avec plusieurs templatefield qui contiennent eux des itemstemplates.

j'ai ça comme colonne:

colonne 2: BoundField:qte commandée

colonne 3: itemtemplate: qte livrée
colonne 4: itemtemplate: qte restante

je veux que quand l'utilisateur remplisse la quantité livrée la quantité restant se mette à jour (qte commandée - qte livrée). je suppose avec un cint(qte commandé)-cint(qtelivrée).

Comment faire en vb.net svp. je n'arrive pas a recuperer le numero de ligne mise a jour  et je n'arrive pas a mettre a jour mon templatefield qte restante.

Merci beaucoup d'avance pour vos reponses.

4 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Salut

1 --> On ne mets pas d'urgent on repond quand on connait la réponse.
2 --> Tu t'es trompé de catégorie

3 --> Voici quand même une solution à mettre dans le champs texte d'un controle dans la page aspx
  Text='<%#  Convert.ToInt32(Eval("QtCom")) -Convert.ToInt32( Eval("QtLivre"))%>'

Bon coding
Messages postés
3
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
10 avril 2008

merci beaucoup!!!

Navré si j'ai mal édite mon post.

Je vais tester ta solution. J'en ai trouvé une autre en parcourant tous le datagrind a l'aide d'un compteur mais c'est pas très propre...

une procédure à mettre dans le ontextchanged du templatefield "qte livrée"
Public Sub majqte(ByVal sender As Object, ByVal e As System.EventArgs)
Dim j As Integer = GridView1.Rows.Count - 1
While j <> -1
If labelqtelivr.Text = "" Then
Else
Dim recup_qte As String = GridView1.Rows(j).Cells(2).Text
labelqtecomm.Text = recup_qte
Dim recup_qtelivr As String = CType(GridView1.Rows(j).Cells(3).FindControl("qtelivre"), TextBox).Text
If IsInteger(recup_qtelivr) = False Then
labelqtelivr.Text = "0"

Else
labelqtelivr.Text = recup_qtelivr

End If
CType(GridView1.Rows(j).Cells(4).FindControl("restealivre"), TextBox).Text = CInt(GridView1.Rows(j).Cells(2).Text) - CInt(labelqtelivr.Text)
End If

j = j - 1

End While

End Sub
Messages postés
3
Date d'inscription
lundi 26 février 2007
Statut
Membre
Dernière intervention
10 avril 2008

la fonction isinteger associé que j'ai trouvé sur le net:
Public Shared Function IsInteger(ByVal strTmp As String) As Boolean
Dim objIntPattern As New System.Text.RegularExpressions.Regex("^[0-9]+[0-9]*$")
Return objIntPattern.IsMatch(strTmp)
End Function

et j'ai mis autopostback à true dans mon champs qtelivre
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
36
Et ma solution ne correspond pas à la demande.
Elle prend 10 fois moins de ligne et est plus propre ;-)