Datarepeater删除仅删除顶级记录

时间:2011-05-02 14:00:50

标签: c# datarepeater

我有一个datarepeater,以下代码只会删除FIRST记录,无论选择哪一条记录。我并不完全相信这是使用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();
        }


    }

任何帮助都会很棒!。

1 个答案:

答案 0 :(得分:1)

我的猜测是,您的documentsBindingSourcedataRepeater之间存在混淆 您在视觉上“看到”的是dataRepeater,而您“获得”的是documentsBindingSource.Current(您检索为SelectedRowView),它始终设置为0索引。这是一个非常常见的Winforms控制陷阱。