Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212

    Aiuto per recupero valori dinamici

    Ciao a tutti..
    Ho un problema che non riesco a risolvere.

    Sto cercando di creare una specie di carrello della spesa in asp.net e da un database ricavo un elenco prodotti e per ogni prodotto ho:

    ar_id (id articolo)
    ar_descr (descrizione articolo)

    Mi leggo tutti gli articoli dal database e li visualizzo in un controllo repeater in questo modo:

    <table>

    <asp:Repeater ID="rptDati" runat="server">
    <itemtemplate>

    <tr>
    <td><%# Container.DataItem("ar_codice") %></td>
    <td><%# Container.DataItem("ar_descrizione") %></td>
    <td><asp:TextBox ID='campo_quantita' runat="server"/></td>
    <td><%# Container.DataItem("ar_prezzo") %></td>

    <td><asp:LinkButton Text="Aggiungi"
    CommandArgument='<%# Container.DataItem("ar_id") %>'
    runat="server"/></td>
    </tr>

    </itemtemplate>
    </asp:Repeater>

    </table>

    Per ogni riga della tabella, oltre a visualizzare il nome prodotto ho una textbox dove inserire le quantità che mi interessano e un linkbutton per aggiungere il prodotto al carrello.

    Per fare questa operazione mi è necessario recuperare l'id dell'articolo della riga dove ho cliccato sul linkbutton e la quantità inserita nella textbox.

    Per la prima ho risolto con commandargument del linkbutton ma per recuperare il valore dalla textbox non ci riesco proprio.

    Quando provo a richiamarla in questo modo:

    Dim quantita as integer
    quantita = campo_quantita.text

    mi dice: nome "campo_quantita" non dichiarato.

    Vi prego , ho cercato di scrivere le indicazione nil modo piu' chiaro e pulito possibile ella speranza che qualcuno mi aiuti , è importante.... anche un consiglio o qualche dritta!

    Grazie a tutti per un eventuale aiuto!!

  2. #2
    io ho fatto con un datagrid:
    <asp:TemplateColumn HeaderText="Quantit&#224;">
    <ItemTemplate>
    <asp:TextBox id="Quantity" runat="server" Columns="4" MaxLength="3" Text='<%# DataBinder.Eval(Container.DataItem, "qta_prodotto") %>' width="40px" />
    </ItemTemplate>
    </asp:TemplateColumn>


    poi dalla mia funzione ho fatto cosi:
    codice:
    For i = 0 To MyDataGrid.Items.Count - 1
    
                ' Obtain references to row's controls
                Dim quantityTxt As TextBox = CType(MyDataGrid.Items(i).FindControl("Quantity"), TextBox)
                
    .....

  3. #3
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212
    Il mio problema è che il valore nelle quantità all'avvio della pagina non c'è..

    In pratica l'utente si ritrova di fronte all'elenco di prodotti ognuno con descrizione,una textbox per le quantità e un pulsante aggiungi..

    quindi se vuole un prodotto inserisce la quantità nella casella textbox corrispondente al prodotto di cui ha bisogno e clicca sul pulsante aggiungi per inserirlo nel carrello..
    capito come intendo io fare?

  4. #4
    cmq devi fare un findcontrol per intercettare il textbox della riga.

    io il carrello lo faccio in questo modo:
    catalogo.
    selezioni il prodotto. Se questo il primo vedi come quantità 1, mentre se gia è presente nel carrello la quantità si aumenta di 1. Sempre nella visualizzazione del prodotto tu puoi aggiungere o togliere la quantità che vuoi e allo stesso tempo eliminare il prodotto stesso.

  5. #5
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212
    in pratica FindControl come funziona,ancora non ho capito!

    Scusami tutte queste domande ma sono passato da asp ad aspnet da poco ...

    Avevo gia realizzato in asp questa cosa ma in .net è molto diverso.

    Inoltre, secondo la tua esperienza, è corretto utilizzare i controlli html standard invece dei controli di .net in applicazioni aspx?

    Grazie per le risposte ancora!

  6. #6
    praticamente se utilizzi un repeater o un datagrid per intercettare degli oggetti modificati come un textbox, devi scorrerti riga per riga e recuperare il valore.

    per fare questo devi utilizzare un ciclo simile a quello che ti ho scritto:
    For i = 0 To MyRepeater.Items.Count - 1

    mentre per catturare un oggetto qualsiasi nella riga devi utilizzare il FindControl
    Dim quantityTxt As TextBox = CType(MyDataGrid.Items(i).FindControl("Quantity"), TextBox)

  7. #7
    Utente di HTML.it L'avatar di shaone
    Registrato dal
    Apr 2003
    Messaggi
    212
    Chiarissimo,grazie...

    Un ultima cosa e non ti rompo piu'....

    Come faccio ad assegnare ad un id di un controllo il valore di un id del database?

    In asp facevo per esempio:

    <input type="text" name="Ident<% = rs("id_prodotto") %>">

    se lo voglio fare in asp.net dovrei fare in teoria....

    <asp:textbox id='Ident<%# Container.DataItem("id_prodotto") %>' runat="Server"/>

    ma mi da un errore...

    Sbaglio qualche comando?

    La cosa strana invece è che se...
    <%# Container.DataItem("id_prodotto") %>
    lo metto in Text del controllo textbox mi funziona...

    Quest'ultimo sforzo ti prego!!

    Grazie!! :metallica

  8. #8
    usa un label magari pure nascosto cosi non si vede e non ti da fastidio.

    <asp:Label id="ProductID" Visible="False" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "id") %>' />

    per il TextBox hai sbagliato completamente la sintassi:
    <asp:TextBox id="miotext" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "mio_campo") %>' />

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.