Вопрос

У меня есть 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