2013-12-23 7 views
0

В настоящее время я создаю CRUD-операции для объекта под названием Payment.
Когда вы нажимаете на страницы, например, на стр. 2, и пытаетесь удалить 9-й элемент на странице 2,
, он удалит 9-й элемент на странице 1 для меня.
Вот мой код:ASP.NET удалить элемент в выгружаемом контейнере

protected void btnDelete_Click(object sender, CommandEventArgs e) 
{ 
    int paymentId = Convert.ToInt32(e.CommandArgument.ToString()); 
    try 
    { 
     using (BillingApplicationDataContext dc = new BillingApplicationDataContext()) 
     { 
      BLLPayment bllCorporation = new BLLPayment(dc); 
      bllCorporation.DeletePayment(paymentId); 
     } 
     Response.RedirectToRoute("ViewPaymentsRoute"); 
    } 
    catch 
    { 
     Response.RedirectToRoute("ErrorPageRoute", new { 
      ErrorMsg = "Unable to delete Payment with Id " + 
         paymentId.ToString() + "." }); 
    } 
} 

<asp:ListView ID="lstPayment" runat="server" OnPagePropertiesChanging="lstPayment_PagePropertiesChanging" 
     EnableViewState="false"> 
    <LayoutTemplate> 
     <fieldset> 
      <legend>View Payments</legend> 
       <table cellpadding="0" cellspacing="0"> 
        <tr> 
         <th>Id</th> 
         <th>Corporation</th> 
         <th>Service Contract</th> 
         <th>Payment Date</th> 
         <th>Payment Amount</th> 
        </tr> 
        <asp:PlaceHolder ID="itemPlaceholder" runat="server" /> 
       </table> 
     </fieldset> 
    </LayoutTemplate> 
    <ItemTemplate> 
     <tr> 
      <td><asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Id")%>' EnableViewState="false"/></td> 
        <td><asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "CorpName")%>' EnableViewState="false"/></td> 
        <td><asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "ServiceContractName")%>' EnableViewState="false"/></td> 
        <td><asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PaymentDate")%>' EnableViewState="false" /></td> 
        <td><asp:Label runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Amount")%>' EnableViewState="false" /></td> 
        <td> 
        <%--<asp:Button runat="server" Text="Detail" 
        OnCommand="btnDetail_Click" 
        CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id")%>' EnableViewState="true"/>--%> 
        <asp:Button ID="btnDelete" Text="Delete" runat="server" 
        oncommand='btnDelete_Click' CommandArgument='<%# Eval("Id") %>' 
        OnClientClick="return ConfirmDelete();"/></td> 
       </tr> 
      </ItemTemplate> 
     </asp:ListView> 
     <asp:DataPager ID="dataPager" runat="server" PagedControlID="lstPayment" EnableViewState="true"> 
      <Fields> 
       <asp:NumericPagerField ButtonType="Link" /> 
      </Fields> 
     </asp:DataPager> 
     <asp:Button runat="server" 
     ID="btnNew" 
     oncommand='btnNew_Click' 
     Text="New"/> 

Я думаю, что может быть что-то не так с жизненным циклом страницы, но я не знаю, как отследить.

ответ

0

Почему вы закомментированы

<asp:Button runat="server" Text="Detail" 
       OnCommand="btnDetail_Click" 
       **CommandArgument='<%# DataBinder.Eval(Container.DataItem, "Id")%>'** EnableViewState="true"/> 

Вы пытаетесь извлечь в PaymentID, но вы передаете Id в качестве аргумента команды. Я думаю, что линия выше абсолютно правильная.

Смежные вопросы