2016-07-26 44 views
-1

我試圖在組合框中的項目上設置值,但每次嘗試時都會得到結果'null'。我是否定義了錯誤的價值,還是我試圖以錯誤的方式獲得價值?將值設置爲ComboBoxs項目#C

// Setting the value 
sqlCmd.CommandText = "SELECT Id, Ime FROM Unajmljivaci WHERE Aktivan = 0"; 
conn.Open(); 
using (var reader = sqlCmd.ExecuteReader()) 
{ 
    while (reader.Read()) 
    { 
     cmbUnajmljivaci.Items.Add(new { Id = reader["Id"].ToString(), Ime = reader["Ime"].ToString() }); 
    } 
    cmbUnajmljivaci.ValueMember = "Id"; // <--- 
    cmbUnajmljivaci.DisplayMember = "Ime"; 
} 

//Retrieving the value 
sqlCmd.Parameters.AddWithValue("@SifraUnajmljivca", Convert.ToString(cmbUnajmljivaci.SelectedValue)); 
+0

究竟是怎麼回事?你在cmbUnajmljivaci.Items.Add語句中收到任何錯誤嗎? –

+0

WinForms或WPF? – sebingel

+0

@TheShooter我沒有得到任何錯誤,它只是保存'null'而不是我想要的值。 –

回答

0
  using (SqlConnection sqlConn = new SqlConnection("CONNECTION STRING")) 
      { 
       DataSet ds = new DataSet(); 
       SqlCommand sqlCmd = sqlConn.CreateCommand(); 
       sqlConn.Open(); 
       SqlDataAdapter SQA_DataAdapter = new SqlDataAdapter(sqlCmd); 
       SQA_DataAdapter.SelectCommand = new SqlCommand("SELECT Id, Ime FROM Unajmljivaci WHERE Aktivan = 0", sqlConn); 
       SQA_DataAdapter.Fill(ds, "Table"); 
       if (ds != null) 
       if (ds .Tables.Count > 0) 
       { 
        cmbUnajmljivaci.ValueMember = "Id"; 
        cmbUnajmljivaci.DisplayMember = "Ime"; 
        cmbUnajmljivaci.DataSource = ds.Tables[0]; 
       } 
       sqlConn.Close(); 
      } 
+0

可以使用一些解釋去代碼轉儲 – MikeT

0

您需要設置組合框的數據源。

+0

你能給我多一點請詳細回答?我不知道你是如何設置數據源的。 –

+0

cmbUnajmljivaci.DataSource = <您的數據源可能是IList>; –

0

嘗試所獲得的價值是這樣的:

dynamic dyn = cmbUnajmljivaci.SelectedItem; 
string s = dyn.Id; 

甚至內嵌這樣的:對於參考,您的問題

//Retrieving the value 
sqlCmd.Parameters.AddWithValue("@SifraUnajmljivca", Convert.ToString(((dynamic)cmbUnajmljivaci.SelectedItem).Id); 
0

示例代碼,

DataSet ds = new DataSet(); 
    DataTable dt = ds.Tables.Add(); 
    dt.Columns.Add("ID"); 
    dt.Columns.Add("Name"); 
    dt.Rows.Add("0", "Item1"); 
    dt.Rows.Add("1", "Item2"); 

對於插入您需要的具有指定索引的項目使用下面的代碼

//Insert the item into the collection with specified index 
     foreach (DataRow row in dt.Rows) 
     { 
      int id = Convert.ToInt32(row["ID"]); 
      string name=row["Name"].ToString(); 
      comboBox1.Items.Insert(id,name); 

     } 

始終索引應該開始從0(零)

簡單的方法增加值組合框

comboBox1.DataSource=dt; 
comboBox1.DisplayMember = "Name"; 
comboBox1.ValueMember = "ID"; 
相關問題