質問

私には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();
        }


    }

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

役に立ちましたか?

解決

私の推測では、あなたはあなたの間で混乱していると思います documentsBindingSource そしてあなたの dataRepeater.

あなたが視覚的に「見る」のはDatarepeaterであり、あなたが「得る」ものは documentsBindingSource.Current (あなたが存在として取得すること SelectedRowView)
常に0インデックスに設定されます。これは、あまりにもコモンのWinformsコントロールトラップです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top