Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio
Grazie ad un mocio rotante che viene costantemente bagnato e pulito, Narwal Flow assicura un completo e capillare lavaggio dei pavimenti di casa. La logica di intellignza artificiale integrata guida nella pulizia tra i diversi locali, sfruttando un motore di aspirazione molto potente e un sistema basculante per la spazzola molto efficace sui tappeti di casa
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi
Con un prezzo di 2.999 euro, il Panasonic Z95BEG entra nella fascia ultra-premium dei TV OLED: pannello Primary RGB Tandem, sistema di raffreddamento ThermalFlow, audio Technics integrato e funzioni gaming avanzate lo pongono come un punto di riferimento
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-05-2011, 17:16   #1
3nigma666
Senior Member
 
L'Avatar di 3nigma666
 
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
[c#] problema assegnazione valore comboBox da valori generati da Linq

Buondi,

ho un problema con Linq, una public class e una comboBox.

In sostanza ho:

Codice:
var ServizioLocalita = from T in mioDatabase.ServiziDiConsegnaTipologie
                                        join S in mioDatabase.ServiziDiConsegna on T.ServiziDiConsegnaID equals S.ID
                                        where (S.ID == (int)comboServizio.SelectedValue)
                                       select new OreDiConsegna ( T.ID, T.Nome, 24, 0 );


comboBoxTipologia.DataSource = ServizioLocalita.ToList();
                    comboBoxTipologia.DisplayMember = "Nome";
                    comboBoxTipologia.ValueMember = "ID";

class OreDiConsegna
    {
        public int ID;
        public string Nome;
        public int ore;
        public int aggiunte;

        public OreDiConsegna(int id, string n, int orebase, int oreaggiunte)
        {
            ID = id;
            Nome = n;
            ore = orebase;
            aggiunte = oreaggiunte;
        }

        public string returnNome()
        {
            return Nome;
        }
    }
e il problema si verifica qua:

Codice:
 comboBoxTipologia.ValueMember = "ID";
in quanto mi dice: Impossibile stabilire l'associazione al nuovo membro di visualizzazione.
Nome parametro: newDisplayMember


e non capisco perchè...
se commento //comboBoxTipologia.ValueMember = "ID"; nella combo box vedo come risultato:

nomeProgetto.OreDiConsegna e tutto funziona, solo che invece che visualizzare il contenuto della colonna mi visualizza la sorgente da cui prende i valori.

Come risolvere?

mi metto anche tutto il codice della form in questione

Codice:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Linq;

namespace testbed
{
    public partial class CreazionePresa : Form
    {
        #region Variabili
        string nomeDatabase = "MioDatabase.xml";

        bool stoAssegnandoDataSource = false;
        #endregion

        #region Inizializzazioni
        public CreazionePresa(DataSetDatabasePrese db,string nomeUtente, string codiceUtente)
        {
            InitializeComponent();
            if (db == null)
            {
                db = new DataSetDatabasePrese();
                try { db.ReadXml(nomeDatabase); }
                catch(Exception ex)
                {
                    MessageBox.Show("Non riesco a caricare il Database rinizio da zero! Messaggio: "+ex.Message);
                    db.Clear();
                }
            }
            AssegnaDataSource(db);
            this.Text += " "+nomeUtente + " Codice: " + codiceUtente;
            dateConsegnaTassativa.Enabled = false; //Se non è premuto il tasto: TASSATIVITA' non abilito il campo DATA TASSATIVA CONSEGNA
            textBoxAssicurazione.Enabled = false;
            textBoxEuro.Enabled = false;
            comboServizio.DataSource = mioDatabase.ServiziDiConsegna;
            comboServizio.DisplayMember = "Nome";
            comboServizio.ValueMember = "ID";
            comboServizio.SelectedIndex= -1;
            comboBoxTipologia.SelectedIndex = -1;
   
          

        }

        /// <summary>Carico i dati dal DB e li assegno ai controlli</summary>
        private void AssegnaDataSource(DataSetDatabasePrese db)
        {
            mioDatabase = db;
            bindingSourceComboServizio.DataSource = mioDatabase.ServiziDiConsegna;
            if (mieiColli.TipoCollo.Rows.Count == 0)
            {
                DataSetValoriSingolaPresa.TipoColloRow rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "EPAL  (80/100x120)";
                rigaTipo.Larghezza = 80;
                rigaTipo.Lunghezza = 120;
                rigaTipo.Altezza = 30;
                rigaTipo.PesoMax = 1200;
                rigaTipo.BancaleEPAL = true;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "Mini Quarter Pallet";
                rigaTipo.Larghezza = 80;
                rigaTipo.Lunghezza = 120;
                rigaTipo.Altezza = 30;
                rigaTipo.PesoMax = 150;
                rigaTipo.BancaleEPAL = true;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "Quarter Pallet";
                rigaTipo.Larghezza = 80;
                rigaTipo.Lunghezza = 120;
                rigaTipo.Altezza = 30;
                rigaTipo.PesoMax = 300;
                rigaTipo.BancaleEPAL = true;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "Half Pallet";
                rigaTipo.Larghezza = 80;
                rigaTipo.Lunghezza = 120;
                rigaTipo.Altezza = 30;
                rigaTipo.PesoMax = 550;
                rigaTipo.BancaleEPAL = true;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "Full Pallet";
                rigaTipo.Larghezza = 80;
                rigaTipo.Lunghezza = 120;
                rigaTipo.Altezza = 30;
                rigaTipo.PesoMax = 1200;
                rigaTipo.BancaleEPAL = true;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "Light Pallet";
                rigaTipo.Larghezza = 80;
                rigaTipo.Lunghezza = 120;
                rigaTipo.Altezza = 30;
                rigaTipo.PesoMax = 550;
                rigaTipo.BancaleEPAL = true;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "Fasci";
                rigaTipo.Larghezza = 80;
                rigaTipo.Lunghezza = 120;
                rigaTipo.Altezza = 30;
                rigaTipo.PesoMax = 1200;
                rigaTipo.BancaleEPAL = false;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                rigaTipo = mieiColli.TipoCollo.NewTipoColloRow();
                rigaTipo.Nome = "Misure Libere";
                rigaTipo.Larghezza = 0;
                rigaTipo.Lunghezza = 0;
                rigaTipo.Altezza = 0;
                rigaTipo.PesoMax = 0;
                rigaTipo.BancaleEPAL = false;
                mieiColli.TipoCollo.AddTipoColloRow(rigaTipo);
                comboServizio.DataSource = mioDatabase.ServiziDiConsegna;
                comboServizio.DisplayMember = mioDatabase.ServiziDiConsegna.NomeColumn.ColumnName;
                comboServizio.ValueMember = mioDatabase.ServiziDiConsegna.IDColumn.ColumnName;
              
            
            }
        }
        #endregion

        #region Bottoni

        private bool VerificaMittente(out int oraRitiro, out int telMittente, out int cap)
        {
            oraRitiro = -1;
            telMittente = -1;
            cap = -1;
            //Controllo di aver inserito l'orario della presa
            if (textOraRitiro.Text != "")
            {//Se è stata inserito un'ora si verifica che sia stata inserita solo in modo numerico.
                if (!Int32.TryParse(textOraRitiro.Text, out oraRitiro))
                {
                    MessageBox.Show("Il campo Ora Ritiro accetta solo numeri");
                    textOraRitiro.Focus();
                    return false;
                }
            }
            //Controllo il mittente
            if (textTelMittente.Text != "")
            {//Controllare di aver inserito solo numeri nel campo telefono mittenti
                if (!Int32.TryParse(textTelMittente.Text, out telMittente))
                {
                    MessageBox.Show("Il campo telefono mittente deve contenere solo numeri");
                    textTelMittente.Focus();
                    return false;
                }
            }

            //Controlla la lunghezza del campo in question
            if (textNomeDittaMittente.TextLength <= 0)
            {
                //Avvisa l'utente del perchè questo è un problema
                MessageBox.Show("Attenzione devi dirmi da dove quale cliente vuoi ritirare la merce");
                //Manda il focus sul campo incriminato
                textNomeDittaMittente.Focus();
                //Esci dalla funzione
                return false;
            }
            if (textLocalitaMittente.TextLength <= 0)
            {
                MessageBox.Show("Attenzione devi dirmi in quale localita vuoi ritirare");
                textLocalitaMittente.Focus();
                return false;
            }
            if (textIndirizzoMittente.TextLength <= 0)
            {
                MessageBox.Show("Attenzione devi dirmi da quale indirizzo vuoi ritirare");
                textIndirizzoMittente.Focus();
                return false;
            }

            if (textProvinciaMittente.TextLength <= 0)
            {
                MessageBox.Show("Attenzione devi dirmi inserire da quale provincia si ritira");
                textProvinciaMittente.Focus();
                return false;
            }

            if (textCapMittente.Text != "")
            {
                if (!Int32.TryParse(textCapMittente.Text, out cap))
                {
                    MessageBox.Show("Attenzione Devi inserire il campo CAP solo con numeri");
                    textCapMittente.Focus();
                    return false;
                }
            }
            return true;
        }

        /// <summary>Salva la presa nel DB</summary>
        /// <param name="sender"></param><param name="e"></param>
        /// <remarks>ToDo: Nei controlli inserire la parte che verifica che per la presa esistente siano stati inseriti dei bancali, almeno un bancale. 
        ///                Per ora controlla esclusivamente che sia stato inserito un bancale nella memoria temporanea e non nel database. </remarks>
        private void SalvaPresa(object sender, EventArgs e)
        {
            #region Variabili
            int clienteId = -1;
            int indirizzoClienteID = -1;
            int telMittente = -1;
            int oraRitiro = -1;
            int oraConsegna = 0;
            int cap = -1;
            int euro = -1;
            List<DataSetDatabasePrese.ColliRow> listaNuoviColliDaInserire;
            #endregion
            #region Controllo valori
            //Controllo il Mittente 
            #region CheckMittente
            if (!VerificaMittente(out oraRitiro,out telMittente,out cap))
                return;
            #endregion
            #region CheckDestinatario
            //Ora controllo il Destinatario

            if (textLocalitaDestinatario.Text == "")
            {
                MessageBox.Show("Devi inserire la località di destino. Se sono più località basta scrivere le dicitura 'VARIE'");
                textLocalitaDestinatario.Focus();
                return;
            }
            #endregion
            #region checkNoteSpedizioni
            if (checkBoxTassativita.Checked)
            {//Se è stata inserita la tassatività
              
                if (dateDataDiRitiro == dateConsegnaTassativa)
                {//controllare 
                    MessageBox.Show("La data di consegna Tassativa non può esser uguale alla data di ritiro");
                    dateConsegnaTassativa.Focus();
                    return;
                }
            }
            #endregion
            #region Prezzo
            if (checkBoxPrezzo.Checked == true)
            {
                if (textBoxEuro.Text == "")
                {
                    MessageBox.Show("Devi inserire il prezzo pattutito o togliere la spunta da Prezzo pattutito");
                    textBoxEuro.Focus();
                    return;
                }
                if (!Int32.TryParse(textBoxEuro.Text, out euro))
                {
                    MessageBox.Show("Il prezzo può contenere solo valori numerici!");
                    textBoxEuro.Focus();
                    return;
                }
            }
            #endregion
            #region Assicurazione
            if (checkBoxAssicurazione.Checked && textBoxAssicurazione.Text != "")
            {
                int result;
                if (!Int32.TryParse(textBoxAssicurazione.Text, out result))
                {
                    MessageBox.Show("Devi inserire solo numeri nel campo Valore da Assicurare");
                    textBoxAssicurazione.Focus();
                    return;
                }
            }
            else
            {
                MessageBox.Show("Devi inserire un valore nel campo assicurazione o, alternativamente togliere la spunta dal campo Valore da assicurare");
                textBoxAssicurazione.Focus();
                return;
            }
            #endregion

            //Credo l'id del cliente e verifico se esiste gia
            clienteId = OttieniIDCliente(textNomeDittaMittente.Text);
            //Ottengo l'indirizzo ID del cliente
            indirizzoClienteID = OttieniIDIndirizzoCliente(clienteId);
            

            #region Controllo colli
            if (mieiColli.Colli.Count == 0)
            {
                MessageBox.Show("Non hai inserito dei colli!");
                return;
            }
            
            DataSetDatabasePrese.ColliRow nuovoCollo;
            listaNuoviColliDaInserire = new List<DataSetDatabasePrese.ColliRow>(mieiColli.Colli.Count);
            #region PER il TAG COLLI Controllo i dati inseriti e li copio dal DB temporaneo a quello vero
            //Copia i colli dal DB temporaneo a quello vero
            foreach (DataSetValoriSingolaPresa.ColliRow singoloCollo in mieiColli.Colli)
            {
                nuovoCollo = mioDatabase.Colli.NewColliRow();
                if (!singoloCollo.IsNColloNull())
                    nuovoCollo.NCollo = singoloCollo.NCollo;
                else
                {
                    MessageBox.Show("Il campo N° Colli non può esser vuoto");
                    return;
                }
                //Copia i valori da una riga all'atra
                if (!singoloCollo.IsAltezzaNull())
                    nuovoCollo.Altezza = singoloCollo.Altezza;
                else
                {
                    MessageBox.Show("Il campo Altezza non può esser vuoto");
                    return;
                }
                if (!singoloCollo.IsLarghezzaNull())
                    nuovoCollo.Larghezza = singoloCollo.Larghezza;
                else
                {
                    MessageBox.Show("Il campo Larghezza non può esser vuoto");
                    return;
                }
                if (!singoloCollo.IsLunghezzaNull())
                    nuovoCollo.Lunghezza = singoloCollo.Lunghezza;
                else
                {
                    MessageBox.Show("Il campo Lunghezza non può esser vuoto");
                    return;
                }
                if (singoloCollo.IsSovrapponibileNull())
                    nuovoCollo.Sovrapponibile = false;
                else
                    nuovoCollo.Sovrapponibile = singoloCollo.Sovrapponibile;
                if (!singoloCollo.IsDescrizioneNull())
                nuovoCollo.Descrizione = singoloCollo.Descrizione;
                //Se è un bancale EPAL aggiungi il numero di bancali usati!
                //TODO: controlare per fasci e misure libere che NON sia EPAL!
                if ((singoloCollo.IDTipoCollo >= 0) && (mieiColli.TipoCollo.FindByID(singoloCollo.IDTipoCollo).BancaleEPAL = true))
                    nuovoCollo.BancaleEPAL = nuovoCollo.NCollo;
                else//ALtrimenti non ci sono bancali epal!
                    nuovoCollo.BancaleEPAL = 0;

                
                
                nuovoCollo.Peso = singoloCollo.Peso;
                //E ora aggiungilo!
                listaNuoviColliDaInserire.Add(nuovoCollo);
            }
            #endregion
            #region PER IL TAG METRILINEARI/CUBI controllo i dati inseriti e li copio dal DB temporaneo a quello vero
            //Ora copia i vlaori dal DB temporaneo a quello vero
            foreach (DataSetValoriSingolaPresa.MetriLineariCubiRow singoloValore in mieiColli.MetriLineariCubi)
            {
                nuovoCollo = mioDatabase.Colli.NewColliRow();
                //Se ho i metri lineari creo un collo fittizio di altezza massima, larghezza massima e lunghezza definita
                //calcola i valori di altezza e larghezza
                if (!singoloValore.IsMetriLineariNull())
                {
                    nuovoCollo.Altezza = 270;
                    nuovoCollo.Larghezza = 240;
                    nuovoCollo.Lunghezza = singoloValore.MetriLineari;
                }
                //Per i metri cubi li converto anche qui in altezza lunghezza e larghezza
                if (!singoloValore.IsMetriCubiNull())
                {

                }
                //E ora aggiungilo!
                listaNuoviColliDaInserire.Add(nuovoCollo);
            }
            #endregion
            #endregion
            #endregion

            //Se sono qui significa che SO che tutti i campi sono validi
            //non li controllero piu
            //I nuovi colli sono TUTTI dentro la lista listaNuoviColliDaInserire

            //Creo una nuova presa
            DataSetDatabasePrese.PresaRow nuovaPresa = mioDatabase.Presa.NewPresaRow();
            #region Riempi la presa con i suoi valori
            //Riempio i valori della presa
            nuovaPresa.TassativitaRitiro = checkRitiroTassativo.Checked;
            nuovaPresa.TassativitaConsegna = checkBoxTassativita.Checked;
            nuovaPresa.IDIndirizzoRitiro = indirizzoClienteID;
            nuovaPresa.IDClientePaga = clienteId;
            nuovaPresa.Note = textNote.Text;
            nuovaPresa.Adr = checkBoxAdr.Checked;
            nuovaPresa.Centinato = checkBoxCentinato.Checked;
            nuovaPresa.DataCreazione = DateTime.Now;
            nuovaPresa.DataRitiro = new DateTime(dateDataDiRitiro.Value.Year,dateDataDiRitiro.Value.Month,dateDataDiRitiro.Value.Day,oraRitiro,1,1);
            nuovaPresa.DataConsegna = new DateTime(dateConsegnaTassativa.Value.Year, dateConsegnaTassativa.Value.Month, dateConsegnaTassativa.Value.Day, oraConsegna, 1, 1); 
            if (checkboxPortoAssegnato.Checked)
                nuovaPresa.Pagamento = "Assegnato";
            if (checkPortoFranco.Checked)
                nuovaPresa.Pagamento = "Franco";
            nuovaPresa.PrezzoPattuito = checkBoxPrezzo.Checked;
            nuovaPresa.Euro = euro;
            #endregion
            //salvo la presa nel database!
            mioDatabase.Presa.AddPresaRow(nuovaPresa);

            //Riga che serve per l'abbinamento
            DataSetDatabasePrese.ColliPresaRow abbinamento;
            //Ore crea i colli
            foreach (DataSetDatabasePrese.ColliRow collo in listaNuoviColliDaInserire)
            {
                mioDatabase.Colli.AddColliRow(collo);
                //Crea un singolo abbinamento
                abbinamento = mioDatabase.ColliPresa.NewColliPresaRow();
                //Compilalo
                abbinamento.IDCollo = collo.ID;
                abbinamento.IDPresa = nuovaPresa.ID;
                //inseriscilo nella tabella di collegamento
                mioDatabase.ColliPresa.AddColliPresaRow(abbinamento);
            }

            //Ok ora salvo nel file XML
            mioDatabase.WriteXml(nomeDatabase);

            MessageBox.Show("Presa Inserita");
            this.Close();
        }
        #endregion

        #region Utilizo del Database
        /// <summary>Abbina l'indirizzo al cliente</summary>
        /// <param name="nuovoCliente">la riga del cliente</param>
        public void abbIndirizzoClienti(DataSetDatabasePrese.ClientiRow nuovoCliente)
        {
            DataSetDatabasePrese.IndirizziClientiRow abbinamentoIndirizziClienti;//Dichiaro una nuova variabile 
            abbinamentoIndirizziClienti = mioDatabase.IndirizziClienti.NewIndirizziClientiRow();//inizializzo nel database la nuova riga
            abbinamentoIndirizziClienti.IDClienti = nuovoCliente.ID; // inserisco l'id cliente
            abbinamentoIndirizziClienti.IDIndirizzi = OttieniIDIndirizzoCliente(nuovoCliente.ID); //inserisci l'id dell'indirizzo abbianto al cliente in questione
            mioDatabase.IndirizziClienti.AddIndirizziClientiRow(abbinamentoIndirizziClienti);//salva su database i nuovi attributi appena ottenuti
        }

        /// <summary>Crea un nuovo cliente dal nome che mi hai scritto</summary>
        /// <param name="nomeCliente"></param>
        /// <returns>l'ID del cliente che ho usato</returns>
        public int inserimentoNuovoCliente(string nomeCliente)
        {
            DataSetDatabasePrese.ClientiRow nuovoCliente;
            nuovoCliente = mioDatabase.Clienti.NewClientiRow();
            nuovoCliente.Nome = nomeCliente;
            abbIndirizzoClienti(nuovoCliente);//abbino l'indirizzo al cliente
            mioDatabase.Clienti.AddClientiRow(nuovoCliente);
            return nuovoCliente.ID;
        }

        /// <summary>Ottiene un ID per un cliente con quel nome, o trovandolo o creandone uno nuovo</summary>
        /// <param name="nomeCliente"></param>
        /// <returns>l'ID del cliente</returns>
        public int OttieniIDCliente(string nomeCliente)
        {
            //Guardiamo se c'è qualcuno con il nome uguale
            DataRow[] risultato = mioDatabase.Clienti.Select("Nome = '" + nomeCliente + "'");
            //Se non ha trovato nessuno non esiste un cliente del genere
            if (risultato.Length == 0)
                return inserimentoNuovoCliente(nomeCliente);
            else
                return ((DataSetDatabasePrese.ClientiRow)risultato[0]).ID;
        }

        #region OttieniIDIndirizzoCliente
        private int OttieniIDIndirizzoCliente(int idCliente)
        {
            #region Controlla validita
            #endregion
            
            //Guardiamo se questo cliente ha un indirizzo
            DataRow[] risultato = mioDatabase.Clienti.Select("ID = " + idCliente + "");
            //Se non ha trovato nessuno non esiste un cliente del genere
            if (risultato.Length == 0)
            {
                DataSetDatabasePrese.IndirizziRow nuovoIndirizzo = mioDatabase.Indirizzi.NewIndirizziRow();
                
                //Tutto il resto    
                nuovoIndirizzo.Citta = textLocalitaMittente.Text;
                nuovoIndirizzo.Indirizzo = textIndirizzoMittente.Text;
                nuovoIndirizzo.CAP = textCapMittente.Text;
                nuovoIndirizzo.Provincia = textProvinciaMittente.Text;
                nuovoIndirizzo.Stato = "IT";

                mioDatabase.Indirizzi.AddIndirizziRow(nuovoIndirizzo);
                return nuovoIndirizzo.ID;
            }
            return ((DataSetDatabasePrese.ClientiRow)risultato[0]).ID;
        }
        #endregion

        #endregion

        #region Funzioni Estetische
        /// <summary>Quando il datagrid trova un errore (esempio hai messo una lettera in un campo numero) segnalalo</summary>
        /// <param name="sender"></param><param name="e"></param>
        private void GestisciErrori(object sender, DataGridViewDataErrorEventArgs e)
        {
            MessageBox.Show("Il valore " + colliDataGridView.Columns[e.ColumnIndex].ToolTipText + " è errato! Messaggio: "+e.Exception.Message);
            //colliDataGridView[e.ColumnIndex, e.RowIndex].Value = 6;
        }

        private void checkBoxTassativita_CheckedChanged(object sender, EventArgs e)
        {
            dateConsegnaTassativa.Enabled = checkBoxTassativita.Checked;
        }
        /// <summary>Abilita il campo Prezzo solo se scelgo di usarlo</summary>
        /// <param name="sender"></param><param name="e"></param>
        private void checkBox1_CheckedChanged(object sender, EventArgs e)
        {
            textBoxEuro.Enabled = checkBoxPrezzo.Checked;
        }
        


        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            textBoxAssicurazione.Enabled = checkBoxAssicurazione.Checked;
        }

        private void comboBoxTipologia_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if (comboBoxTipologia.SelectedItem != null)
            {
                textBoxTempoResa.Text = (((OreDiConsegna)comboBoxTipologia.SelectedItem).ore + ((OreDiConsegna)comboBoxTipologia.SelectedItem).aggiunte).ToString();
            }
        }
        #endregion
        private void comboServizio_SelectedIndexChanged(object sender, EventArgs e)
        {
            #region Assegno la sorgente di dati a ComboBoxTipologia
            string Cap = textCapDestinatario.Text.ToLower();
            string Localita = textLocalitaDestinatario.Text.ToLower();
            string SiglaProvincia = textProvinciaDestinatario.Text.ToLower();
            if (comboServizio.SelectedIndex >= 0)
            {
                //Prova a cercare la localita
                var ServizioLocalita = from TR in mioDatabase.ServiziDiConsegnaTempiDiResa
                                        join T in mioDatabase.ServiziDiConsegnaTipologie on TR.ServiziDiConsegnaTipologieID equals T.ID
                                        join S in mioDatabase.ServiziDiConsegna on T.ServiziDiConsegnaID equals S.ID
                                        where ((S.ID == (int)comboServizio.SelectedValue) &&
                                            (TR.SiglaProvincia == SiglaProvincia) && (TR.Cap == Cap) && (TR.Localita == Localita))
                                        select new OreDiConsegna (T.ID,T.Nome,TR.Ore,TR.AggiuntaOreTempoConsegna);
                //Se non ho trovato niente prova senza localita
                if (ServizioLocalita.Count() == 0)
                {
                    ServizioLocalita = from TR in mioDatabase.ServiziDiConsegnaTempiDiResa
                                        join T in mioDatabase.ServiziDiConsegnaTipologie on TR.ServiziDiConsegnaTipologieID equals T.ID
                                        join S in mioDatabase.ServiziDiConsegna on T.ServiziDiConsegnaID equals S.ID
                                        where ((S.ID == (int)comboServizio.SelectedValue) &&
                                            (TR.SiglaProvincia == SiglaProvincia) && (TR.Cap == Cap) && (TR.Localita == ""))
                                       select new OreDiConsegna(T.ID, T.Nome, TR.Ore, TR.AggiuntaOreTempoConsegna);
                }
                //Se non ho trovato niente prova senza cap
                if (ServizioLocalita.Count() == 0)
                {
                    ServizioLocalita = from TR in mioDatabase.ServiziDiConsegnaTempiDiResa
                                        join T in mioDatabase.ServiziDiConsegnaTipologie on TR.ServiziDiConsegnaTipologieID equals T.ID
                                        join S in mioDatabase.ServiziDiConsegna on T.ServiziDiConsegnaID equals S.ID
                                        where ((S.ID == (int)comboServizio.SelectedValue) &&
                                            (TR.SiglaProvincia == SiglaProvincia) && (TR.Cap == "") && (TR.Localita == ""))
                                        select new OreDiConsegna ( T.ID, T.Nome, TR.Ore, TR.AggiuntaOreTempoConsegna );
                }
                //Se non ho trovato niente con la provincia mostra solo tutto!
                if (ServizioLocalita.Count() == 0)
                {
                    ServizioLocalita = from T in mioDatabase.ServiziDiConsegnaTipologie
                                        join S in mioDatabase.ServiziDiConsegna on T.ServiziDiConsegnaID equals S.ID
                                        where (S.ID == (int)comboServizio.SelectedValue)
                                       select new OreDiConsegna ( T.ID, T.Nome, 24, 0 );
                }

                //AssegnoDataSource
                if ((ServizioLocalita != null) && (ServizioLocalita.Count() >0))
                {
                    //DataTable tab = new DataTable();
                    //tab.Columns.Add("ID");
                    //tab.Columns.Add("Nome");
                    //tab.Columns.Add("ore");
                    //tab.Columns.Add("aggiunte");

                    //for (int i = 0; i < ServizioLocalita.ToList().Count(); i++)
                    //{

                    //    tab.Rows.Add(ServizioLocalita.ElementAt(i));

                    //}
                    //bindingSourceTipologia.DataSource = ServizioLocalita.ToList();
                   // comboBoxTipologia.DataSource = bindingSourceTipologia;
                    comboBoxTipologia.DataSource = ServizioLocalita.ToList();
                    comboBoxTipologia.DisplayMember = "Nome";
                    comboBoxTipologia.ValueMember = "ID";
                    stoAssegnandoDataSource = false;
                }
            }
            #endregion
        }

        private void CreazionePresa_Load(object sender, EventArgs e)
        {
            CaricaValoriFasulli();
        }
        #region Verifica Indirizzi
        private void VerificaIndirizzoDestinatario(object sender, EventArgs e)
        {
            //string Cap = textCapDestinatario.Text.ToLower();
            //string Localita= textLocalitaDestinatario.Text.ToLower();
            //string SiglaProvincia= textProvinciaDestinatario.Text.ToLower();
            comboServizio_SelectedIndexChanged(null, null);
        }

        private void VerificaIndirizzoMittente(object sender, EventArgs e)
        {
            int oraRitiro, telMittente, cap;
            if (!VerificaMittente(out oraRitiro, out telMittente, out cap))
                return;
            ////Se sono qui l'indirizzo è corretto!
            //string[] coordinate = testbed.ValidaIndirizzo.OttieniCoordinate(textLocalitaMittente.Text, textProvinciaMittente.Text, cap.ToString(), "IT", textIndirizzoMittente.Text, textCivicoMittente.Text);
            //if ((coordinate != null) && (coordinate.Length == 2))
            //{
            //    MessageBox.Show("Coordinate validate con successo!");
            //    ValidaIndirizzo schermataGoogle = new ValidaIndirizzo(textLocalitaMittente.Text, textProvinciaMittente.Text, textIndirizzoMittente.Text, textCivicoMittente.Text, textCapMittente.Text, "Italia");
            //    schermataGoogle.ShowDialog();
            //}
        }
        #endregion
        #region Tests
        private void CaricaValoriFasulli()
        {
            int a = 0, b = 0;
            int p, c;
            mioDatabase.ServiziDiConsegna.Clear();
            mioDatabase.ServiziDiConsegnaTipologie.Clear();
            if ((mioDatabase != null) && (mioDatabase.ServiziDiConsegna.Count == 0))
            {
                p = mioDatabase.ServiziDiConsegna.AddServiziDiConsegnaRow("Palletways", "PP", 0).ID;
                c = mioDatabase.ServiziDiConsegna.AddServiziDiConsegnaRow("Collettame", "PP", 0).ID;
                a = mioDatabase.ServiziDiConsegnaTipologie.AddServiziDiConsegnaTipologieRow("Ecoonomiy", p).ID;
                b = mioDatabase.ServiziDiConsegnaTipologie.AddServiziDiConsegnaTipologieRow("Premium", p).ID;
                mioDatabase.ServiziDiConsegnaTipologie.AddServiziDiConsegnaTipologieRow("Standard", c);
                mioDatabase.ServiziDiConsegnaTipologie.AddServiziDiConsegnaTipologieRow("Top Class", c);
            }
            mioDatabase.ServiziDiConsegnaTempiDiResa.Clear();
            if ((mioDatabase != null) && (mioDatabase.ServiziDiConsegnaTempiDiResa.Count == 0))
            {
                mioDatabase.ServiziDiConsegnaTempiDiResa.AddServiziDiConsegnaTempiDiResaRow(a, "33170", "pordenone", "pn", 48, 0);
                mioDatabase.ServiziDiConsegnaTempiDiResa.AddServiziDiConsegnaTempiDiResaRow(b, "33170", "pordenone", "pn", 24, 0);
                mioDatabase.ServiziDiConsegnaTempiDiResa.AddServiziDiConsegnaTempiDiResaRow(a, "31100", "treviso", "tv", 96, 0);
                mioDatabase.ServiziDiConsegnaTempiDiResa.AddServiziDiConsegnaTempiDiResaRow(b, "", "", "tv", 24, 0);
                mioDatabase.ServiziDiConsegnaTempiDiResa.AddServiziDiConsegnaTempiDiResaRow(b, "", "", "pn", 24, 0);
                mioDatabase.ServiziDiConsegnaTempiDiResa.AddServiziDiConsegnaTempiDiResaRow(a, "", "", "tv", 48, 0);
                mioDatabase.ServiziDiConsegnaTempiDiResa.AddServiziDiConsegnaTempiDiResaRow(a, "", "", "pn", 48, 0);
            }
            mioDatabase.WriteXml(nomeDatabase);
        }
        #endregion

        
    }

    class OreDiConsegna
    {
        public int ID;
        public string Nome;
        public int ore;
        public int aggiunte;

        public OreDiConsegna(int id, string n, int orebase, int oreaggiunte)
        {
            ID = id;
            Nome = n;
            ore = orebase;
            aggiunte = oreaggiunte;
        }

        public string returnNome()
        {
            return Nome;
        }


    }
}
grazie a tutti in anticipo!
3nigma666 è offline   Rispondi citando il messaggio o parte di esso
Old 25-05-2011, 21:47   #2
tacchinox
Member
 
