Select con somma

lunedì 15 febbraio 2010 - 10.33

dotnetnapo Profilo | Junior Member

Ciao a tutti,
ho il seguente problema, avendo una serie di select con dei numeri, come è possibile avere un campo totale somma dei valori selezionati nelle select...
Grazie

alx_81 Profilo | Guru

>Ciao a tutti,
Ciao

>ho il seguente problema, avendo una serie di select con dei numeri,
>come è possibile avere un campo totale somma dei valori selezionati
>nelle select...
intendi drop down list? Vuoi sommare tutti i valori delle tue drop down list?
Se sì, dovrai usare javascript. Ti consiglio di dare un id univoco ad ognuna delle drop down list e poi usare il metodo getElementById per ricavare ogni controllo.
Da lì poi puoi ricavare facilmente gli elementi e sommarli ciclando su ogni controllo.

>Grazie
di nulla!

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Si in pratica selezionando uno dei valori dalle dropdown list vorrei ottenere un campo somma

alx_81 Profilo | Guru

>Si in pratica selezionando uno dei valori dalle dropdown list
>vorrei ottenere un campo somma
ok, allora segui quanto ti ho detto

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Ho provato in qs modo ma non funziona

<select name="pippo" onSelect="selectCh(this)">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<select name="pippo1">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</label>
<br>
<input id="total" type="text" name="total">
</form>

<script language="JavaScript" type="text/javascript">
var total = document.getElementById("total")
function selectCh(caller){
if(caller.checked){
add(caller)
} else {
subtract(caller)
}
}
function add(caller){ total.value = total.value*1 + caller.value*1}
function subtract(caller){ total.value = total.value*1 - caller.value*1}
</script>

alx_81 Profilo | Guru

>Ho provato in qs modo ma non funziona
Tu vuoi sommare le select indistintamente oppure solo le voci selezionate?
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Solo le voci selezionate

alx_81 Profilo | Guru

>Solo le voci selezionate
osserva il seguente esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Il problema è che lavoro con select dinamiche, quindi nella lista compaiono sezioni con 2, 3, 4, ... select, mi ci vorrebbe uno script che somma a prescindere dal numero di select

alx_81 Profilo | Guru

>Il problema è che lavoro con select dinamiche, quindi nella lista
>compaiono sezioni con 2, 3, 4, ... select, mi ci vorrebbe uno
>script che somma a prescindere dal numero di select
in tal caso basta usare la libreria core di jQuery e selezionare per like sull'id.

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Il problema che non ci capisco un tubo di jquery.... ma non si può agire sul codice che ho inserito io?

alx_81 Profilo | Guru

>Il problema che non ci capisco un tubo di jquery.... ma non si
>può agire sul codice che ho inserito io?
guarda, jquery è semplicissimo, è per quello che lo consiglio sempre, basta una decina di minuti di lettura.
Se però lo trovi ostico (anche se javascript nativo è molto più complesso) dovresti iniziare a leggerti la documentazione su come si naviga il DOM html.
se i tuoi select sono all'interno di un ipotetico div, devi andare dentro al div e poi scorrere tutti i controlli cercando solo i select. Poi, per ogni select, lanci il codice che ti ho passato all'inizio, passando dinamicamente il nome senza fissarlo nella funzione.
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Ci provo grazie

alx_81 Profilo | Guru

>Ci provo grazie
Il problema poi, senza jQuery è che devi distinguere da browser a browser la collezione dei figli di un controllo.
Io ti passo l'esempio con jQuery, poi vedi tu. Scarica jquery qui: http://docs.jquery.com/Release:jQuery_1.3.2
<html> <head> <title>Somma select</title> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> $(document).ready(function () { var somma = 0; $("select[id^=select]").change(function() { somma += parseInt($(this).val()); document.getElementById("txtRisultato").value = somma; }); }); </script> </head> <body> <div id="container"> <select id="select1"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <select id="select2"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> </select> <input type="text" value="0" id="txtRisultato" /> </div> </body> </html>
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Guarda cos'ho trovato..... funziona alla grandeeeee

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script src="http://www.pengoworks.com/workshop/jquery/field/jquery.field.js"></script>
<script src="http://www.pengoworks.com/workshop/jquery/calculation/jquery.calculation.js"></script>
<title>Sandbox</title>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<form name="form1" method="post" action="">
<div id="formContent">
<table width="500">
<COL style="width: 50px;">
<COL>
<COL style="width: 60px;">
<COL style="width: 110px;">
<tbody>
<tr>
<th width="179">Qty</th>
<th width="164" align="left">Product</th>
<th width="72">Pri ce</th>
<th width="65">Total</th>
</tr>
<tr>
<td align="center">
<INPUT name="qty_item_1" type="text" class="input" id="qty_item_1" value="1" size="5">
</td>
<td>Table</td>
<td align="center" id="price_item_1">$150</td>
<td align="center" id="total_item_1">$</td>
</tr>
<tr>
<td align="center">
<INPUT name="qty_item_2" type="text" class="input" id="qty_item_2" size="5">
</td>
<td>Pencil</td>
<td align="center" id="price_item_2">$100</td>
<td align="center" id="total_item_2">$</td>
</tr>
<tr>
<td align="center">
<INPUT name="qty_item_3" type="checkbox" id="qty_item_3" value="1">
</td>
<td>Toys</td>
<td align="center" id="price_item_3">$50</td>
<td align="center" id="total_item_3">$</td>
</tr>
<tr>
<td align="center">
<select name="qty_item_4" id="qty_item_4">
<option selected="selected">Select an option</option>
<option value="1">Book1</option>
<option value="1">Book2</option>
<option value="1">Book3</option>
</select>
</td>
<td>Books</td>
<td align="center" id="price_item_4">$10</td>
<td align="center" id="total_item_4">$</td>
</tr>
<tr>
<td colspan="3" align="right"><STRONG>Grand Total:</STRONG></td>
<td align="center" id="grandTotal">$</td>
</tr>
</tbody>
</table>
</div>
</form>
<script>$(document).ready(function() {
$("#idPluginVersion").text($.Calculation.version);
$("[name^=qty_item_]").bind("change keyup", recalc);
recalc();
});

function recalc() {
$("[id^=total_item]").calc(
"qty * price",
{
qty: $("[name^=qty_item_]"),
price: $("[id^=price_item_]")
},
function (s) {
return "$" + s.toFixed(2);
},
function ($this) {
var sum = $this.sum();
$("#grandTotal").text("$" + sum.toFixed(2));
}
);
}</script>

alx_81 Profilo | Guru

>Guarda cos'ho trovato..... funziona alla grandeeeee
se hai lo stesso risultato, permettimi di farti notare la semplicità del codice di jQuery.
Se posso permettermi un consiglio, studia un po' quel framework,
ciao.

--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

dotnetnapo Profilo | Junior Member

Me ne sto rendendo conto.... grazie delle info
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5