IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Modification textBox ignorée


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Par défaut Modification textBox ignorée
    Bonjour,

    voici plusieurs jours que je traîne un soucis en ASP.NET

    J'ai une page qui affiche le caddie d'un client. C'est un gridView, avec notamment un textBox avec la quantité, cette quantité devant pouvoir être modifiable par le client. Il peut valider par click sur un bouton.

    Voici le code de la page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    <%@ Page Language="C#" MasterPageFile="~/AngieTattoo.master" AutoEventWireup="true" CodeFile="ShoppingCart.aspx.cs" Inherits="ShoppingCart" Title="Untitled Page" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="contentPlaceHolder" Runat="Server">
        <asp:Label ID="titleLabel" runat="server" Text="Your Shopping Cart" 
                   CssClass="ShoppingCartTitle"></asp:Label><br />
        <asp:Label ID="statusLabel" runat="server" 
                   CssClass="AdminPageText"></asp:Label><br />
        <asp:GridView ID="grid" runat="server" AutoGenerateColumns="False" BorderWidth="0px" 
                      DataKeyNames="ProductID" Width="100%"  
            OnRowDeleting="grid_RowDeleting">
            <Columns>
                <asp:BoundField DataField="Nom" HeaderText="Product Name" ReadOnly="True" SortExpression="Nom" />
                <asp:BoundField DataField="Price" HeaderText="Price" ReadOnly="True" SortExpression="Price"/>
                <asp:TemplateField HeaderText="Quantity">
                    <ItemTemplate>
                        <asp:TextBox ID="editQuantity" runat="server" CssClass="GridEditingRow" 
                        Width="24px" MaxLength="2" Text='<%# Eval("Quantity")%>'></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="SubTotal" HeaderText="SubTotal" ReadOnly="True" 
                                SortExpression="SubTotal" />
                <asp:ButtonField ButtonType="Button" CommandName="Delete" Text="Delete" >
                    <ControlStyle CssClass="SmallButtonText" />
                </asp:ButtonField>
            </Columns>
        </asp:GridView>
        <table width=100%>
           <tr>
              <td>
                 <span style="ProductDescription">
                    Total amount : 
                 </span>
                 <asp:Label ID="totalAmountLabel" runat="server" Text="Label" CssClass="ProductPrice"></asp:Label>
              </td>
              <td align="right">
                 <asp:Button runat="server" ID="updateButton" Text = "Update Quantities" 
                      CssClass="ButtonText" OnClick="updateButton_Click"/>
              </td>
           </tr>
        </table>
        <br />
        <asp:Button ID="continueShoppingButton" runat="server" Text="Continue Shopping" 
                    CssClass="ButtonText" OnClick="continueShoppingButton_Click"/>
    </asp:Content>
    Et maintenant le code-behind:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
     
    public partial class ShoppingCart : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            PopulateControls();
        }
     
        private void PopulateControls()
        {
            this.Title = AngieTattooConfiguration.SiteName + " : Caddie";
     
            DataTable cartTable = ShoppingCartAccess.GetItems();
            if (cartTable.Rows.Count == 0)
            {
                titleLabel.Text = "Votre caddie est vide";
                grid.Visible = false;
                totalAmountLabel.Text = String.Format("{0:c}", 0);
                updateButton.Enabled = false;
            }
            else
            {
                titleLabel.Text = "Votre caddie";
                grid.DataSource = cartTable;
                grid.DataBind();
                grid.Visible = true;
                totalAmountLabel.Text = String.Format("{0:c}", ShoppingCartAccess.GetTotalAmount());
                updateButton.Enabled = true;
            }
        }
        protected void grid_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            bool success = ShoppingCartAccess.RemoveItem(grid.DataKeys[e.RowIndex].Value.ToString());
            statusLabel.Text = (success) ? "<b>Produit supprimé</b>" :
                                       "<b>Erreur pendant la suppression</b>";
            PopulateControls();
        }
        protected void updateButton_Click(object sender, EventArgs e)
        {
            bool success = true;
            int quantité;
            string strQuantité;
     
            string test = ((TextBox)grid.Rows[0].FindControl("editQuantity")).Text;
            for (int cptRow = 0; cptRow < grid.Rows.Count; cptRow++)
            {
                strQuantité = ((TextBox)grid.Rows[cptRow].FindControl("editQuantity")).Text;
                if (Int32.TryParse(strQuantité, out quantité))
                {
                    success = success && ShoppingCartAccess.UpdateItem(grid.DataKeys[cptRow].Value.ToString(), quantité);
                }
                else
                    success = false;
            }
            statusLabel.Text = (success) ? "<b>Quantité mise à jour</b>" :
                                       "<b>Erreur pendant la mise à jour</b>"; 
            PopulateControls();
        }
     
        protected void continueShoppingButton_Click(object sender, EventArgs e)
        {
            if (Session["LastVisitedCatalogPage"] != null)
                Response.Redirect(Session["LastVisitedCatalogPage"].ToString());
            else
                Response.Redirect(Request.ApplicationPath);
        }
     
     
     
    }
    J'ai ajouté une string test pour récuperer la valeur du textbox, et le soucis est la: il m'indique la valeur contenue à l'origine, et non pas la valeur que l'utilisateur à corrigée. Du coup, il me fait mon updateen DB avec la même valeur que précédemment... Comment faire pour qu'il prenne la valeur du textBox modifié par l'utilisateur?

    Ce code est adapté d'un bouquin, et dans le site développé avec le bouquin, ce code passe et il prend bien en compte la valeur modifiée par l'utilisateur pour faire l'update. Je ne vois pas ce qui change dans ce site ci.

    Si quelqu'un voit pourquoi il ne prend pas en compte le changement du textBox, je lui en serait reconnaissant!

    Merci d'avance!

    P.S: Désolé pour le roman...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 36
    Par défaut
    Bonsoir,

    Dans l'evenent page_load il serai peu-etre necessaire d'indiquer le "not postback" pour eviter le rechargement de la page a chaque appel du serveur.
    en vb :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not ispostback then
      PopulateControls();
    end if

  3. #3
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 18
    Par défaut
    Bonsoir,

    quelle bêtise de ma part...

    C'était effectivement çà, je vous remercie de m'avoir apporté la lumière!

    Bonne soirée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [IDE] Modifications DFM ignorées
    Par jajacom dans le forum C++Builder
    Réponses: 10
    Dernier message: 08/02/2012, 09h53
  2. modification textbox remplie
    Par luchoo dans le forum ASP.NET
    Réponses: 10
    Dernier message: 07/06/2011, 14h03
  3. ObservableCollection non actualisée sur modifs TextBox
    Par Bindy dans le forum Windows Presentation Foundation
    Réponses: 17
    Dernier message: 27/04/2009, 17h18
  4. Réponses: 0
    Dernier message: 22/01/2009, 10h50
  5. [VB.net] Detecter modification TextBox
    Par nico10gbb dans le forum Windows Forms
    Réponses: 11
    Dernier message: 29/04/2006, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo