|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
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; } } Codice:
comboBoxTipologia.ValueMember = "ID"; 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; } } } |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Sep 2008
Messaggi: 237
|
Sicuro che non fosse comboBox.DisplayMember da impostare come "Id" ?
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jan 2005
Città: A casa mia
Messaggi: 825
|
Quote:
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.. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:18.