Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-05-2011, 18: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, 22: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, 14: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


Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
POCO M8: display AMOLED luminoso, batter...
ECOVACS, tante novità a Las Vegas...
Caso Galaxy Ring difettoso: Samsung chiu...
Targa e assicurazione per monopattini el...
AI Cloud Protect: la soluzione di Check ...
Nuovo spettacolare video del razzo spazi...
Hisense presenta a CES 2026 il display M...
XPeng P7+ è pronta per l'Europa: ...
IKEA nuove lampade Matter annunciate al ...
Il telescopio Hubble potrebbe andare dis...
Hisense introduce RGB MiniLED evo (a qua...
Deumidificatore De'Longhi in offerta su ...
OnePlus 15R: il 'battery phone' pi&ugrav...
Beats Studio Pro a un super prezzo su Am...
Car of the Year, la Mercedes CLA eletta ...
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: 19:07.


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