2016-08-25 77 views
-2

我正在使用以下代码从列表中获取项目(工单)并根据发票号码进行删除。但它会删除列表中的第一个项目。无法删除指定的项目

private void btnTktDelete_Click(object sender, EventArgs e) 
    { 
     uOp = true; 
     if (MainListBox.SelectedIndex != -1) 
     { 
      Ticket tkt = (Ticket)MainListBox.SelectedItem;  

      List<Ticket> tlist = GetList<Ticket>(tklp); 
      Ticket TheTicket = tlist.Find(x => x.InvoiceNumber == tkt.InvoiceNumber); 
      List<Transaction> tranlist = GetList<Transaction>(trlp); 


      if (TheTicket != null) 
      { 
       Int32 number = TheTicket.InvoiceNumber; 
       tlist.RemoveAll(x=>x.InvoiceNumber == number); 
       tranlist.RemoveAll(x => x.InvoiceNumber == number); 
       SaveList(trlp, tranlist); 
       SaveList(tklp, tlist); 
      } 

     // MainListBox.DataSource = null; 
     // MainListBox.DataSource = GetList<Ticket>(tklp); 
     // dgvExport.DataSource = null; 
     // dgvExport.DataSource = GetList<Ticket>(tklp); 

      uOp = false; 

     } 
    } 
+1

只有你可以调试这个,把断点和监控数据的变量。 – Shaharyar

回答

0

您的代码建议多张票可以有相同的发票号。这对我来说并不直观 - 应该是独一无二的。获取列表的最简单方法是在字段中存储对其的引用。

List<Ticket> allTickets = ... 

private void btnTktDelete_Click(object sender, EventArgs e) 
{ 
    Ticket ticketToRemove = (Ticket)MainListBox.SelectedItem; // need cast? 
    allTickets.Remove(ticketToRemove); 
    // save... 
}