Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 2.0 / 3.5 / 4.0
Gridview con dati inseriti manualmente
mercoledì 12 dicembre 2007 - 11.24
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
batti
Profilo
| Newbie
19
messaggi | Data Invio:
mer 12 dic 2007 - 11:24
Ciao a tutti,
ho un gridview con dei dati presi da un db su cui ho aggiunto due altre colonne una edittemplate e una itemtemplate, vorrei che quando inserisco un numero nella prima colonna, nell'altra venga eseguita un moltiplicazione tra il dato inserito e un dato preso dal db sotto ho messo parte del codice della tabella
.....
<asp:BoundField DataField="Prezzo" HeaderText="Data fine" ReadOnly="True" SortExpression="Prezzo" />
<asp:TemplateField HeaderText="AAA" SortExpression="AAA">
<EditItemTemplate>
<asp:TextBox ID="TextBox3" runat="server">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="BBB">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" ReadOnly="True" Text='<%# ??? %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
dove ho messo i ??? non so cosa inserire dovrei in pratica fare AAA*Prezzo
Grazie
0v3rCl0ck
Profilo
| Guru
1.120
messaggi | Data Invio:
mer 12 dic 2007 - 11:55
>Ciao a tutti,
Ciao
>ho un gridview con dei dati presi da un db su cui ho aggiunto
>due altre colonne una edittemplate e una itemtemplate, vorrei
>che quando inserisco un numero nella prima colonna, nell'altra
>venga eseguita un moltiplicazione tra il dato inserito e un dato
>preso dal db sotto ho messo parte del codice della tabella
>.....
><asp:BoundField DataField="Prezzo" HeaderText="Data fine"
>ReadOnly="True" SortExpression="Prezzo" />
><asp:TemplateField HeaderText="AAA" SortExpression="AAA">
> <EditItemTemplate>
><asp:TextBox ID="TextBox3" runat="server">
> </asp:TextBox>
> </EditItemTemplate>
> </asp:TemplateField>
> <asp:TemplateField HeaderText="BBB">
> <ItemTemplate>
><asp:TextBox ID="TextBox2" runat="server" ReadOnly="True"
>Text='<%# ??? %>'></asp:TextBox>
> </ItemTemplate>
> </asp:TemplateField>
>
>dove ho messo i ??? non so cosa inserire dovrei in pratica fare
>AAA*Prezzo
Dovresti farti un hidden per tenere il valore di moltiplicazione, poi con l'uso del javascript provvedere alla moltiplicazione dei due campi sull'user input nella textbox della prima colonna:
<asp:HiddenField ID="hidValore" Value='<%# DataBinder.Eval(Container.DataItem, "Prezzo") %>' runat="server" />
<asp:TextBox ID="TextBox2" runat="server" ReadOnly="True" />
poi aggiungi lato codice l'attributo l'evento javascript OnKeyDown (penso sia questo, ma nn sono sicuro) e ci metti il codice javascript per fare la moltiplicazione del campo hidden con il testo digitato, tipo:
String.Format("document.getElementById('{0}').Value = document.getElementById('{1}').value * document.getElementById('{2}').value", TextBox2.ClientID, hidValore.ClientID, TextBox3.ClientID)
Per trovare i vari controlli all'interno della griglia devi utilizzare il FindControl all'interno dell'evento RowDataBound della stessa (e.Row.FindControl), ed attenzione a prendere in considerazione solo le righe "DataRow", utilizzando l'oggetto eventargs "e" (if e.Row.RowType = DataControlRowType.DataRow then).
Ho cercato di darti una visione generale delle cose, qualche spunto per partire, le soluzioni sono molteplici. Spero di esserti stato utille.
>
>Grazie
Prego =)
Enjoy It
http://blogs.dotnethell.it/Regulator/
batti
Profilo
| Newbie
19
messaggi | Data Invio:
mer 12 dic 2007 - 17:36
Ok grazie sei stato utile, ho fatto una cosa simile :
Protected Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim textbox As TextBox = CType(sender, TextBox)
Dim row As GridViewRow = CType(textbox.NamingContainer, GridViewRow)
GridView1.Rows(row.RowIndex).Cells(9).Text = CInt(textbox.Text) * CDbl(GridView1.Rows(row.RowIndex).Cells(3).Text)
GridView1.Rows(row.RowIndex + 1).Cells(8).Focus()
End Sub
dove cells(9) è il psoto dove voglio mettere il risultato e cells(8) e cells(3) i valori che devo moltiplicare
Ciao
0v3rCl0ck
Profilo
| Guru
1.120
messaggi | Data Invio:
mer 12 dic 2007 - 18:14
Si, bravo
così la fai fare lato server! E poi mettendo un poco di AJAX puoi anche fare in modo che la pagina non si ricarichi tutte le volte che modifichi la textbox.
http://blogs.dotnethell.it/Regulator/
batti
Profilo
| Newbie
19
messaggi | Data Invio:
mer 12 dic 2007 - 18:35
Questo magari me lo potresti spiegare, come faccio a non farla ricaricare?
Perchè devo ricaricare tutte le volte un migliaio di record e diventa un pò pesante....
0v3rCl0ck
Profilo
| Guru
1.120
messaggi | Data Invio:
mer 12 dic 2007 - 18:49
>Questo magari me lo potresti spiegare, come faccio a non farla
>ricaricare?
Devi documentarti sul mondo di AJAX, ci sono tante cose da dire, ma prima devi provare ad affrontare il mondo leggendo la documentazione e cercando di capire a cosa server AJAX.
Vai su:
http://ajax.asp.net/
>Perchè devo ricaricare tutte le volte un migliaio di record e
>diventa un pò pesante....
Magari pensa anche alla possibilità di paginare i dati con la paginazione nativa di sql 2005 e gli strumenti a disposizione di ASP.NET 2.0 come l'objectdatasource o il sqldatasource.
http://blogs.dotnethell.it/Regulator/
batti
Profilo
| Newbie
19
messaggi | Data Invio:
mer 12 dic 2007 - 18:52
la paginazione sarebbe una cosa furba ma il risultato delle moltiplicazioni non voglio salvarlo in un db e quando cambio pagina perdo i dati inseriti.....
Torna su
Stanze Forum
Elenco Threads
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 !