Visualizzazione dei risultati da 1 a 7 su 7

Discussione: gridview + javascript

  1. #1

    gridview + javascript

    Senza titolo-1.jpg

    Ho una gridview cosi formattata

    codice:
      <asp:TemplateField HeaderText="Sconto">
                                                    <ItemTemplate>  
                                                        <div class="form-group"  style="padding-left: 4px;padding-right: 4px; margin-bottom: 0px;width: 70px;">                                              
                                                        <asp:TextBox class="form-control"  ID="txtTabelloneSconto" runat="server" Text='<%# Eval("Sconto") %>' BackColor="#FFFFCC"></asp:TextBox> 
                                                              </div>
                                                    </ItemTemplate>
                                                    </asp:TemplateField>
    
                                                     <asp:TemplateField HeaderText="">
                                                    <ItemTemplate> 
                                                         <div class="form-group"  style="padding-left: 4px;padding-right: 4px; margin-bottom: 0px;">                                                                                                       
                                                             <asp:Button class="btn_1" ID="btnDiminuisciSconto" runat="server" Text="-"  />
                                                        </div>
                                                    </ItemTemplate>
                                                    </asp:TemplateField>
         
                                                    <asp:TemplateField HeaderText="">
                                                    <ItemTemplate>  
                                                       <div class="form-group"  style="padding-left: 4px;padding-right: 4px; margin-bottom: 0px;">                                                  
                                                               <asp:Button class="btn_1" ID="btnAumentaSconto" runat="server" CommandName="Increase" CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>" Text="+"  />
                                                             </div>   
                                                    </ItemTemplate>
                                                    </asp:TemplateField>
    
                                                     <asp:TemplateField HeaderText="Importo">
                                                    <ItemTemplate>  
                                                         <div class="form-group"  style="padding-left: 4px;padding-right: 4px; margin-bottom: 0px;">                                               
                                                        <asp:TextBox class="form-control"  ID="txtTabelloneImporto" runat="server" Text='<%# Eval("Importo") %>' BackColor="#FFFFCC"></asp:TextBox>
                                                              </div> 
                                                    </ItemTemplate>
                                                    </asp:TemplateField>
    premendo il pulsante - o +
    vorrei che prendesse il valore della cella "Sconto" e lo copiasse nella cella "Importo"

    poi io, come nell'esempio precedente, far� i calcoli che mi servono

    p.s.: c'� una parte "CommandName="Increase" CommandArgument="<%# CType(Container, GridViewRow).RowIndex %>""

    che era frutto di prove, che alla fine funzionava, ma con quel metodo mi aggiorna la pagina, perch� passa in post e quindi risulta lentissimo come metodo

    qualcuno sa aiutarmi??
    ciao e grazie
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    ammesso di aver capito quello che vuoi , creo una funzione javascript

    function cambioSconto(sconto, importo, id_txtTabelloneImporto){}

    dove le passo tre parametri: sconto, importo, id di output

    Questa funzione la lancio, per esempio, cliccando il pulsante -

    Sfrutto l'evento RowDataBound del gridview

    codice:
    Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        Dim dbr As System.Data.Common.DbDataRecord = DirectCast(e.Row.DataItem, System.Data.Common.DbDataRecord)
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim btnDiminuisciSconto As Button = TryCast(e.Row.FindControl("btnDiminuisciSconto"), Button)
            If btnDiminuisciSconto IsNot Nothing Then
                Dim txtTabelloneImporto As TextBox = TryCast(e.Row.FindControl("txtTabelloneImporto"), TextBox)
                If txtTabelloneImporto IsNot Nothing Then
                    Dim sconto As String = dbr("sconto").ToString.Replace(","c, "."c)
                    Dim importo As String = dbr("importo").ToString.Replace(","c, "."c)
    
                    Dim codiceJS As String = String.Format("cambioSconto({0},{1},'{2}');return false;", sconto, importo, txtTabelloneImporto.ClientID)
    
                    btnDiminuisciSconto.OnClientClick = codiceJS
                End If
            End If
        End If
    End Sub
    Pietro

  3. #3
    Quote Originariamente inviata da pietro09 Visualizza il messaggio
    ammesso di aver capito quello che vuoi , creo una funzione javascript

    function cambioSconto(sconto, importo, id_txtTabelloneImporto){}

    dove le passo tre parametri: sconto, importo, id di output

    Questa funzione la lancio, per esempio, cliccando il pulsante -

    Sfrutto l'evento RowDataBound del gridview

    codice:
    Protected Sub GridView1_RowDataBound(sender As Object, e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound
        Dim dbr As System.Data.Common.DbDataRecord = DirectCast(e.Row.DataItem, System.Data.Common.DbDataRecord)
        If e.Row.RowType = DataControlRowType.DataRow Then
            Dim btnDiminuisciSconto As Button = TryCast(e.Row.FindControl("btnDiminuisciSconto"), Button)
            If btnDiminuisciSconto IsNot Nothing Then
                Dim txtTabelloneImporto As TextBox = TryCast(e.Row.FindControl("txtTabelloneImporto"), TextBox)
                If txtTabelloneImporto IsNot Nothing Then
                    Dim sconto As String = dbr("sconto").ToString.Replace(","c, "."c)
                    Dim importo As String = dbr("importo").ToString.Replace(","c, "."c)
    
                    Dim codiceJS As String = String.Format("cambioSconto({0},{1},'{2}');return false;", sconto, importo, txtTabelloneImporto.ClientID)
    
                    btnDiminuisciSconto.OnClientClick = codiceJS
                End If
            End If
        End If
    End Sub
    Dim dbr As System.Data.Common.DbDataRecord = DirectCast(e.Row.DataItem, System.Data.Common.DbDataRecord)

    mi segna questa riga come errore quando si apre tale pagina con la gridview e mi scrive:

    Eccezione di tipo 'System.InvalidCastException' in nomeDLL.dll non gestita nel codice utente

    Ulteriori informazioni: Impossibile eseguire il cast di oggetti di tipo 'System.Data.DataRowView' sul tipo 'System.Data.Common.DbDataRecord'.

    aiutooooooooo...
    grazieee.... ;-)
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  4. #4

    ok

    Seguendo il tuo e mettendo del mio (aiutoooo) ho fatto una mezza cosa:

    codice:
      dim ValoreBase as integer= "20"
      If (e.Row.RowType = DataControlRowType.DataRow) Then
    
    
       Dim btnDiminuisciSconto As Button = TryCast(e.Row.FindControl("btnDiminuisciSconto"), Button)
                Dim txtTabelloneSconto As TextBox = TryCast(e.Row.FindControl("txtTabelloneSconto"), TextBox)
                Dim txtTabelloneImporto As TextBox = TryCast(e.Row.FindControl("txtTabelloneImporto"), TextBox)
                btnDiminuisciSconto.Attributes.Add("onclick", String.Format("cambioSconto({0},{1},'{2}');return false;", ValoreBase, txtTabelloneSconto.Text, txtTabelloneImporto.ClientID))
    
      end if
    in JS

    codice:
     function cambioSconto(valorebase, sconto, id_txtTabelloneImporto) {
    
                 var valBase = valorebase;
               var valSconto = (sconto-1);
    
    
               var scontoCalcolato = valBase - ((valBase / 100) * (valSconto));
         
    
               alert("valore base: " + valBase + " valore sconto: " + valSconto + " pos: " + id_txtTabelloneImporto);
               alert("prezzo scontato: " + scontoCalcolato);
               scontoCalcolato = scontoCalcolato.toFixed(2).toString().replace(".", ",")
               alert("valore corretto: " + scontoCalcolato);
    
    
        
           }
    quindi ci siamo...

    come faccio a resituirlo "scontoCalcolato" a

    Dim txtTabelloneImporto As TextBox = TryCast(e.Row.FindControl("txtTabelloneImporto"),

    mi manca solo questo...
    poi se funziona sistemiamo anche la sintassi perchè nel tuo esempio c'erano altre condizioni.. ;-)

    ciao e grazie
    Ultima modifica di marco.santilli; 27-02-2017 a 19:07
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  5. #5

    HELP

    Ultimo sforzo...


    Manca solo restituire il valore calcolato alla colonna, ma non riesco

    codice:
     Protected Sub GridView2_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView2.RowDataBound
    
    
            If e.Row.RowType = DataControlRowType.DataRow Then
                Dim btnDiminuisciSconto As Button = TryCast(e.Row.FindControl("btnDiminuisciSconto"), Button)
                If btnDiminuisciSconto IsNot Nothing Then
                  Dim txtTabelloneSconto As TextBox = TryCast(e.Row.FindControl("txtTabelloneSconto"), TextBox) TextBox)
                    If txtTabelloneImporto IsNot Nothing Then
    
                      
                        btnDiminuisciSconto.Attributes.Add("onclick", String.Format("cambioSconto({0},{1},'{2}');return false;", ValoreBase, txtTabelloneSconto, txtTabelloneImporto.ClientID))
    
                    End If
                End If
            End If
    end sub
    JS
    codice:
    function cambioSconto(valorebase, sconto, id_txtTabelloneImporto) {
    
               var valBase = valorebase;
               var valSconto = (sconto-1);
    
    
               var scontoCalcolato = valBase - ((valBase / 100) * (valSconto));
         
    
               alert("valore base: " + valBase + " valore sconto: " + valSconto + " pos: " + id_txtTabelloneImporto);
               alert("prezzo scontato: " + scontoCalcolato);
               scontoCalcolato = scontoCalcolato.toFixed(2).toString().replace(".", ",")
               alert("valore corretto: " + scontoCalcolato);
    
    
           }
    gli alter mi danno i valori corretti...ora devo restituire il valore alla tabella:
    --> valSconto (che ho diminuito i 1 perchè ho cliccato sul pulsante "1")
    --> scontoCalcolato (il calcolo del nuovo importo)

    Nomi delle celle: "txtTabelloneSconto" - "txtTabelloneImporto"

    grazieeeeee
    Ultima modifica di marco.santilli; 22-03-2017 a 13:10
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  6. #6

    ok

    Forse ci sono..
    nel JS

    se aggiungo in fondo

    codice:
     document.getElementById(id_txtTabelloneImporto).value = scontoCalcolato;
    potrebbe resituire il valore...

    appena posso provo e vi faccio sapere
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

  7. #7
    Ok funzionaaaaaaaaaaaaaaaaaa....

    unico problema è questo...

    una volta cliccato, se clicco di nuovo lo sconto non scende ancora...perchè prende come base sempre il valore della text

    Dim txtTabelloneSconto As TextBox = TryCast(e.Row.FindControl("txtTabelloneSconto"), TextBox) TextBox)

    acquisita in creazione tabella
    i7 3770K --- Asus P8z77 --- 2x4Gb Corsair Vengeance 2133MHz--- Enermax NoiseTaker II 600w --- SSD: 128Gb Vertex 4 --- WD 1000Gb --- WD 2000Gb --- ASUS ATI5850 1Gb --- Case: Kandalf 25cm Fan --- Tastiera Logitech G15 --- Mouse Razer Copperhead

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