Problema su recupero dati da Gridview

mercoledì 22 aprile 2009 - 12.50

Gemini Profilo | Expert

Ciao a tutti,
ho un gridView e al click sul tasto salva voglio recupera i dati di ogni riga.
Ho fatto in questo modo:

foreach (GridViewRow row in grwServizi.Rows)
{
CheckBox check = (CheckBox)row.Cells[0].FindControl("ckServizio");

if (check.Checked)
{
string codice_articolo = (String)(grwServizi.DataKeys[row.RowIndex].Values[0].ToString());
HiddenField hdIdCosto = (HiddenField)row.Cells[0].FindControl("hdIdCosto");
TextBox txtNServizio = (TextBox)row.Cells[0].FindControl("txtNServizio");
TextBox txtDurata = (TextBox)row.Cells[0].FindControl("txtDurata");

La ChechBox mi restituisce true o false, mentre hdIdCosto, txtNServizio e txtDurata perdono il valore che inserisco e restituiscono i valori che ho messo come default nella pagina aspx.
Come mai?
Grazie mille

paoval72 Profilo | Senior Member

Ciao, puoi postare un po' di codice e l'html (almeno del gridview)?

PV

Gemini Profilo | Expert

Ciao,
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra


Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Il GridView viene caricato al load della pagina e al rowdatabound assegno i dati ai campi del gridview.
Ho notato che quando clicco su salva, anche se le checkbox sono selezionate, mi restituisce false.
Se poi riseleziono le checkbox e clicco su salva, mi dice che sono selezionate.
Non capisco come fare.

paoval72 Profilo | Senior Member

Forse ci sono. Scusa, ma ero in viaggio per casa. Non avendo il page_load sotto il naso posso solo teorizzare, ma potrebbe mancare la condizione
if (!IsPostBack)
>
In pratica, quando scateni l'evento onclick, parte il postback della pagina, che viene ricaricata a partire dal page_load: se non escludi il bind dei dati (che va incluso nella condizione qui sopra), questi verranno riassociati dalla source originale, restando sempre gli stessi.
Se ancora non funziona, posta il codice del page_load, che vediamo.
Ciao,
PV

Gemini Profilo | Expert

Ciao,
questo è il Page_Load

protected void Page_Load(object sender, EventArgs e)
{
if (User.Identity.IsAuthenticated && User.IsInRole("admin"))
{
if (!Page.IsPostBack)
{
CaricaServizi();
}
}
}

void CaricaServizi()
{
grwServizi.DataSource = clsListino.Servizi();
grwServizi.DataBind();
}
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5