2012-11-20 11 views
5

Stavo solo testando se otterrò il valore modificato dalla casella di testo durante l'aggiornamento senza fortuna. Non riesco a ottenere il nuovo valore. Che cosa sto facendo di sbagliato? Ho provato molte cose. E questo è l'ultimo. Come posso ottenere il nuovo valore aggiornato per la mia etichetta? Quando faccio clic su Modifica sulla griglia e cambio il valore della casella di testo e faccio clic su Aggiorna, l'etichetta mostrerà solo il valore originale della casella di testo.GridView RowUpdating non può ottenere i nuovi valori

protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
{ 
    GridView1.EditIndex = e.NewEditIndex; 

    bindgrid(); 
} 

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    GridViewRow row = GridView1.Rows[e.RowIndex]; 
    Label1.Text = ((TextBox)(GridView1.Rows[GridView1.EditIndex]).Cells[2].Controls[0]).Text; 

    GridView1.EditIndex = -1; 
    bindgrid(); 
} 
+0

Hai eseguito il debug del codice, che valore ottiene in Label1? –

+0

Si legge lì ... "Quando faccio clic su modifica sulla griglia e cambio il valore della casella di testo e faccio clic su Aggiorna l'etichetta mostrerà solo il valore originale della casella di testo." Quindi diciamo che c'è "test" nella textbox in origine e poi lo modifico in "asd" e poi faccio clic su update. "test" apparirà in etichetta non "asd" come vorrei. – Firze

+0

è necessario salvare il valore nel database e collegare nuovamente la griglia alla nuova origine dati –

risposta

16

Penso che quando si preme collegamento per l'aggiornamento Gridview è vincolante ancora prima di prendere il nuovo valore. Devi utilizzare if(!IsPostBack) prima del GridView.DataBind().

+0

Oh sì, questo è tutto. Ho subito capito che era così quando ho visto la tua risposta. Questo era di nuovo uno di quei problemi a cui non avevo nemmeno pensato prima che me ne fossi accennato. – Firze

0

Perché stavi chiamando GridView1.Rows[GridView1.EditIndex] di nuovo quando hai già la riga corrente? Prova Usa riga che già recuperato

GridViewRow row = GridView1.Rows[e.RowIndex]; 
Label1.Text = ((TextBox) row.Cells[2].Controls[0]).Text; 

Read more on this

0

basta impostare la proprietà su false enableViewState di GridView è possibile ottenere nuovo valore.

<asp:GridView runat="server" EnableViewState="False" ID="GridView6" AutoGenerateColumns="false" Width="100%" 
       EmptyDataText="No Record Found" AllowPaging="false" PageSize="10" OnPageIndexChanging="ChangePage" 
       OnRowCommand="RowCommand" OnRowDataBound="GridView6_RowDataBound" > 
+0

Sembra più un commento che una risposta. Sarai in grado di commentare gli altri post quando ottieni una reputazione sufficiente. –

+0

Ho rivisto la mia risposta per sembrare più una risposta che un commento. –

Problemi correlati