Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117

    Problema al salvataggio di una pagina

    Ho una pagina che contiene 3 textbox (qt,val,tot), ad ogni modifica dei textbox qt e val eseguo un metodo che scrive il prodotto nel textbox tot:




    protected void RicalcolaRiga(object sender, System.EventArgs e)
    {
    tot.text = ... recupero i valori di qt e val e moltiplico

    }

    i due textbox qt,val hanno questa struttura:

    <asp:textbox id="qt" runat="server" Width="30px" MaxLength="3" AutoPostBack="True" Enabled="False" OnTextChanged="RicalcolaRiga"></asp:textbox>



    Io vorrei dare la possibilità all'utente di modificare manualmente il valore del textbox tot, per poter modificare il totale calcolato automaticamente... il problema è che al salvataggio della pagina mi viene sempre memorizzato il valore del prodotto e non la modifica inserita nel textbox, come posso risolvere il problema?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Re: Problema al salvataggio di una pagina

    Originariamente inviato da valeria75

    i due textbox qt,val hanno questa struttura:

    <asp:textbox id="qt" runat="server" Width="30px" MaxLength="3" AutoPostBack="True" Enabled="False" OnTextChanged="RicalcolaRiga"></asp:textbox>
    :master: Il codice che hai mandato è interessante. Cioè, è interessante che il TexBox sia lungo 30 pixel e che possa accettare solo tre caratteri

    Ma spieghi come si possa verificare l'evento onchanged quando i due textbox, qt e val siano disabilitati?

    Pietro

  3. #3
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    ho preso due textbox a caso... dato che la pagina era piu complessa

    i due textbox servivano solo per far capire la logica che avevo seguito

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da valeria75
    ho preso due textbox a caso... dato che la pagina era piu complessa

    i due textbox servivano solo per far capire la logica che avevo seguito
    Questo è come la vedo io:

    Quando modifico i due textbox (non il totale) la pagina va la server e calcola il totale.

    Quando modifico il textbox totale LA PAGINA NON VA AL SERVER ma ci va premendo un qualche altro pulsante. In questo modo avrò il valore inserito direttamente dall'utente.

    Pietro

  5. #5
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,117
    Allora, la tua logica è corretta, e mi sembra "simile" alla mia:

    modifico i due TB: reload... e quindi ricalcola totale
    modifico totale: non succede nulla


    ma quando clicco sul pulsante salva (non capisco perchè) mi viene salvato nel DB il totale calcolato (prodotto dei due TB) e non quello che avevo modificato...

    Why???

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    una paginetta semplice di prova
    codice:
    <%@ Page language="c#" Codebehind="WebForm12.aspx.cs" AutoEventWireup="false" Inherits="prova_web_c_charp.WebForm12" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    	<HEAD>
    		<title>WebForm12</title>
    		<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" Content="C#">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    	</HEAD>
    	<body MS_POSITIONING="FlowLayout">
    		<form id="Form1" method="post" runat="server">
    			<table>
    				<tr>
    					<td>Quantità:</td>
    					<td><asp:TextBox id="TextBox_quantita" runat="server" AutoPostBack="True"></asp:TextBox></td>
    				</tr>
    				<tr>
    					<td>Costo unitario:</td>
    					<td><asp:TextBox id="TextBox_costo_unitario" runat="server" AutoPostBack="True"></asp:TextBox></td>
    				</tr>
    				<tr>
    					<td>Totale:</td>
    					<td><asp:TextBox id="TextBox_totale" runat="server"></asp:TextBox></td>
    				</tr>
    			</table>
    			
    
    
    				<asp:Button id="Button_salva" runat="server" Text="Salva"></asp:Button>
    				<asp:Label id="Label1" runat="server"></asp:Label></P>
    		</form>
    	</body>
    </HTML>
    codice sottostante
    codice:
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    
    namespace prova_web_c_charp
    {
    	/// <summary>
    	/// Descrizione di riepilogo per WebForm12.
    	/// </summary>
    	public class WebForm12 : System.Web.UI.Page
    	{
    		protected System.Web.UI.WebControls.TextBox TextBox_quantita;
    		protected System.Web.UI.WebControls.TextBox TextBox_costo_unitario;
    		protected System.Web.UI.WebControls.Button Button_salva;
    		protected System.Web.UI.WebControls.Label Label1;
    		protected System.Web.UI.WebControls.TextBox TextBox_totale;
    	
    		private void Page_Load(object sender, System.EventArgs e)
    		{
    			// Inserire qui il codice utente necessario per inizializzare la pagina.
    		}
    
    		#region Codice generato da Progettazione Web Form
    		override protected void OnInit(EventArgs e)
    		{
    			//
    			// CODEGEN: questa chiamata è richiesta da Progettazione Web Form ASP.NET.
    			//
    			InitializeComponent();
    			base.OnInit(e);
    		}
    		
    		/// <summary>
    		/// Metodo necessario per il supporto della finestra di progettazione. Non modificare
    		/// il contenuto del metodo con l'editor di codice.
    		/// </summary>
    		private void InitializeComponent()
    		{    
    			this.TextBox_quantita.TextChanged += new System.EventHandler(this.TextBox_quantita_TextChanged);
    			this.TextBox_costo_unitario.TextChanged += new System.EventHandler(this.TextBox_costo_unitario_TextChanged);
    			this.Button_salva.Click += new System.EventHandler(this.Button_salva_Click);
    			this.Load += new System.EventHandler(this.Page_Load);
    
    		}
    		#endregion
    
    		private void Button_salva_Click(object sender, System.EventArgs e)
    		{
    			this.Label1.Text = "Totale: " + this.TextBox_totale.Text;
    		}
    
    		private void TextBox_quantita_TextChanged(object sender, System.EventArgs e)
    		{
    			try
    			{
    				double totale = double.Parse(this.TextBox_costo_unitario.Text) * double.Parse(this.TextBox_quantita.Text);
    				this.TextBox_totale.Text = totale.ToString();
    			
    			}
    			catch (Exception ex)
    			{
    				;
    			}
    		
    
    		}
    
    		private void TextBox_costo_unitario_TextChanged(object sender, System.EventArgs e)
    		{
    			try
    			{
    				double totale = double.Parse(this.TextBox_costo_unitario.Text) * double.Parse(this.TextBox_quantita.Text);
    				this.TextBox_totale.Text = totale.ToString();
    			
    			}
    			catch (Exception ex)
    			{
    
    			}
    		}
    	}
    }
    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.