Ich habe ein Problem mit meinem delete-Parameter. Ich verwende eine GridView und eine ObjectDataSource. Und ich möchte eine Zeile löschen. Aber wenn ich debugge, sehen Sie, dass der Wert von CustomerId immer 0 in meinem Business Logic Layer ist.Parameter zum Löschen einer Zeile
Hier ist mein Code
Ich habe zwei Lösch Parameter, Id
und CustomerId
. Dies sind die gleichen Namen wie die in meinem 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>
Dies ist in der Code-behind-Datei
Wenn eine Zeile zu löschen, ordne ich den Wert des CustomerId
in Kunden zum Löschen Parameter protokolliert. Das alles funktioniert. Ich gebe dem Löschparameter den richtigen Wert.
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();
}
}
Normalerweise meine Business-Logik-Schicht in, sollte ich jetzt die richtige CustomerId
, bekommen aber ich bekomme immer 0. Während keine Costumer diese ID hat.
public int DeleteFavoriteFilmFromUser(int Id, int CustomerId)
{
try
{
return Adapter.DeleteFavoriteFilmFromUser(Id, CustomerId);
}
catch (Exception ex)
{
throw ex;
}
}
Was mache ich falsch?
Ich Komponieren einer vorgeschlagenen Antwort, aber aus Neugier, welchen Wert bekommen Sie für ID? – bitxwise
ID ist die ID des Films. Ich bekomme die richtige ID des Films in meinem BLL. – Vinzcent