Iscritto dal: Sep 2008
Messaggi: 237
Sicuro che non fosse comboBox.DisplayMember da impostare come "Id" ?
tacchinox è offline   Rispondi citando il messaggio o parte di esso
Old 26-05-2011, 13:15   #3
3nigma666
Senior Member
 
L'Avatar di 3nigma666
 
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
Quote:
Originariamente inviato da tacchinox Guarda i messaggi
Sicuro che non fosse comboBox.DisplayMember da impostare come "Id" ?

Teoricamente no, perchè DisplayMember contiene il nome della colonna che voglio visualizzare (che nel mio caso è la colonna denominata NOME, che contiene il nome del servizio che sto inserendo o ho inserito nel database), mentre invece valuemember contiene il nome della colonna da dove vengono presi i valori da assegnare all'oggetto selezionato nella comboBox..
3nigma666 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Sony mostra in anteprima la propria tecn...
Dreame A3 AWD: a IFA 2025 debutta il rob...
OpenAI, il chip proprietario per l'AI &e...
OnePlus e Hasselblad si separano: una nu...
Ayaneo Pocket Air Mini: la retro console...
Amazon sfida tutti: crollano iPhone e Ma...
MacBook Pro con chip M4 a 1.649€ e MacBo...
Dreame a IFA 2025: robot capaci di salir...
AirPods 4 contro AirPods Pro 2: Amazon l...
Amazon in furore da sconti: tutti gli iP...
RTX Hair in Indiana Jones e l'Antico Cer...
Robot aspirapolvere super scontati su Am...
Windows Mixed Reality: un ingegnere Micr...
Qualcomm: Intel non è ancora pron...
BMW e Qualcomm lanciano Snapdragon Ride ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:18.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v