28 messaggi dal 08 maggio 2015
Salve,
sto creando una pagina web con dentro una GridView la quale in una colonna ha delle TextBox.
Il codice di inserimento TextBox all'interno della lista <Columns> funzionante è questo:
<Columns>
.
.
<asp:TemplateField HeaderText="Qtà Desiderata">
<ItemTemplate>
<asp:TextBox ID="QtaDesiderata" Runat="Server" Width="80%" TextMode="Number" OnTextChanged="QtaDesiderata_TextChanged" />
</ItemTemplate>
<ItemStyle HorizontalAlign="Right" Width="10%" />
</asp:TemplateField>
.
.
</Columns>
Vorrei chiedere se qualcuno sa perché nel codice C# in esecuzione non sente l'evento OnTextChanged che dovrebbe essere generato quando si scrive nella TextBox, cioè, crea il metodo QtaDesiderata_TextChanged ma l'esecutore non ci passa. Ho provato per curiosità gli altri eventi della lista che mi propone Visual Studio 2012 e vengono svolti correttamente.
Devo impostare altri comandi o cosa sbaglio?
Grazie Francesco.
Modificato da FrancescoUnivergomma il 22 maggio 2015 09.17 -
Serve un AutoPostBack=true ma ti sconsiglio di procedere in questo modo dato che coinvolgi il bind della gridview. Se ti servono piccole funzionalità usa direttamente javascript altrimenti utilizza un'altra strada (pulsante in griglia e form fuori dalla griglia)

Ormai programmano tutti... ma la professionalità appartiene a pochi
28 messaggi dal 08 maggio 2015
Grazie, proverò a fare negli altri modi.
Io volevo che la griglia si comportasse come il foglio di excel che già inviavo ai destinatari e funzionava così:
c'arano n colonne di cui solo una era da modificare ed uno specchietto finale di riepilogo con i totali. Tutto fatto con semplici formule in modo che l'utente potesse vedere costantemente il risultato di quello che ordinava.
Saluti, Francesco.
io ti consiglierei di farlo via javascript/jquery. In alternativa puoi fare come hai descritto ma stai attento a non dover eseguire query ad ogni postback (ontextchanged)

Ormai programmano tutti... ma la professionalità appartiene a pochi
28 messaggi dal 08 maggio 2015
Sto provando a fare un javascript che consiste nel moltiplicare il valore del testo scritto con quello di un altra colonna e scriverlo in un altra ancora, ma non so come fare a richiamare la procedura durante la pressione dei tasti e visualizzare il valore modificato.
Mi scuso per la mia impreparazione in campo.
Grazie Francesco.
Modificato da FrancescoUnivergomma il 26 maggio 2015 10.30 -
Ti consiglio di includere jquery nel progetto e usarlo.
Poi devi lavorare sull'html generato. Puoi postare un tr per capire come stai operando?
La parte difficile è considerare che deve funzionare su ogni riga quindi ti conviene operare o attraverso i nomi del controlli o con le direttive di navigazione (next, parent..) per lavorare sugli elementi giusti

Ormai programmano tutti... ma la professionalità appartiene a pochi
28 messaggi dal 08 maggio 2015
Grazie ma ho dovuto cambiare strada.
Ho messo un button a fine riga per fargli fare i calcoli tramite C# nell'evento OnRowCommand="gvGadget_RowCommand", ma non riesco a leggere i valori delle celle. Ho provato a fargli stampare il valore di una cella, mi legge l'indice di riga e mi stampa la scritta "Cella " nel posto giusto ma no il valore, sai il perché?

protected void gvGadget_RowCommand(object sender, GridViewCommandEventArgs e)
{
int index = Convert.ToInt32(e.CommandArgument);

//int riga = Convert.ToInt32(e.CommandArgument);
//string strPunti = gvGadget.Rows[riga].Cells[2].Text;
//string strQta = gvGadget.Rows[riga].Cells[3].Text;
//int valPunti = Convert.ToInt32(strPunti);
//int valQta = Convert.ToInt32(strQta);
//int valMul = valPunti * valQta;
//string strMul = Convert.ToString(valMul);
//gvGadget.Rows[riga].Cells[4].Text = strMul;

GridViewRow selectedRow = gvGadget.Rows[index];
TableCell cella1 = selectedRow.Cells[1];
string valCella1 = cella1.Text;
selectedRow.Cells[4].Text = "Cella " + valCella1;
}
Intanto... potrebbero esserci più command quindi ti consiglio di includere il tuo codice in:
if (e.CommandName == "xxx"){}


Per recuperare del testo ti consiglio di inserirlo in una label e poi operare con:

Label myLbl = (Label)  gvGadget.Rows[riga].FindControl("myLbl");

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.