ASP.NET删除分页容器中的项目

时间:2013-12-23 08:55:46

标签: asp.net

我目前正在一个名为Payment的实体上构建CRUD操作 何时单击页面,例如第2页,并尝试删除第2页上的第9项,
它将删除第1页上的第9项 这是我的代码:

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"/>

我认为页面生命周期可能有问题,但我不知道如何跟踪。

1 个答案:

答案 0 :(得分:0)

为什么你注释掉了

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

您正在尝试检索付款ID但您正在传递Id作为命令参数。我认为上面这一行绝对正确。