28 messaggi dal 08 maggio 2015
Le label adesso riesco a leggerle, grazie.
Per la casella di testo che l'utente inserisce ho modificato in:

TextBox txtQta = (TextBox)gvGadget.Rows[riga].FindControl("txtQDes");
string strQta = txtQta.Text;

con esito negativo, intanto ti ringrazio moltissimo.
Perché negativo? Sicuro che l'id del controllo sia giusto?

Ormai programmano tutti... ma la professionalità appartiene a pochi
28 messaggi dal 08 maggio 2015
Credo di Si, questa è la parte di costruzione della griglia:

<p>
<asp:GridView ID="gvGadget" runat="server" CellPadding="4"
EmptyDataText="<br /><br /><br /><br /><br />Nessun record trovato"
ForeColor="#333333" CssClass="gridCust" Width="100%" PageSize="15"
AutoGenerateColumns="False" RowHeaderColumn="ItemNo" CellSpacing="2"
Font-Size="Small" AllowSorting="True" Height="164px"
OnRowCommand="gvGadget_RowCommand" >
<Columns>
.
.
<asp:TemplateField HeaderText="Costo Punti">
<EditItemTemplate>
<asp:TextBox ID="txtCPt" runat="server" Text='<%# Bind("[Costo Punti]") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblCPt" runat="server" Text='<%# Bind("[Costo Punti]") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
.
<asp:TemplateField HeaderText="Qtà Desiderata">
<ItemTemplate>
<asp:TextBox ID="txtQDes" runat="Server" Width="80%" TextMode="Number" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
.
<asp:TemplateField HeaderText="Punti Ordinati">
<EditItemTemplate>
<asp:TextBox ID="txtPt" runat="server"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lblPt" runat="server"></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>

.
.
<asp:ButtonField CommandName="OK" Text="OK" ButtonType="Button" />
.
.
</Columns>
</asp:GridView>
</p>

e questo è il codice C#:

protected void gvGadget_RowCommand(object sender, GridViewCommandEventArgs e)
{
int riga = Convert.ToInt32(e.CommandArgument);
Label lblPunti = (Label)gvGadget.Rows[riga].FindControl("lblCPt");
TextBox txtQta = (TextBox)gvGadget.Rows[riga].FindControl("txtQDes");
int valPunti = Convert.ToInt32(lblPunti.Text);
int valQta = Convert.ToInt32(txtQta.Text);
int valMul = valPunti * valQta;
string strMul = Convert.ToString(valMul);
gvGadget.Rows[riga].Cells[4].Text = strMul;
}

alla pressione del tasto OK anche se scrivo un valore nella casella di testo dal debug risulta txtQta.Text="" e genera un errore. Secondo te cosa è sbagliato?
Grazie.
Intanto l'errore deriva da:
Convert.ToInt32(txtQta.Text); se il Text è vuoto quindi dovresti inserire un if (!String.IsNullOrEmpty()) di sicurezza.
Mi viene il dubbio che se usi EditItemTEmplate devi poi usare OnRowUpdating/Updated
Io in genere utilizzo solo l'ItemTemplate e mostro alternativamente la Label o il Textbox

Ormai programmano tutti... ma la professionalità appartiene a pochi
28 messaggi dal 08 maggio 2015
Ho provato con la generazione GRIGLIA così:

