|
|
IN-VESTI DNW!!! Sono finalmente arrivate le nuovissime T-Shirt di DotNetWork!!! Con soli 15,00 € ci sosterrai nelle spese di gestione della Community e ti invieremo a casa una splendida maglietta. Se vuoi contribuire al mantenimento di DotNetWork.it Vai sulla pagina Iscrizioni Effettua il pagamento usando IWBank Oppure un Bonifico bancario (le coordinate sono sulla pagina Iscrizioni), inviaci una mail a support@dotnetwork.it indicandoci la tua taglia e l'indirizzo di spedizione. Non appena verificata la ricezione del pagamento provvederemo a spedirti la tua T-Shirt. Le magliette sono disponibili nelle taglie S-M-L-XL-XXL (in caso di esaurimento di una delle taglie, indica quella di "Backup"). Grazie per IN-VESTIRTI con NOI!!! .:DotNetWork Founders:.
|
|
|
|
|
DataGridView ed Evento CellClick
Ultimo Post 08 giu 2010 14.13 by gigi. 6 Risposte.
|
Ordina:
|
 Posts:90
 |
| 06 giu 2010 14.11 |
|
Salve, ho questo codice che mi da questo errore: Cast specificato non valido. Sto provando ad usare l'Sql Lite .Net per piccole applicazioni, Ma questo non è un problema, il problema è che devo recuperare un integer che è il campo ID, e non lo posso convertirlo in una STRING, perchè è un'auto incremento.
I codici sono i seguenti:
Questo scritto nella form principale: Edita_Dati ed = new Edita_Dati(); ed.ID =(int)(dGrid[0, e.RowIndex].Value); ed.ShowDialog();
e questa nella form Edita_Dati: questo:
private int mID;
public int ID { get { return (mID); } set { mID = value; } }
E la query cosi:
void carica() {
try { using (SQLiteConnection conn = new SQLiteConnection(db.Apri_db().ToString())) { string sql = "SELECT * from PwdManager WHERE ID=" + this.ID + ""; conn.Open();
using (SQLiteCommand cmd = new SQLiteCommand(sql, conn)) { SQLiteDataReader reader = cmd.ExecuteReader(); if (reader.Read()) { cbCategoria.SelectedItem = "" + reader["categoria"] + ""; tbDenominazione.Text = "" + reader["Denominazione"] + ""; tbUsername.Text = "" + reader["UserName"] + ""; tbPassword.Text = "" + reader["Password"] + ""; tbEmail.Text = "" + reader["Email"] + ""; tbCommento.Text = "" + reader["Commento"] + ""; tbDataRegister.Text = "" + reader["DataRegister"] + ""; } else { label2.Text = "Non trovato"; } reader.Dispose(); }
conn.Close(); } } catch (Exception ex) { MessageBox.Show("" + ex.ToString() + ""); }
}
Grazie mille. mi sapete dire come mai?.
Grazie.
|
|
|
|
|
 Posts:90
 |
| 06 giu 2010 14.13 |
|
a scusate, l'errore mi da ad questa riga: ed.ID =(int)(dGrid[0, e.RowIndex].Value); E mi da l'errore che vi ho scritto sopra. |
|
|
|
|
 Posts:811
 |
| 06 giu 2010 21.43 |
|
Se non è possibile fare un cast ad intero del valore, evidentemente non si tratta di un numero intero a 32 bit puoi provare a modificare la riga in
ed.ID = Convert.ToInt32(dGrid[0,e.Rowindex].Value) oppure verificare che il tipo di dato che stai leggendo sia davvero un intero e non sia invece una stringa oppure un decimal o un double.
saluti
|
|
| Sabrina |
|
|
 Posts:90
 |
| 06 giu 2010 21.51 |
|
ciao, cosi funziona, e grazie mille, però mi sa che sto sbagliando evento alla datagridview, perchè mi sono accorto che tutte le celle sono cliccabili, io vorrei solo la riga selezionata da me e poi visualizza la finestra. Perchè se premo sulle celle mi si apre la finestra edita_dati. Mi dici che evento dovevo fare? grazie. |
|
|
|
|
 Posts:811
 |
