Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
Ricavare la riga selezionata in una DataGrid
mercoledì 18 febbraio 2004 - 14.24
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
mer 18 feb 2004 - 14:24
Ciao Gente,
ho provato a guardare un giro ma non so come fare.
Ho una DataGrid dove mostro i miei immobili.
Sotto a tale griglia vorrei metterci dei pulsanti che una volta premuti mi permettono di:
- stampare la scheda dell'immobile (crystal)
- cancellare l'immobile selezionato (*)
- modificare l'immobile selezionato (*)
(*) aprendo una form di modifica o conferma cancellazione.
In sostanza vorrei ricavarmi l' "id_immobile" da passare a pulsanti...
Mi indicate un tutorial da seguire su come poter fare questo?
p.s. Usate librerie esterne + flessibili e ricche della dataGrid di serie? Magari mi sto complicando la vita per niente ;)
Grazie 1000!
Ciao, Auri
luis
Profilo
| Newbie
33
messaggi | Data Invio:
mer 18 feb 2004 - 15:02
Ciao,
dovresti essere più preciso nella descrizione del tuo problema, cmq cercherò di venirti incontro:
-per la stampa del report ,devi settare la proprietà "source" del report sul dataset con cui compili il tuo datagrid; devi quindi usare un CrystalReportViewer per visualizzarlo nel form e quindi la stampa può effettuata direttamente dall'opzione di stampa del browser;
-per la cancellazione e la modifica dei record, puoi aggiungere una colonna pulsante "modifica,aggiorna,annulla" dalla finestra proprietà del datagrid; non dimenticare di aggiungere il codice relativo ai comandi edit,cancel e update.
Ci vediamo
Ciao luis
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
mer 18 feb 2004 - 17:22
Ciao Luis,
molto "umano", grazie della comprensione ;)
Ok per la stampa, devo ancora affrontare seriamente crystal anche perchè l'articolo che ho trovato è per una app.ne web ed io dovrei farne una windows
Aggiungere una colonna "pulsante" sulla mia dataGrid? Magari, come potrei fare ciò?
p.s. va bene la datagrid di vb così com'è, non usi classi ad hoc?
Grazie 1K!!
Ciao, Auri
luis
Profilo
| Newbie
33
messaggi | Data Invio:
mer 18 feb 2004 - 17:58
Guarda io solitamente lavoro su piattaformeC# ma per non dovrebbero esserci problemi neanche per VB.
Nella tua win form il datagrid supporta benissimo gli aggiornamenti sui dati; dovresti però implementare un controllo "button" che effettui il salvataggio nella banca dati delle eventuali modifiche sui record.Potresti aggiungere per esempio un pulsante nel form, cliccare sul pulsante e accedere al codice sorgente;prova a richiamare il metodo update sul tuo dataset.
Una soluzione potrebbe essere questa:
Private sub Button_click.......
sqlDataAdapter1.Update(istanzadeltuodataset)
Fatto questo una volta che modifichi o cancelli un record, se premi il pulsante le modifiche saranno salvate nel database.
Spero di esserti stato utile
ciao
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 18 feb 2004 - 22:22
Ciao,
confermo quanto detto da Luis. La DataGrid è più che sufficiente per fare ciò che vuoi e anzi offre molte funzionalità all'utente. Nella prossima versione di Visual Studio .NET, Whidbey, trovi qualcosa in Home Page, sarà possibile creare DataGrid (il nuovo nome sara GridView) editabili, cioè dove potrai cancellare record, inserirne e aggiornarli, senza scrivere codice !
Purtroppo ciò non è ancora possibile con il FW 1.1 e VS.NET 2003, quindi dovrai adattarti e scrivere tu il codice nei vari eventi di update, delete, ecc.
Cmq. ti consiglio di sfogliare l'SDK del Framework, ci sono diversi esempi basilari che ti fanno comprendere come usare il controllo DataGrid e poi da lì procedere.
Per ciò che riguarda Crystal, l'articolo che c'è sul sito è una base di partenza. Quella è una Web Application, ma non pensare che sia più complicato con una WinForm anzi forse è più facile. Una volta aggiunti i riferimenti del caso di Crystal, avrai anche ad isposizione un controllo apposito da disegnare sulla finestra in cui puoi caricare il tuo Report, l'esportazione poi sarà una passeggiata.
ciao
david
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
mer 18 feb 2004 - 23:49
mi fa piacere che la prossima versione farà tutto in automatico anche se a me non dispiace scrivere codice; mi bastava l'imboccata per riuscire a partire con lo strumento (datagrid) giusto.
Grazie 1000 raga!
Ciao, Auri
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
ven 20 feb 2004 - 11:49
Ciao,
sorry ma mi è rimasto un dubbio. Sono riuscito a realizzare il mio bel report, mi chiedo a questo punto però come passargli l'esatto ID da visualizzare.
Nel caso dell'update faccio un aggiornamento di tutto il dataset e quindi non mi preoccupo di quale id sia stato modificato.
dovrei fare qualcosa del tipo mioreport.rpt?id=5 solo che dovrei farlo con una windows application alla pressione del tasto "scheda".
Grazie della pazienza ;)
Ciao, Auri
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 20 feb 2004 - 21:34
Cioè tu vorresti filtrare il report in base ad un particolare ID ?
Se così fosse, è sufficiente che tu crei un DataSet con una Query SQL, filtrata da un Where e assegni il tutto al Report che ti visualizzerà solo la piccola parte di informazioni.
ciao
david
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
dom 22 feb 2004 - 22:59
Ciao David,
esatto, come da immagine allegata, riempio una datagrid:
Private Sub frmGestioneClienti_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim link As OleDbConnection
Dim strLink As String
Dim cmdSelect As OleDbCommand
Dim dataReader As OleDbDataReader
link = New OleDbConnection()
link.ConnectionString = common.BuildConnectionString()
link.Open()
Dim AdapterClienti As New OleDbDataAdapter("Select * from clienti", link)
Dim myDataSet As New DataSet()
AdapterClienti.Fill(myDataSet, "clienti")
DataGridClienti().DataSource = myDataSet.Tables("clienti").DefaultView
End Sub
E poi vorrei gestire l'evento in modo che premendo, ad esempio "dettagli", mi visualizzi una nuova form, all'interno della quale la select sarà "select * from clienti where id_cliente=" & parametro
Cosa ci devo mettere dentro:
Private Sub btnDettagli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDettagli.Click
...
End Sub
Affinchè mi mostri quelo selezionato?
Scusa ma proprio non ne esco :((((
Grazie!
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
lun 23 feb 2004 - 21:53
Ciao, allora vediamo un po'.
Bisogna partire dal presupposto che quando premi sul pulsante dettagli, devi recuperare per lo meno l'indice della riga selezionata e da lì recuperare il valore della prima cella ossia l'ID. Successivamente nell'evento click del pulsante dettagli puoi instanziare una Form (che conterrà un'ulteriori datagrid in cui mostrerai i dettagli) e gli passerai l'ID. Durante il Page Load della seconda Form ti connetti al database e costruisci la query filtrata e bindi tutto alla datagrid.
Per poter passare il parametro alla seconda Form, devi crearti un overload del costruttore della Form (spero di usare termini semplici, bisogna conoscere un po' di programmazione con le classi). Solitamente è così:
Public Sub New()
MyBase.New()
InitializeComponent()
End Sub
allora tu ne costruirai una aggiuntiva così:
Public Sub New(id as String)
MyBase.New()
InitializeComponent()
End Sub
E poi dalla prima form nell'evento click potrai scrivere:
Dim f as Form1
f=new Form1("54")
f.Show()
Dove 54 è il parametro che verrà usato nella clausola Where.
ciao buon lavoro.
david
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
mar 24 feb 2004 - 10:07
Ciao David,
per il momento il mio problema è recuparare l'ID (primary key) della riga selezionata.
Sono riuscito a recuperare la riga della datagrid:
Private Sub btnScheda_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles btnScheda.Click
MsgBox(DataGridImmobili.CurrentRowIndex().ToString())
End Sub
Da questa come posso recuperarmi il famoso ID da inserire nella clausola where ?
Una volta capito questo magari posso proseguire con il test che mi hai suggerito.
Grazie!
Ciao, Auri
ZefVB
Profilo
| Newbie
14
messaggi | Data Invio:
mer 25 feb 2004 - 11:08
Ciao Prova in questo modo:
Dim hit As System.Windows.Forms.DataGrid.HitTestInfo = DG1.HitTest(e.X, e.Y)
If hit.Row >= 0 Then
Me.DG1.Select(hit.Row)
TextBox1.text = Me.DG1.Item(hit.Row, 0).ToString()
End If
'dove DG1 è il nome del tuo datagrid
'textbox1 è appunto una textbox dove viene visualizzato il risultato
'(hit.row, 0) lo zero indica da quale colonna deve prendere il risultato
'quando viene selezionata una riga del datagrid
Ciao ciao
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
mer 25 feb 2004 - 11:44
Ciao ZefVB ;)
l'handler del bottone non mi accetta più "click" se al posto di
System.EventArgs
ci metto
System.Windows.Forms.MouseEventArgs
Ho provato, come segue, a mettere btnModifica.MouseDown ma non fa niente. Cosa non va nel mio codice???
Private Sub btnModifica_Click(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles btnModifica.MouseDown
Dim hit As System.Windows.Forms.DataGrid.HitTestInfo = DataGridClienti.HitTest(e.X, e.Y)
If hit.Row >= 0 Then
Me.DataGridClienti.Select(hit.Row)
MsgBox(Me.DataGridClienti.Item(hit.Row, 0).ToString())
End If
End Sub
TIA, Auri
ZefVB
Profilo
| Newbie
14
messaggi | Data Invio:
mer 25 feb 2004 - 12:03
Scusa ma inizio ad avere qualche dubbio su qual'è il tuo problema,
pensavo ti servisse una volta selezionata una riga da un DATAGRID
il valore di una data colonna, in tal caso basta che tu inserisci il codice
del mio precedente post tra le righe:
Private Sub NOMEDATAGRID_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NOMEDATAGRID.MouseDown
....
....
End Sub
dove al click su una riga della griglia esegue il codice e assegna il valore della colonna
desiderata alla textbox.
Per altro non posso esserti molto di aiuto in quanto sono anche io un Principiante
con la P maiuscola :-)
Ciao ciao
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
mer 25 feb 2004 - 13:44
Ciao ZefVB
Esatto, una volta selezionata la riga all'interno del DATAGRID,
devo passare il valore di una colonna a dei button
All'interno dei button vorrei fare "delete * from tabella where id=" & ID_corrente
dove ID_corrente è il testo contenuto nella colonna 0 (primary key)
Credo mi basti trovare l'handler giusto da mettere sul button
Adesso ci provo.
Ciao, Auri
ZefVB
Profilo
| Newbie
14
messaggi | Data Invio:
mer 25 feb 2004 - 13:57
Beh allora basta che cambi la riga:
TextBox1.text = Me.DG1.Item(hit.Row, 0).ToString()
in:
variabileID= Me.DG1.Item(hit.Row, 0).ToString()
ricordandoti di averla prima dichiarata con Dim....
e poi al click del pulsante inserisci la tua riga
>All'interno dei button vorrei fare "delete * from tabella where id=" & variabileID
Ciao ciao
wsaurim
Profilo
| Newbie
43
messaggi | Data Invio:
mer 25 feb 2004 - 14:47
MITTTTTTTTTTTTTTTTICO FUNZIONAAA
scusate l'esplosione di gioia!
Grazie ZefvVB, grazie .nethell people ;))
Torna su
Stanze Forum
Elenco Threads
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 !