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";
}

我也有一个这样的列表视图:

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但它们似乎都不起作用。

有任何想法吗 ?

4

1 回答 1

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;

免责声明:我没有对此进行测试;这是记忆中的。

如果您将 BrandID 隐藏在ListViewItem: 中的某个位置,这会更简单,那么您可以使用SelectedValue.

于 2013-03-26T17:42:13.677 回答