<p>
<asp:GridView ID="gvGadget" runat="server" CellPadding="4"
EmptyDataText="<br /><br /><br /><br /><br />Nessun record trovato"
ForeColor="#333333" CssClass="gridCust" Width="100%" PageSize="15"
AutoGenerateColumns="False" RowHeaderColumn="ItemNo" CellSpacing="2"
Font-Size="Small" AllowSorting="True" Height="164px"
OnRowCommand="gvGadget_RowCommand" >
<FooterStyle BackColor="#F7DFB5" ForeColor="#8C4510" />
<HeaderStyle BackColor="#A55129" Font-Bold="True" ForeColor="White" />
<PagerStyle ForeColor="#8C4510" HorizontalAlign="Center" />
<RowStyle BackColor="#FFF7E7" ForeColor="#8C4510" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="White" />
<SortedAscendingCellStyle BackColor="#FFF1D4" />
<SortedAscendingHeaderStyle BackColor="#B95C30" />
<SortedDescendingCellStyle BackColor="#F1E5CE" />
<SortedDescendingHeaderStyle BackColor="#93451F" />
<Columns>
<asp:TemplateField HeaderText="Cod Gdt">
<ItemTemplate>
<asp:Label ID="lblCod" runat="server" Text='<%# Bind("Codice") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" Width="10%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Descrizione Gadget">
<ItemTemplate>
<asp:Label ID="lblDes" runat="server" Text='<%# Bind("Descrizione") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Left" Width="45%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Costo Punti">
<ItemTemplate>
<asp:Label ID="lblCPt" runat="server" Text='<%# Bind("[Costo Punti]") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Qtà Desiderata">
<ItemTemplate>
<asp:TextBox ID="txtQDes" runat="Server" Width="80%" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Punti Ordinati">
<ItemTemplate>
<asp:Label ID="lblPt" runat="server"></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Giacenza">
<ItemTemplate>
<asp:Label ID="lblGia" runat="server" Text='<%# Bind("Giacenza") %>'></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
<asp:TemplateField HeaderText="Rimananza">
<ItemTemplate>
<asp:Label ID="lblRim" runat="server"></asp:Label>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
<asp:ButtonField CommandName="OK" Text="OK" ButtonType="Button" />
</Columns>
</asp:GridView>
</p>

e codice C#:

protected void gvGadget_RowCommand(object sender, GridViewCommandEventArgs e)
{
int riga = Convert.ToInt32(e.CommandArgument);
Label lblPunti = (Label)gvGadget.Rows[riga].FindControl("lblCPt");
TextBox txtQta = (TextBox)gvGadget.Rows[riga].FindControl("txtQDes");
int valPunti = Convert.ToInt32("0" + lblPunti.Text);
int valQta = Convert.ToInt32("0" + txtQta.Text);
int valMul = valPunti * valQta;
string strMul = Convert.ToString(valMul);
gvGadget.Rows[riga].Cells[4].Text = strMul;
}

ma la txtQta.Text risulta sempre vuota, si cambio quel Convert.ToInt32("0" + txtQta.Text) ed inserisco un if (!String.IsNullOrEmpty()). Provo a fare con la EditItemTemplate, speriamo che funzioni perché poi devo fare la scrittura della griglia in un db in modo da non perdere i calcoli fatti via via. Ho trovato i vostri Tutorial (http://tutorials.aspitalia.com/ASP.NET/), spero di poterli studiare presto. Se ti venisse in mente qualche altra prova da fare me la puoi indicare per favore?
Grazie.
28 messaggi dal 08 maggio 2015
Ho provato ad utilizzare l'evento OnRowUpdating/Updated ed usato l'EditItemTEmplate ma non riesco a farli funzionare ed ho rimesso il codice come nell'ultimo post.
28 messaggi dal 08 maggio 2015
Ho provato ad assegnare un valore alla textbox:

<ItemTEmplate>
<asp:TextBox ID="txtQDes" runat="Server" Width="80%" TextMode="Number" Text="3" />
</ItemTEmplate>

Ma il codice:

TextBox txtQta = (TextBox)gvGadget.Rows[riga].FindControl("txtQDes");
string strQta = txtQta.Text;

Anche se cambio il valore lui mi considera sempre "3".
Mi potete aiutare?
Grazie Francesco.
Se sposti il textbox nell'itemtemplate la proprietà Text è valorizzata?

Ormai programmano tutti... ma la professionalità appartiene a pochi

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.