2013-07-30 40 views
0

希望我不會聽起來有些困惑,但我不確定是否可以嘗試獲取。從組合框中獲取select語句列信息

我有一個選擇語句來獲取名稱,ID,GUID。我將顯示設置爲每個組合框的名稱和Id的值。有沒有辦法,我也可以將GUID分配給組合框,以便我可以在我的WinForms應用程序中使用它?

以下是我對select語句:

private void secondChild_drp_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string secondChildId = secondChild_drp.SelectedValue.ToString(); 
     using (SqlConnection con = new SqlConnection(conString)) 
     { 
      con.Open(); 
      using (SqlDataAdapter sda = new SqlDataAdapter("SELECT ... WHERE em.ChildID = (" + secondChildId + ")", conString)) 
      { 
       DataTable dt = new DataTable(); 
       sda.Fill(dt); 
       thirdChild_drp.ValueMember = "ID"; 
       thirdChild_drp.DisplayMember = "DisplayName"; 
       thirdChild_drp.DataSource = dt; 
      } 
     } 
     cmd.CommandText="StoreProcName"; 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Parameters.AddWithValue("@ChildID", secondChildId); 
     cmd.Connection = con2; 
     con2.Open(); 
     reader = cmd.ExecuteReader(); 
     var guid = reader.ToString(); 
     reader.Close(); 
     con2.Close(); 
    } 

現在當我運行這個它告訴我reader = cmd.ExecuteReader();Procedure or function StoreProcName has too many arguments specified.

我只是想用我傳入的ID相關聯的GUID 。

+0

您的意思是2個值的成員? – Ehsan

+0

@EhsanUllah yes – Masriyah

+0

你想要做什麼。我們可能會給你一個解決方法? – Ehsan

回答

1

你可以從你的DataTable中的GUID如下,其中yourselectedid是ComboBox selectedItem屬性ID。

var results = from row in dt.AsEnumerable() 
where row.Field<int>("ID") == yourselectedid 
select row; 
現在從結果

你可以得到所有你想要

+0

我會試一試 – Masriyah

+0

@Masriyah有什麼好運? – Ehsan

+0

因此,我實際上創建了一個存儲過程,當我傳入ID爲 – Masriyah

0

基本上相同的答案,因爲我已經張貼here

你可以定義一個簡單的對象,你是從你的數據庫查詢填充:

public class Item 
{ 
     public int ID { get; set; } 
     public string DisplayName { get; set; } 
     public Guid Guid{ get; set; } 
} 

你的實現可能看起來像這樣(一些模型數據):

listBox1.DataSource = items; 
    listBox1.DisplayMember = "DisplayName"; 
    listBox1.ValueMember = "ID"; 

然後根據您選擇的值,可以查詢通過您的項目,並獲得該項目:

var key = (int)listBox1.SelectedValue; 
    foreach (var existingItem in items) 
    { 
      if (existingItem.Key == key) 
      { 
       //woohoo got it! 
       Debug.Print(existingItem.Guid.ToString()) 
      } 
    } 
+0

'listBox1.DataSource = items;'從哪裏來的物品? – Masriyah

+0

@Masriyah看看完整的答案;) –

0

你可以把兩個值中值的成員所需的列,由哪個字符分隔等分離:「12; 0000-000- 0000「,然後用String.Split再次分開Value Menber。