2016-01-29 10 views
5

Come posso ottenere il valore di ID di uscita su una casella combinata? questo è il mio codice per ottenere i valori dal Database e memorizzarlo su una casella combinata.Come ottenere dati dal database SQL per archiviare in una casella combinata - C#

public partial class Addstock : Form 
{ 
    String connectionString = ConfigurationManager.ConnectionStrings["TCConnectionString"].ConnectionString; 
    List<BOStockTransfer> StockList = new List<BOStockTransfer>(); 
    int updateIndex = -1; 

    public Addstock() 
    { 
     InitializeComponent(); 
    } 

    private void Addstock_Load(object sender, EventArgs e) 
    { 
     loadstock(); 
     GetOutlets(); 
     Getproduct(); 
     GetGetWH(); 
     cmdoutletID.Visible = false; 
     lbloutid.Visible = false; 
     cmdwh.Visible = false; 
     lblwh.Visible = false; 
    } 

    private void GetOutlets() 
    { 


     BOStockTransfer obj_StockTransfer = new BOStockTransfer(); 
     DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString); 

     if (ds_OutletList.Tables[0].Rows.Count != 0) 
     { 
      cmdoutletID.DataSource = ds_OutletList.Tables[0]; 
      cmdoutletID.DisplayMember = "outletId"; 
     } 

    } 

My Database

Grazie per il vostro aiuto!

+0

Qual è il risultato? Stai ricevendo errori? – Minh

+0

Non riesco a vedere i valori dell'ID presa nella casella combinata –

+0

Cosa vuoi? Che errore hai? Si prega di essere più specifico. – AnhTriet

risposta

0

che si sta configurando:

cmdoutletID.Visible = false; 

ciò che rende la casella combinata invisibile

è necessario impostare come segue:

cmdoutletID.Visible = true; 

Dopo aver aggiunto le immagini, il nome della colonna è outletID e non outletId quindi modificare il codice come segue:

private void GetOutlets() 
    { 
    BOStockTransfer obj_StockTransfer = new BOStockTransfer(); 
    DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString); 

    if (ds_OutletList.Tables[0].Rows.Count != 0) 
    { 
     cmdoutletID.DataSource = ds_OutletList.Tables[0]; 
     cmdoutletID.DisplayMember = "outletID"; 
     cmdoutletID.ValueMember = "outletID"; 
     cmdoutletID.Enabled = true; 

    } 

} 
+0

grazie per il vostro aiuto, ma ancora non warking –

+0

@ChathuraKanchana Ho modificato la mia risposta, mi dica se funziona – Karamafrooz

+0

ancora non funziona –

0

La casella combinata ha due proprietà che determinano dove carica i dati da:

DisplayMember 

ValueMember 

La proprietà "ValueMember" definisce che ha chiamato campo popola "ValueProperty" del ListItem. In questo modo, quando esegui combobox.SelectedItem.Value, otterrai il valore memorizzato nel campo denominato specificato per "ValoreProperty".

Supponendo che si sia certi che la query restituisca le righe, provare ad aggiungere gli articoli "manualmente" anziché affidarsi a un'associazione dati automatica.

private void GetOutlets() 
{ 
    BOStockTransfer obj_StockTransfer = new BOStockTransfer(); 
    DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString); 

    cmdoutletID.DisplayMember = "outletId"; 
    cmdoutletID.ValueMember = "pkID"; 
    cmdoutletID.BeginUpdate(); 
    try 
    { 
     cmdoutletID.Items.Clear(); 
     foreach (var row in ds_OutletList.Tables[0].Rows) 
      cmdoutletID.Items(new { outletid = row["outletid"], pkID = row["primaryKeyIDFieldName"] }); 

    } 
    finally { cmdoutletID.EndUpdate(); } 
} 
+0

Errore 'System.Windows.Forms.ComboBox' non contiene una definizione per 'DataBind' e nessun metodo di estensione 'DataBind' che accetta un primo argomento di tipo 'System.Windows.Forms.ComboBox' potrebbe essere trovato –

+0

Scusa, a quanto pare ho fatto troppo sviluppo ASP.NET. Sei corretto che i controlli Windows.Forms non implementino un metodo 'DataBind()' esplicito. Aggiornerò la mia risposta –

0

Prova questo:

BOStockTransfer obj_StockTransfer = new BOStockTransfer(); 
     DataSet ds_OutletList = obj_StockTransfer.GetOutlets(connectionString); 

     if (ds_OutletList.Tables[0].Rows.Count != 0) 
     { 
      cmdoutletID.DataSource = ds_OutletList.Tables[0]; 
      cmdoutletID.DisplayMember = "outletname"; 
      cmdoutletID.ValueMember = "outletId"; 
     } 

Per catturare valore selezionato, ad esempio il pulsante di scatto:

protected button1_Click(object o, EventArgs e) 
{ 
    var selectedId = cmboutletID.SelectedValue; 
MessageBox.Show(selectedId); 
} 
Problemi correlati