Pregunta

Tengo un DataPeater y el siguiente código solo elimina el primer registro, independientemente de cuál sea seleccionado. No estoy completamente convencido de que esta es la forma correcta de hacerlo con un datAREPETER, pero no pude encontrar una mejor solución. Necesito poder seleccionar cualquier registro y eliminarlo.

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


    }

¡Cualquier ayuda sería genial!.

¿Fue útil?

Solución

Supongo que estás mezclado entre tu documentsBindingSource y tu dataRepeater.

Lo que "ves" visualmente es el dataPeater, mientras que lo que "obtienes", es el documentsBindingSource.Current (que recuperas como ser SelectedRowView)
que siempre está configurado en 0 índice. Esta es una trampa de control de WinForms demasiado común.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top