Datarepeater Eliminar solo eliminar el registro superior
-
27-10-2019 - |
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!.
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