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

しかし、コンボボックスには値が表示されず、テキストボックスにのみ値が表示されます。コンボがドロップダウンリストスタイルであるためだと思います。使用するSelectedValue必要SelectedItemがありますが、どちらも機能しないようです。

何か案は ?

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 に答える