| 07 giu 2010 13.05 |
|
Temo che le celle siano cliccabili per default, quindi per rispondere diversamente al click in base a cosa tu stai facendo devi scavare un po' meglio negli oggetti. Non uso la datagridview, perciò non conosco bene i pochi eventi che fornisce, non so se vi sia qualcosa di più specifico del cell click quindi fai una verifica sulla lista eventi. Se non vi fosse un evento "Selected cell change" Sul cell change dovrai verificare se sei sulla selected row o selected cell e in caso contrario non fare nulla. saluti |
|
| Sabrina |
|
|
 Posts:90
 |
| 07 giu 2010 13.14 |
|
Ho risolto cosi: Ho messo a false, la creazione automatica, e poi ho messo un button per la modifica. E funziona. // Configures columns for the DataGridView control. private void AddColumns() { DataGridViewTextBoxColumn idColumn = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn Account = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn WWW = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn Titolo = new DataGridViewTextBoxColumn(); DataGridViewTextBoxColumn RegisterData = new DataGridViewTextBoxColumn(); idColumn.Name = "Id"; idColumn.DataPropertyName = "Id"; idColumn.ReadOnly = true; idColumn.Width = 20; Titolo.Name = "Titolo"; Titolo.DataPropertyName = "Titolo"; Titolo.ReadOnly = true; Titolo.Width = 120; Account.Name = "Account"; Account.DataPropertyName = "Account"; Account.ReadOnly = true; Account.Width = 150; WWW.Name = "Sito Web"; WWW.DataPropertyName = "WWW"; WWW.ReadOnly = true; WWW.Width = 150; RegisterData.Name = "Data Iscrizione"; RegisterData.DataPropertyName = "DataRegister"; RegisterData.ReadOnly = true; RegisterData.Width = 100; // Add a button column. DataGridViewButtonColumn buttonColumn = new DataGridViewButtonColumn(); buttonColumn.HeaderText = ""; buttonColumn.Name = "Edita_Dati"; buttonColumn.Text = "Edita_Dati"; buttonColumn.UseColumnTextForButtonValue = true; dGrid.Columns.Add(idColumn); dGrid.Columns.Add(Titolo); dGrid.Columns.Add(Account); dGrid.Columns.Add(WWW); dGrid.Columns.Add(RegisterData); dGrid.Columns.Add(buttonColumn); // Add a CellClick handler to handle clicks in the button column. dGrid.CellClick += new DataGridViewCellEventHandler(dGrid_CellClick); } void dGrid_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex < 0 || e.ColumnIndex != dGrid.Columns["Edita_Dati"].Index) return; // MessageBox.Show("" + Convert.ToInt32(dGrid[0, e.RowIndex].Value) + ""); Edita_Dati ed = new Edita_Dati(); ed.ID = Convert.ToInt32(dGrid[0, e.RowIndex].Value); ed.ShowDialog(); } |
|
|
|
|
 Posts:90
 |
| 08 giu 2010 14.13 |
|
ho risolto anche la gestione dei pulsanti Edita e Cancella: eccoti il codice: void dGrid_CellClick(object sender, DataGridViewCellEventArgs e) { switch (e.ColumnIndex) { case 5: Edita_Dati ed = new Edita_Dati(); ed.ID = Convert.ToInt32(dGrid[0, e.RowIndex].Value); ed.ShowDialog(); break; case 6: using (SQLiteConnection conn = new SQLiteConnection(db.Apri_db().ToString())) { string sql = "DELETE from Main WHERE ID=@_ID"; conn.Open(); SQLiteCommand cmd = new SQLiteCommand(sql, conn); cmd.Parameters.AddWithValue("@_ID", Convert.ToInt32(dGrid[0, e.RowIndex].Value)); cmd.ExecuteNonQuery(); dGrid.Refresh(); popola_grid(); } break; } } |
|
|
|
|
| Non sei autorizzato ad inviare una risposta. |
|
Active Forums 4.1
|
|
|
|
|
|
|
|
|
|
|
Addin per Live Writer |
 |
Programmer Paster, un Addin per Live Writer che colora il codice sorgente inserito nei Post dei Blog |
 |
|
2007/11/11 | Autore: Rudy Azzan
|
|
|
|
|
|
|
|
|
|
|
|