Eliminare una riga da un DATAGRID ( WINFORM )

mercoledì 16 marzo 2005 - 16.25

dominik Profilo | Newbie

Salve
come è possibile rimuovere una riga da un datagrid premendo un bottone sempre nella stessa form?
vi rinrgrazio

AntCiar Profilo | Expert

la cosa è semplice:

ottieni l'indice della riga selezionata nel datagrid (datagrid1.currentrowindex)

elimini dal datasource della griglia la riga con l'indice precedentemente ottenuto:

datagrid1.datasource.rows(datagrid1.currentrowindex).delete

nota bene: la datagrid ha un picollo difetto. Se fai clic sull'intestazione della colonna, i dati si riordinano in base alla colonna cliccata. Il riordino avviene solo per i dati ma non per gli indici. Ti faccio un esempio:

dati della griglia

COLORE VALORE
Rosso 1000
Giallo 1500
Verde 3200
Blu 4000

se per esempio stai sulla riga del "Blu" e non hai mai cliccato sulle intestazioni di colonna, quando cancelli la riga tramite il codice che ti ho messo sopra, agisci sull'indice di riga id = 3 (ossia la quarta riga)

Se cliccli sull'intestazione di colonna del colore, la griglia si riordina in questo modo

COLORE VALORE
Blu 4000
Giallo 1500
Rosso 1000
Verde 3200

se devi cancellare la riga relativa al record "blu" per istinto ti vai a posizionare sulla prima riga (indice = 0). Se esegui il comando della cancellazione, ti verrà cancellata la riga del "Rosso" perchè è la riga che nella tabella che sta come sorgente al datagrid, ha indice di riga 0.

dominik Profilo | Newbie

esatto, infatti il problema da risolvere è proprio quello
ottenere il sincronismo tra datatable e datagrid nonostante il clik sulla colonna che riordina il datagrid...

come si puo ottenere tramite eventi la colonna di cui si è fatto l'ordinamento?

ma è possibile, essendo il datagrid la vista di un datasource, che l'ordinamento non viene riportato in qualche modo nel datatable?

grazie ancora...

dominik Profilo | Newbie

SOLUZIONE TROVATA!!!!
ovviamente essendo il datagrid una vista del datatable
ho utilizzato la proprietà defaultView del Datatable
che ovviamente è sincronizzata con il datagrid

quindi :
((DataTable)dg.DataSource).DefaultView[dg.CurrentRowIndex].Delete();

risultato ottenuto...
grazie ancora...

zerone72 Profilo | Newbie

Ho seguito questo thread perchè ho lo stesso identico problema, ma date le mie scarsissime competenze in ambito ado.net non riesco ad implementare la soluzione data al problema (sono 3 giorni che mi sono affacciato a questo affascinante mondo).
Vi chiedo se potete darmi una mano a fare in modo che al click di un bottone venga eliminato il record selezionato nella datagrid.
Purtroppo, per lavoro e non per divertimento, DEVO riuscire a fare un programmino che gestisca le prestazioni di ogni lavoratore e i diversi prezzi delle prestazioni (che cambiano nel tempo) delle prestazioni. L'obiettivo finale è generare un file di testo che esporti le prestazioni mensili di ogni lavoratore quantità e valore delle stesse.
Ora mi trovo nel form che gestisce l'anagrafica lavoratori e devo fare in modo che al click su un bottone venga eliminato il lavoratore selezionato nella datagrid.
Ho gestito la modifica del record del lavoratore tramite dataAdapter, ma non riesco a gestire l'eliminzione.
Sto usando quasi esclusivamente la modalità progettazione, dato che ho scarsissime conoscenze del codice .net (vengo da linguaggi procedurali).
Vi sembrerà una schiocchezza e un argomento trattato più volte. Ma per chi si affaccia per la prima volta a questo mondo vi assicuro che non è facile per niente.

GRAZIE A TUTTI IN ANTICIPO
Ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5