Domanda

Quando si aggiunge un EditItemTemplate di una certa complessità (campi multipli in un modello) e quindi si analizzano i controlli dall'evento RowUpdating, i controlli inseriti manualmente dall'utente non hanno valori. La mia ipotesi è che qualcosa sta succedendo quando i dati sono associati, ma ho avuto casi in cui semplicemente l'aggiunta e l'attribuzione a un controllo in codebehind ha iniziato il comportamento e la rimozione di quel codice ha fatto funzionare il codice. Come soluzione, posso richiedere (controlname.UniqueId) per ottenere il suo valore, ma è piuttosto un trucco.

Modifica Quando accedo al valore in questo modo

TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox;

viene trovata la casella di testo, ma .Text non è l'input dell'utente.

È stato utile?

Soluzione

Hai disattivato ViewState? Hai aggiunto il controllo a livello di codice nel modello? In tal caso, li hai creati nella fase corretta?

Altri suggerimenti

Dovresti essere in grado di utilizzare GridViewUpdateEventArgs per recuperare il valore immesso, ad esempio:

TextBox txtValue = gvwSettings.SelectedRow.FindControl("txtValue") as TextBox;

Ho usato quella sintassi prima e funziona come un incantesimo.

Bind post-back spostato in Page_Init

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top