E.NewValues nulli all'evento GridView_RowUpdating con pagina collegata a template
-
venerdì 4 maggio 2012 12:17
Salve a tutti, ho un problema di questo tipo:
ho una pagina collegata a un template, Content.Master. Quest'ultima è collegata a sua volta al template "di default" Site.master.
Nella mia pagina aspx, ho una GridView collegata a un Object Data Source a sua volta collegato a una classe del mio BLL per recuperare/editare i dati. Quando carico la pagina la griglia viene correttamente popolata.
Premo il pulsante di modifica, apporto una modifica e premo Aggiorna.
Quando il codice arriva al GridView Row_Updating, i valori della collection E.NewValues sono vuoti... qualcuno mi sa dire perchè??
Ecco il codice della mia pagina:
<asp:ObjectDataSource ID="ODSIntORD" runat="server"
DataObjectTypeName="RTM37.Core.ObjectModel.DecretoIntercettazioneOrdinaria"
InsertMethod="Insert" MaximumRowsParameterName="totalRows" SelectMethod="LoadAll"
SortParameterName="sortExpression" StartRowIndexParameterName="firstRow"
TypeName="RTM37.BLL.DecretiIntORD" UpdateMethod="Update"
onupdating="ODSIntORD_Updating" OldValuesParameterFormatString="old{0}"
ConflictDetection="CompareAllValues">
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" DataSourceID="ODSIntORD"
onrowupdating="GridView1_RowUpdating" DataKeyNames="ID"
onrowdatabound="GridView1_RowDataBound" ViewStateMode="Enabled"
onrowediting="GridView1_RowEditing">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="pkey"
ReadOnly="True" />
<asp:BoundField DataField="Anno" HeaderText="Anno" SortExpression="anno" />
<asp:BoundField DataField="NumeroOrdine" HeaderText="Num ordine"
SortExpression="numero" ReadOnly="True" />
<asp:BoundField DataField="RGNR_Numero" HeaderText="RGNR numero"
SortExpression="rgnr_num" />
<asp:BoundField DataField="RGNR_Anno" HeaderText="RGNR Anno"
SortExpression="rgnr_anno" />
<asp:BoundField DataField="RGNR_Mod" HeaderText="RGNR Mod"
SortExpression=" rgnr_mod" />
<asp:BoundField DataField="NumeroRegistro_GIP" HeaderText="Num. Registro GIP"
SortExpression="num_registro_gip" />
<asp:BoundField DataField="DataRichiestaPM" DataFormatString="{0:dd\/MM\/yyyy}"
HeaderText="Data Richiesta PM" SortExpression="dt_richiesta_pm" />
<asp:BoundField DataField="DataDecretoAutorizzazioneGiudice"
DataFormatString="{0:dd\/MM\/yyyy}"
HeaderText="Data decreto Aut.Giudice"
SortExpression="dt_decreto_aut_giudice" />
<asp:BoundField DataField="DataDecretoPM" DataFormatString="{0:dd\/MM\/yyyy}"
HeaderText="Data decreto PM" SortExpression="dt_decreto_pm" />
<asp:BoundField DataField="ContenutoProvvGiudice"
HeaderText="Contenuto provv. Giudice"
SortExpression="contenuto_provvedimento_giudice" />
<asp:BoundField DataField="NumeroUtenza" HeaderText="Numero utenza"
SortExpression="num_utenza" />
<asp:BoundField DataField="Intestatario" HeaderText="Intestatario"
SortExpression="intestatario" />
<asp:BoundField DataField="Usuario" HeaderText="Usuario"
SortExpression="usuario" />
<asp:BoundField DataField="DataOraInizio"
HeaderText="Data/Ora inizio" SortExpression="dt_inizio_intercettazione" />
<asp:BoundField DataField="DataOraTermine"
HeaderText="Data/Ora Termine" SortExpression="dt_termine_intercettazione"
ReadOnly="True" />
<asp:BoundField DataField="NumeroNastri" HeaderText="Num. Supporti"
SortExpression="numero_nastri" />
<asp:BoundField DataField="Annotazioni" HeaderText="Annotazioni"
SortExpression="annotazioni" />
<asp:CheckBoxField DataField="IsAutorizzato" HeaderText="Aut."
SortExpression="autorizzazione_intercettazione_ordinaria" />
<asp:CheckBoxField DataField="CessazioneAnticipata"
HeaderText="Cess. Anticipata" SortExpression="cess_anticipata" />
<asp:TemplateField HeaderText="Magistrato" SortExpression="id_magistrato">
<EditItemTemplate>
<asp:DropDownList ID="DropDownList1" runat="server" DataTextField="NominativoMagistrato" DataValueField="ID" ViewStateMode="Enabled" SelectedValue='<%# Bind("Magistrato") %>' DataSourceID="ODSMagistrati">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("Magistrato") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="PG" HeaderText="PG" SortExpression="id_pg" />
<asp:BoundField DataField="Fornitore" HeaderText="Fornitore"
SortExpression="id_fornitore" />
<asp:BoundField DataField="TipoIndagine" HeaderText="TipoIndagine"
SortExpression="id_indagine" />
</Columns>
</asp:GridView>
Al GV_RowUpdating:protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
string s = "";
if ((e.NewValues["DataOraInizio"] != null) && (!String.IsNullOrEmpty(e.NewValues["DataOraInizio"].ToString())))
{
s = e.NewValues["DataOraInizio"].ToString();
e.NewValues["DataOraInizio"] = Convert.ToDateTime(s);
}
if ((e.NewValues["DataOraTermine"] != null) && (!String.IsNullOrEmpty(e.NewValues["DataOraTermine"].ToString())))
{
s = e.NewValues["DataOraTermine"].ToString();
e.NewValues["DataOraTermine"] = Convert.ToDateTime(s);
}
if ((e.NewValues["DataRichiestaPM"] != null) && (!String.IsNullOrEmpty(e.NewValues["DataRichiestaPM"].ToString())))
{
s = e.NewValues["DataRichiestaPM"].ToString();
e.NewValues["DataRichiestaPM"] = Convert.ToDateTime(s);
}
if ((e.NewValues["DataDecretoAutorizzazioneGiudice"] != null) && (!String.IsNullOrEmpty(e.NewValues["DataDecretoAutorizzazioneGiudice"].ToString())))
{
s = e.NewValues["DataDecretoAutorizzazioneGiudice"].ToString();
e.NewValues["DataDecretoAutorizzazioneGiudice"] = Convert.ToDateTime(s);
}
if ((e.NewValues["DataDecretoPM"] != null) && (!String.IsNullOrEmpty(e.NewValues["DataDecretoPM"].ToString())))
{
s = e.NewValues["DataDecretoPM"].ToString();
e.NewValues["DataDecretoPM"] = Convert.ToDateTime(s);
}
//per magistrato
if ((e.NewValues["Magistrato"] != null) && (!String.IsNullOrEmpty(e.NewValues["Magistrato"].ToString())))
{
s = e.NewValues["Magistrato"].ToString();
e.NewValues["Magistrato"] = Convert.ToInt32(s);
}
if (e.OldValues["DataOraInizio"] != null)
{
s = e.OldValues["DataOraInizio"].ToString();
e.OldValues["DataOraInizio"] = Convert.ToDateTime(s);
}
if (e.OldValues["DataOraTermine"] != null)
{
s = e.OldValues["DataOraTermine"].ToString();
e.OldValues["DataOraTermine"] = Convert.ToDateTime(s);
}
if (e.OldValues["DataDecretoPM"] != null)
{
s = e.OldValues["DataDecretoPM"].ToString();
e.OldValues["DataDecretoPM"] = Convert.ToDateTime(s);
}
if (e.OldValues["DataRichiestaPM"] != null)
{
s = e.OldValues["DataRichiestaPM"].ToString();
e.OldValues["DataRichiestaPM"] = Convert.ToDateTime(s);
}
if (e.OldValues["DataDecretoAutorizzazioneGiudice"] != null)
{
s = e.OldValues["DataDecretoAutorizzazioneGiudice"].ToString();
e.OldValues["DataDecretoAutorizzazioneGiudice"] = Convert.ToDateTime(s);
}
if (e.OldValues["Magistrato"] != null)
{
s = e.OldValues["Magistrato"].ToString();
e.OldValues["Magistrato"] = Convert.ToInt32(s);
}
}
La cosa interessante è che se la pagina non è collegata a nessun template l'aggiornamento avviene senza problemi.
Ho provato a fare delle ricerche su google, ho già controllato che EnableViewState sia abilitato a livello di pagina per tt le pagine indicate, inoltre ho provato a recuperare i valori dalle celle tramite il metodo ExtractValuesFromCell della GV ma niente da fare...
i valori nuovi sono tutti nulli, mentre le chiavi e la collection OldValues sono valorizzati.
Qualcuno sa dirmi cosa controllare ancora? Ogni aiuto sarà molto apprezzato !
;)

