2011-05-02 131 views
0

我有一个datarepeater和下面的代码只删除第一条记录,无论选择哪一个。我并不完全相信这是使用数据处理器的正确方法,但我找不到更好的解决方案。我需要能够选择任何记录并将其删除。Datarepeater删除只删除最高记录

//delete document 
    private void cmdDeleteDoc_Click(object sender, EventArgs e) 
    { 

     if (this.dataRepeater1.CurrentItemIndex == 0) 
     { 

      //begin reset 
      this.dataRepeater1.BeginResetItemTemplate(); 
      // Delete Row Here 

      DataClasses1DataContext db = new DataClasses1DataContext(); 

      System.Data.DataRowView SelectedRowView; 
      newCityCollectionDataSet.DocumentsRow SelectedRow; 

      SelectedRowView = (System.Data.DataRowView)documentsBindingSource.Current; 
      SelectedRow = (newCityCollectionDataSet.DocumentsRow)SelectedRowView.Row; 


      var matchedDocument = (from c in db.GetTable<Document>() 
            where c.DocIDKey == SelectedRow.DocIDKey 
            select c).SingleOrDefault(); 

      db.Documents.DeleteOnSubmit(matchedDocument); 
      db.SubmitChanges(); 

      LoadCaseNumberKey(matchedDocument.CaseNumberKey, false, "documents"); 
      this.dataRepeater1.EndResetItemTemplate(); 
     } 


    } 

任何帮助将是伟大的!

+0

为什么这行'if(this.dataRepeater1.CurrentItemIndex == 0)'? – 2011-05-02 16:05:12

+0

@Mika那条线不是必须的,你是正确的。那是因为我从另一个必须有当前项目运行的按钮复制它。如果没有记录,我也不希望这样做。 – korrowan 2011-05-02 16:17:02

回答

1

我的猜测是,你的documentsBindingSourcedataRepeater之间有混淆。

你“看见”在视觉上是dataRepeater,而你“得到”,是documentsBindingSource.Current(你检索为SelectedRowView
它总是设置为0索引。这是一个非常常见的Winforms控制陷阱。

+0

谢谢!我实际上通过使用绑定导航器上的删除按钮来修复问题。 – korrowan 2011-05-02 16:18:25

+0

快乐你解决了它..对你有好处! :-) – 2011-05-02 16:21:44