Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022

    [C# .Net 2.0] Textbox in gridview

    Sto impazzendo nel tentativo di leggere il valore contenuto in una textbox inserita in una cella di un gridview.

    Il gridview è costituito da boundfield e da una colonna con textbox.
    Si tratta di un semplice carrello della spesa. La colonna con textbox è relativa alla quantità che l'utente può variare.

    codice:
    <columns>
    			<asp:BoundField HeaderText="Cod." DataField="idprodotto" />
    			<asp:BoundField HeaderText="Prodotto" DataField="prodotto" />
    			<asp:TemplateField HeaderText="Q.tà">
    			<ItemTemplate>
    			<asp:TextBox Columns="4" ID="txtQuant" Text='<%# Eval("quantita") %>' runat="server" />
    			</ItemTemplate>
    			</asp:TemplateField>
    ...segue
    Se eseguo un ciclo come questo
    codice:
    		
    for(int j=0; j < totRecord; j++){
    			
    	TextBox mybox =  (TextBox) griglia.Rows[j].Cells[2].FindControl("txtQuant");
    		
            modifica_quantita(Convert.ToInt32(griglia.Rows[j].Cells[0].Text), Convert.ToInt32(mybox.Text));	
    					
    			}
    riesco a recuperare i valori dei boundfield ma non della text box.

    Invece in questo modo succede il contrario:

    codice:
    foreach (GridViewRow row in griglia.Rows) {
    											
    		TextBox mybox = (TextBox) row.FindControl("txtQuant");
    		
                 modifica_quantita(row , Convert.ToInt32(mybox.Text));
          			
    	}
    cioè recupero il valore delle textbox ma non dei boundfield

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Non ho mai usato il gridview, ma questo esempio mi pare funzioni (è in basic, a te la traduzione )

    pagina aspx
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Pagina senza titolo</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" /></div>
            
    
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField HeaderText="id" DataField="id" />
                    <asp:TemplateField HeaderText="testo">
                        <ItemTemplate>
                            <asp:TextBox ID="testo" runat="server" Text='<%#eval("testo") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </form>
    </body>
    </html>

    pagina di codice
    codice:
    Option Strict On
    
    Partial Class prove_a
        Inherits System.Web.UI.Page
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not Me.IsPostBack Then
                libreria.DataBind(Me.GridView1, StringaConnessioneTest, "select * from campi order by [id]", New String() {"id"})
            End If
        End Sub
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            PrintLn(Me.GridView1.Columns.Count, "numero colonne") '2 colonne
            PrintLn(Me.GridView1.Rows.Count, "numero di righe") '10 righe
            PrintLn()
    
            For Each row As GridViewRow In Me.GridView1.Rows
                PrintLn(row.Cells(0).Text, DirectCast(row.Cells(1).Controls(1), TextBox).Text)
            Next
    
    
    
        End Sub
    
    
    End Class
    attenzione che il testo del textbox recuperato è quello digitato dall'utente
    Pietro

  3. #3
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Grazie Pietro, ho fatto un piccolo passo avanti.
    Il problema che persiste però è questo: all'apertura della pagina nell'attributo TEXT della textbox imposto un valore che definisce la quantità dei prodotti ordinati. Se modifico questo valore viene comunque sempre recuperato il valore precedentemente inserito, mai quello che ho digitato prima di inviare. :master:

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ti rimando la pagina completa, in c### e, ripeto, vedo i dati digitati dall'utente
    codice:
    <%@ Page Language="C#" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
                ModuloWeb.DataBind(this.GridView1, MioModulo.StringaConnessioneTest, "select * from campi order by [id]",  new string[]{"id"});
        }
    
        protected void Button1_Click(object sender, EventArgs e)
        {
            foreach (GridViewRow row in this.GridView1.Rows)
            {
                this.Response.Write(row.Cells[0].Text + ", " + ((TextBox)row.Cells[1].Controls[1]).Text + "
    ");
            }
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Pagina senza titolo</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            
    
            
    
            <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
                <Columns>
                    <asp:BoundField HeaderText="id" DataField="id" />
                    <asp:TemplateField HeaderText="testo">
                        <ItemTemplate>
                            <asp:TextBox ID="testo" runat="server" Text='<%#Eval("testo") %>'></asp:TextBox>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </form>
    </body>
    </html>
    Pietro

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    oppure puoi usare il findcontrol.

  6. #6
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da cassano
    oppure puoi usare il findcontrol.
    certo, in effetti non trovo differenze col datagrid
    Pietro

  7. #7
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Ragazzi, non so che dire.
    Il valore lo recupero, ma solo quello che per default riporto nell'attributo TEXT del controllo TextBox. Se digito un altro numero questo non viene considerato. Non riesco proprio a capire dove sbaglio.

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ho solo 10 minuti, poi chiudo

    l'hai provato il codice proposto? :master:
    Pietro

  9. #9
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Originariamente inviato da pietro09
    ho solo 10 minuti, poi chiudo

    l'hai provato il codice proposto? :master:
    Sì, e purtroppo quando lo adatto alle mie esigenze ho il problema che ti dicevo: mi mantiene il valore impostato in Text.
    Devo rivedermi tutto: c'è qualcosa che mi sfugge.
    Ti ringrazio.

  10. #10
    Utente di HTML.it L'avatar di Umanista
    Registrato dal
    Jan 2002
    Messaggi
    1,022
    Come immaginavo è colpa mia.
    Richiamavo un metodo errato dell'oggetto che ho creato nell'evento Page_Load.
    Ora funge tutto ok.

    Grazie ancora

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 © 2026 vBulletin Solutions, Inc. All rights reserved.