Ho una listview, il cui codice è:
codice:
<asp:ListView ID="ListView1" runat="server" DataKeyNames="IdPostIt" DataSourceID="SqlDataSource1">
<ItemTemplate>
<span style="color:White; font-weight:bold">Nome e cognome:</span>
<asp:Label ID="Nome_e_cognomeLabel" runat="server" Text='<%# Eval("Nome_e_cognome") %>' />
<span style="color:White; font-weight:bold">E-mail:</span>
<asp:Label ID="EmailLabel" runat="server" Text='<%# Eval("Email") %>' />
<span style="color:White; font-weight:bold">Corso di laurea:</span>
<asp:Label ID="Corso_di_laureaLabel" runat="server" Text='<%# Eval("Corso_di_laurea") %>' />
<span style="color:White; font-weight:bold">Oggetto:</span>
<asp:Label ID="OggettoLabel" runat="server" Text='<%# Eval("Oggetto") %>' />
<span style="color:White; font-weight:bold">Messaggio:</span>
<asp:Label ID="MessaggioLabel" runat="server" Text='<%# Eval("Messaggio") %>' />
<asp:Button ID="DeleteButton" runat="server" CommandName="Delete" Text="Elimina post-it" />
</span>
</ItemTemplate>
<EmptyDataTemplate>
<span style=" text-align:center; color:White; font-weight:bold">Non sono presenti post-it in bacheca.</span>
</EmptyDataTemplate>
<LayoutTemplate>
<div ID="itemPlaceholderContainer" runat="server" style="">
<span ID="itemPlaceholder" runat="server" />
</div>
<div style="">
</div>
</LayoutTemplate>
<ItemSeparatorTemplate>
<hr />
</ItemSeparatorTemplate>
</asp:ListView>
La sorgente dati è definita in questo modo:
codice:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConflictDetection="CompareAllValues"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
DeleteCommand="DELETE FROM [PostIt] WHERE [IdPostIt] = @original_IdPostIt AND [Nome_e_cognome] = @original_Nome_e_cognome AND [Email] = @original_Email AND [Corso_di_laurea] = @original_Corso_di_laurea AND [Oggetto] = @original_Oggetto AND [Messaggio] = @original_Messaggio"
OldValuesParameterFormatString="original_{0}"
SelectCommand="SELECT * FROM [PostIt] ORDER BY [IdPostIt] DESC"
UpdateCommand="UPDATE [PostIt] SET [Nome_e_cognome] = @Nome_e_cognome, [Email] = @Email, [Corso_di_laurea] = @Corso_di_laurea, [Oggetto] = @Oggetto, [Messaggio] = @Messaggio WHERE [IdPostIt] = @original_IdPostIt AND [Nome_e_cognome] = @original_Nome_e_cognome AND [Email] = @original_Email AND [Corso_di_laurea] = @original_Corso_di_laurea AND [Oggetto] = @original_Oggetto AND [Messaggio] = @original_Messaggio">
<DeleteParameters>
<asp:Parameter Name="original_IdPostIt" Type="Int32" />
<asp:Parameter Name="original_Nome_e_cognome" Type="String" />
<asp:Parameter Name="original_Email" Type="String" />
<asp:Parameter Name="original_Corso_di_laurea" Type="String" />
<asp:Parameter Name="original_Oggetto" Type="String" />
<asp:Parameter Name="original_Messaggio" Type="String" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Nome_e_cognome" Type="String" />
<asp:Parameter Name="Email" Type="String" />
<asp:Parameter Name="Corso_di_laurea" Type="String" />
<asp:Parameter Name="Oggetto" Type="String" />
<asp:Parameter Name="Messaggio" Type="String" />
<asp:Parameter Name="original_IdPostIt" Type="Int32" />
<asp:Parameter Name="original_Nome_e_cognome" Type="String" />
<asp:Parameter Name="original_Email" Type="String" />
<asp:Parameter Name="original_Corso_di_laurea" Type="String" />
<asp:Parameter Name="original_Oggetto" Type="String" />
<asp:Parameter Name="original_Messaggio" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
Quando clicco sul pulsante per eliminare un record mi dà il seguenteerrore:
Si è specificato che il comando elimina confronta tutti i valori su SqlDataSource 'SqlDataSource1', ma il dizionario passato per values è vuoto. Passare un dizionario valido per elimina o modificare la modalità in OverwriteChanges.
Modificando ConflictDetection="OverwriteChanges" l'errore non viene mostrato, ma il record non viene eliminato comunque! Stessa cosa se elimino l'opzione ConflictDetection.
Specifico che se sostituisco la listview con un datagrid il problema non si pone.
Sapreste aiutarmi?