Formato della stringa non corretto

di il
3 risposte

Formato della stringa non corretto

Buon giorno a tutti,
sto provando a collegare due combobox in cascata (la seconda filtrata in base alla scelta effettuata sulla prima ma in esecuzione mi da il seguente messaggio di errore evidenziato sull'evento SelectedIndexChaned della cboCasaAutomobilistica.

System.FormatException: 'Formato della stringa di input non corretto.'

LE TABELLE SONO:
1) CaseAutomobilistiche
PKcasaAutomobilisticoa INT, NOT NULL, CHIAVE PRIMARIA
descrizione VARCHAR(50) NULL

2) ModelliAuto
PKmodello NT, NOT NULL, CHIAVE PRIMARIA
FKcasaAutomobilistica INT) NULL
modello VARCHAR(50) NULL

Il codice utilizzato è il seguente:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace ANC
{
public partial class Form1 : Form
{
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=N:\ANC\ANC\Voontariato.mdf;Integrated Security=True");
DataRow dr;
public Form1()
{
InitializeComponent();
aggiornaDati();
}

public void aggiornaDati()
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from CaseAutomobilistiche order by descrizione", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
con.Close();

dr = dt.NewRow();
dt.Rows.InsertAt(dr, 0);
cboCasaAutomobilistica.ValueMember = "PKcasaAutomobilistica";
cboCasaAutomobilistica.DisplayMember = "descrizione";
cboCasaAutomobilistica.DataSource = dt;
}

private void cboCasaAutomobilistica_SelectedIndexChanged(object sender, EventArgs e)
{
if(cboCasaAutomobilistica.SelectedValue.ToString() != null)
{
int PKcasaAutomobilistica = Convert.ToInt32(cboCasaAutomobilistica.SelectedValue.ToString()); QUI MI DA L'ERRORE
aggiornaModelli(PKcasaAutomobilistica);
}
}

public void aggiornaModelli(int PKcasaAutomobilistica)
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from ModelliAuto where FKCasaAutomobilistica = @PkCasaAutomobilistica order by modello", con);
cmd.Parameters.AddWithValue("PKcasaAutomobilistica", PKcasaAutomobilistica);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
con.Close();

dr = dt.NewRow();
dt.Rows.InsertAt(dr, 0);
cboModello.ValueMember = "PKmodello";
cboModello.DisplayMember = "modello";
cboModello.DataSource = dt;
}
}
}


Non riesco a venirne a capo....... Grazie a tutti !!!!!!

3 Risposte

  • Re: Formato della stringa non corretto

    DalexTo ha scritto:


    private void cboCasaAutomobilistica_SelectedIndexChanged(object sender, EventArgs e)
    {
    if(cboCasaAutomobilistica.SelectedValue.ToString() != null)
    {
    int PKcasaAutomobilistica = Convert.ToInt32(cboCasaAutomobilistica.SelectedValue.ToString()); QUI MI DA L'ERRORE
    aggiornaModelli(PKcasaAutomobilistica);
    }
    }
    Nel debug quanto vale cboCasaAutomobilistica.SelectedValue.ToString()?
  • Re: Formato della stringa non corretto

    Il problema è che SelectedValue è un numero intero. Lo hai definito all'interno di aggiornaDati():
    cboCasaAutomobilistica.ValueMember = "PKcasaAutomobilistica";

    PKcasaAutomobilistica è definito come: PKcasaAutomobilisticoa INT, NOT NULL, CHIAVE PRIMARIA

    Prova ad utilizzare cboCasaAutomobilistica.selectedItem.ToString(). Dovrebbe funzionare.

    Ciao,
    Fabio
  • Re: Formato della stringa non corretto

    Infatti... SCUSA PER IL RITARDO MA ULTIMAMENTE.... DOPO AVERCI SMANETTATO E STUDIATO UN PO..... AVEVO LA SOLUZIONE SOTTO GLI OCCHI... GRAZIE DAVVERO !!!!
Devi accedere o registrarti per scrivere nel forum
3 risposte