Updating gridview non funziona

lunedì 26 gennaio 2009 - 09.18

patrizia84 Profilo | Junior Member

Ciao…
Ho un grid view associato ad un data source.
Voglio gestire l’evento updating del grid view ma ho visto che proprio non entra nella gestione dell’evento.
Vi posto un po’ di codice:

file.aspx



<asp:GridView id="gridFotoInserite" runat="server" AutoGenerateColumns="false"

CssClass="GW2"
HeaderStyle-CssClass="GW2_header"
RowStyle-CssClass="GW2_item"
ShowFooter="false"
OnRowEditing="gridFotoInserite_RowEditing"
OnRowCancelingEdit="gridFotoInserite_RowCancelingEdit"
OnRowDeleting="gridFotoInserite_RowDeleting"
EditRowStyle-CssClass="GW2_item"
onrowupdated="gridFotoInserite_RowUpdated"
onrowupdating="gridFotoInserite_RowUpdating" ondatabound="gridFotoInserite_DataBound"


>


<Columns>


<asp:TemplateField HeaderText="Descrizione">
<ItemTemplate>
<asp:Label ID="lbl_Descrizione" Text='<% #Eval("Descrizione") %>' runat="server"></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txt_Descrizione" Text='<% #Eval("Descrizione") %>' runat="server"></asp:TextBox>
</EditItemTemplate>

</asp:TemplateField>



<asp:CommandField HeaderText="Edit" ShowEditButton="True">
<FooterStyle Width="80px" />
<HeaderStyle Width="80px" />
<ItemStyle Width="80px" ForeColor="Gray"/>
</asp:CommandField>
<asp:CommandField HeaderText="Delete" ShowDeleteButton="True">
<FooterStyle Width="80px" />
<HeaderStyle Width="80px" />
<ItemStyle Width="80px" ForeColor="Gray"/>
</asp:CommandField>
</Columns>
<FooterStyle BorderColor="Brown" />
</asp:GridView>



Fole.aspx.cs


protected void gridFotoInserite_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
try
{

string newDesc = ((TextBox)gridFotoInserite.Rows[e.RowIndex].FindControl("txt_Descrizione")).ToString();

//riprendo il dataset memorizzato nella sessione

DataSet dataS = (DataSet)Session["dataSetRisorsa"];
DataTable dT = dataS.Tables[0];
DataRow riga;
try
{
riga = dT.Rows[e.RowIndex];
riga["Descrizione"] = newDesc;

}
catch (Exception ex)
{
throw ex;
}
Session["dataSetRisorsa"] = dataS;

}
catch ()
{

}

gridFotoInserite.EditIndex = -1;
}


Il codice mi sembra giusto.
Sapete aiutarmi?
Grazie…


Ragazzi ho risolto gestendo la modifica dall'evento RowCommand ma comunque se avete qualche idea sul problema che avevo sono qui...
Grazie..
A presto...

paoval72 Profilo | Senior Member

Ciao, ho provato ad usare il codice (lato client e lato server) che hai postato e a me funziona. Puoi provare a ri-registrare l'evento di Updating.
Solo alcune note sul tuo codice, che magari hai già corretto o ti sono sfuggite:
Così prendi il tipo di controllo e non il testo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
restituisce "System.Web.UI.WebControls.TextBox". Se vuoi il testo, ovviamente è:
string newDesc = ((TextBox)gridFotoInserite.Rows[e.RowIndex].FindControl("txt_Descrizione")).Text;
Dopo avere aggiornato il tuo dataset, va ri-bindato, altrimenti le modifiche non vengono prese:
Session["dataSetRisorsa"] = dataS; gridFotoInserite.EditIndex = -1; gridFotoInserite.DataSource = dataS; gridFotoInserite.DataBind();

Il catch va senza le parentesi, se non lancia una Exception:
catch {}
Infine, come anticipato nel codice sopra, l'index va riportato a -1 prima del bind.

Spero di esserti stato d'aiuto.
Un saluto,
PV

patrizia84 Profilo | Junior Member

Ciao..Le modifiche che mi hai suggerito le avevo già fatte..Grazie comunque..
Non so,ho provato a riscrivere l'uploading ma nun funziona..
Vabbè..ho risolto in quell'altro modo..
Grazie mille ancora.
A presto..

paoval72 Profilo | Senior Member

Ok, perfetto!
A presto,
PV
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