Ricerca 
it-ITen-US
Registrazione
Accedi
In-Vesti Dotnetwork
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
Click per andare alla pagina di Iscrizione
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:.
    Stampa     


DotNetWork Forums
DataGridView ed Evento CellClick
Ultimo Post 08 giu 2010 14.13 by gigi. 6 Risposte.
Stampa immediata
Ordina:
PrevPrev ProssimoProssimo
Non sei autorizzato ad inviare una risposta.
Autore Messaggi

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
       
Articoli
Panoramica degli Eventi Pilotati
Come iniziare a capire com'è fatto WPF (parte 4)
2007/08/14 | Autore: Patrizia Cosolo
Programmer Paster Addin per Expression Web 1 e 2
Implementare un Addin per Expression Web 1 e 2 che usa la libreria ProgrammerPaster
2009/02/26 | Autore: Rudy Azzan
Unit Testing del codice (parte 1)
Le basi per la costruzione di test per rendere più solido il nostro codice
2007/12/26 | Autore: Sabrina Cosolo
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
Panoramica del Sistema dei Comandi
Come iniziare a capire com'è fatto WPF (parte 5)
2007/09/30 | Autore: Patrizia Cosolo
Panoramica delle Proprietà Subordinate (Dependency Properties)
Come iniziare a capire WPF Parte 6
2007/11/22 | Autore: Patrizia Cosolo
Codedom Introduzione all'uso parte 1
Generare automaticamente codice C# o VB usando CodeDom ed il framework .NET stesso
2009/11/07 | Autore: Sabrina Cosolo
SQL Server Nozioni base (parte 1)
Come creare un database in SQL Server Usando Sql Management Studio
2008/03/09 | Autore: Sabrina Cosolo
    Stampa     
Home|Forums|Blogs|Mappa del sito
© 2007-2010 by DotNetWork  .:.  Condizioni d'uso  .:.  Privacy  .:.  Accedi  .:.