0

データリピーターがあり、次のコードは、どちらが選択されているかに関係なく、最初のレコードのみを削除します。これがデータリピーターでそれを行う正しい方法であると完全に確信しているわけではありませんが、より良い解決策を見つけることができませんでした。レコードを選択して削除できるようにする必要があります。

    //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();
        }


    }

どんな助けでも素晴らしいでしょう!

4

1 に答える 1

1

私の推測では、あなたはあなたdocumentsBindingSourceとあなたの間で混同されていますdataRepeater

視覚的に「見る」のはdataRepeaterですが、「取得する」のはdocumentsBindingSource.Current(存在として取得するSelectedRowView
であり、常に0インデックスに設定されます。これは、非常に一般的なWinforms制御トラップです。

于 2011-05-02T16:11:11.577 に答える