10 messaggi dal 17 aprile 2014
Ciao ragazzi,
vs2013 con sqlserver premetto.

Ho un grid view:
<asp:GridView ID="GridView2" runat="server" AllowSorting="True" AutoGenerateColumns="False" Width="169px" AllowPaging="True" CellPadding="4" ForeColor="#333333" GridLines="None" Height="221px">
<AlternatingRowStyle BackColor="White" />
<Columns>
<asp:BoundField DataField="id" HeaderText="id" SortExpression="id" />
<asp:BoundField DataField="nome" HeaderText="nome" SortExpression="nome" />
<asp:BoundField DataField="copie" HeaderText="copie" SortExpression="copie" />

<asp:TemplateField HeaderText="Copie PDV">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtQuantita" Text="0" Width="70"
ToolTip="Digitare le copie arrivate"
onkeypress="return CheckNumericValue(event)">
</asp:TextBox>
</ItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Copie DL">
<ItemTemplate>
<asp:Label ID="Copie" runat="server" Text='<%# Bind("arrivo")%>'
AutoPostBack="false"
Width="40">
</asp:Label>
</ItemTemplate>
</asp:TemplateField>

</Columns>
<EditRowStyle BackColor="#2461BF" />
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#EFF3FB" />
<SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#F5F7FB" />
<SortedAscendingHeaderStyle BackColor="#6D95E1" />
<SortedDescendingCellStyle BackColor="#E9EBEF" />
<SortedDescendingHeaderStyle BackColor="#4870BE" />
</asp:GridView>


poi ho un bottone dove salvo la colonna "txtQuantita" cosi:
Dim tb As TextBox = DirectCast(GridView2.Rows(x).FindControl("txtQuantita"), TextBox)

ma mi restituisce il valore vecchio e non il nuovo che ho scritto.
Dove sbaglio?
Grazie
Emanuele
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Emanuele,
quando clicchi il bottone per aggiornare la riga, la GridView solleverà l'evento RowUpdated, che tu puoi gestire con una Sub. Da lì sarà molto più facile leggere il valore corretto della quantità; non dovrai neanche andarti a trovare il controllo Textbox perché il valore ti verrà fornito come parametro della Sub.

Su MSDN trovi un esempio:
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview.rowupdated(v=vs.110).aspx

Come vedi, la Sub CustomersGridView_RowUpdated ha un parametro e di tipo GridViewUpdatedEventArgs. Questo ha una proprietà NewValues, da cui potrai leggere il valore cercato. Esempio:
e.NewValues("Quantita")


Per far questo, è necessario che la tua TextBox txtQuantita sia in binding con un campo del datasource, così come hai fatto per la label Copie.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.