J'ai un problème avec mon paramètre de suppression. J'utilise un GridView et un ObjectDataSource. Et je voudrais supprimer une ligne. Mais quand je débogue, je vois que la valeur de CustomerId est toujours 0 dans ma couche logique métier.Paramètre pour la suppression d'une ligne
Voici mon code
J'ai deux paramètres de suppression, Id
et CustomerId
. Ce sont les mêmes noms que ceux de ma BLL.
<asp:GridView DataKeyNames="Id" ID="gvFavoriteMovies" DataSourceID="odsFavoriteMovies" AutoGenerateColumns="False"
runat="server">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lblTitel" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Title")%>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="odsFavoriteFilm" runat="server"
TypeName="MovieMonstrDataLayer.bll.BLLMovies"
SelectMethod="GetFavoriteMoviesFromUser"
DeleteMethod="DeleteFavoriteMoviesFromUser"
onobjectcreating="odsFavoriteFilm_ObjectCreating"
ondeleting="odsFavoriteFilm_Deleting">
<DeleteParameters>
<asp:Parameter Name="Id" DbType="Int32" Direction="Input" />
<asp:Parameter Name="CustomerId" DbType="Int32" Direction="Input" />
</DeleteParameters>
<SelectParameters>
<asp:Parameter DbType="Int32" Direction="Input" Name="CustomerId" />
</SelectParameters>
</asp:ObjectDataSource>
Ceci est dans le code derrière le fichier
Lors de la suppression d'une ligne, j'assignez la valeur du client connecté au paramètre CustomerId
Supprimer. Tout cela fonctionne. Je donne la bonne valeur au paramètre delete.
protected void odsFavoriteFilm_Deleting(object sender, ObjectDataSourceMethodEventArgs e)
{
if (Context.User.Identity.IsAuthenticated)
{
this.odsFavoriteFilm.DeleteParameters["CustomerId"].DefaultValue = ((MovieMonstrIdentity)Context.User.Identity).Customer.Id.ToString();
this.odsFavoriteFilm.DataBind();
}
}
Normalement dans ma couche logique métier, je devrais maintenant le CustomerId
droit, mais je suis toujours 0. Bien qu'aucun Costumer n'a qu'une pièce d'identité.
public int DeleteFavoriteFilmFromUser(int Id, int CustomerId)
{
try
{
return Adapter.DeleteFavoriteFilmFromUser(Id, CustomerId);
}
catch (Exception ex)
{
throw ex;
}
}
Qu'est-ce que je fais mal?
Je compose un projet répondre, mais par curiosité, quelle valeur obtenez-vous pour l'identification? – bitxwise
ID est l'ID du film. Je reçois le bon ID du film dans mon BLL. – Vinzcent