2013-03-26 90 views
1

我有此組合框從SQL獲取值:列表視圖值組合框

public void brandSelectCB(ComboBox cb) 
{ 
    string sSQL = " SELECT" + 
        "  id, name" + 
        " FROM" + 
        "  tbBrand" + 
        " ORDER BY" + 
        "  name"; 

    sqlConnect connect = new sqlConnect(); 
    DataTable dt = new DataTable(); 
    dt = connect.getBD(sSQL); 

    cb.DataSource = dt; 
    cb.DisplayMember = "name"; 
    cb.ValueMember = "id"; 
} 

我也有一個ListView這樣的:

public void modelSelect(ListView lvModel) 
{ 
    string sSQL = " SELECT" + 
        "  tbModel.id, tbBrand.name AS brand, tbModel.name" + 
        " FROM" + 
        "  tbBrand, tbModel" + 
        " WHERE" + 
        "  tbBrand.id = tbModel.brand" + 
        " ORDER BY" + 
        "  tbBrand.name, tbModel.name"; 

    sqlConnect connect = new sqlConnect(); 
    DataTable dt = new DataTable(); 
    dt = connect.getBD(sSQL); 

    foreach (DataRow dr in dt.Rows) 
    { 
     ListViewItem item = new ListViewItem(dr["id"].ToString()); 
     item.SubItems.Add(dr["brand"].ToString()); 
     item.SubItems.Add(dr["name"].ToString()); 

     lvModel.Items.Add(item); 
    } 
} 

當我選擇從列表視圖一行,然後單擊編輯按鈕,它應該從該選定行的值到相應的組合框和文本框:

private void btnEdit_Click(object sender, EventArgs e) 
{ 
    this.txtID.Text = lvModels.SelectedItems[0].SubItems[0].Text; 
    this.cbBrand.SelectedText = lvModels.SelectedItems[0].SubItems[1].Text; 
    this.txtName.Text = lvModels.SelectedItems[0].SubItems[2].Text; 
} 

但我得到組合框中沒有值,僅在文本框中。我意識到,這是因爲組合是在下拉列表樣式,我應該使用SelectedValueSelectedItem,但他們都沒有工作。

任何想法?

回答

0

您可以嘗試這樣的事:

string brandText = lvModels.SelectedItems[0].SubItems[1].Text; 
DataRow itemToSelect = ((DataTable) this.cbBrand.DataSource) 
          .Rows 
          .Cast<DataRow>() 
          .FirstOrDefault(r=>r.Field<string>("name").Equals(brandText)); 
if(itemToSelect != null) 
    cbBrand.SelectedItem = itemToSelect; 

免責聲明:我沒有測試了這一點;這是來自記憶。

如果您在ListViewItem的某個地方藏起BrandID,這將會更簡單:那麼您可以使用SelectedValue

+0

我知道它這樣工作,你給了我一個主意......你的回答對我來說太複雜了:)謝謝 int xcb; xcb = this.cbBrand.FindString(lvMain.SelectedItems [0] .SubItems [1] .Text); this.cbBrand.SelectedIndex = xcb; – n3bi0s 2013-03-27 12:03:00