2011-05-02 109 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