0
我的刪除參數有問題。我正在使用一個GridView和一個ObjectDataSource。 我想刪除一行。但是,當我調試時發現CustomerId的值在我的業務邏輯層中始終爲0。刪除一行的參數
這裏是我的代碼
我有兩個刪除參數,Id
和CustomerId
。這些與我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>
這是隱藏文件
當刪除行的代碼,我分配登錄用戶的刪除參數CustomerId
的價值。這一切都有效。我給正確的值給刪除參數。
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();
}
}
通常在我的業務邏輯層,我現在應該得到正確的CustomerId
,但我總是得到0。雖然沒有負荷消費有一個ID。
public int DeleteFavoriteFilmFromUser(int Id, int CustomerId)
{
try
{
return Adapter.DeleteFavoriteFilmFromUser(Id, CustomerId);
}
catch (Exception ex)
{
throw ex;
}
}
我做錯了什麼?
我撰寫建議設置的實際參數值答案,但出於好奇心,你爲ID獲得什麼價值? – bitxwise 2010-11-27 16:20:08
ID是電影的ID。我在BLL中獲得了正確的電影編號。 – Vinzcent 2010-11-27 16:22:06