数据网格视图中的下拉列表

DropDown in datagridView

你好,我在 windows 表单中有 2 个 datagridView,在 1 个 datagridview 中有一个组合框,像这样

当我更改组合框的值时,datagridview 中的表应该是 updated.For 例如,如果我 select 第二个组合框作为 outputmetadatafield1 那么该行的列应该更新为输出元数据中的第一行 table.by 我无法将侦听器添加到组合框,至于 dropdowns_selectedindexchanged.Can 谁能告诉我该怎么做。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        load_input_table();
        load_output_table();
    }
    static String conn = @"Data Source=SUMEET-PC\MSSQLSERVER1;Initial Catalog=EMIDS;Integrated Security=True";
    SqlConnection connection = new SqlConnection(conn);

    private void load_input_table()
    {
        String sql = "select * from input_metadata";
        SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
        DataTable table = new DataTable();
        adapter.Fill(table);
        BindingSource b = new BindingSource();
        b.DataSource = table;
        dataGridView1.DataSource = b;
        addcombo();

    }
    private void addcombo()
    {
        DataGridViewComboBoxColumn inputtablecombobox = new DataGridViewComboBoxColumn();
        inputtablecombobox.HeaderText = "field";
        inputtablecombobox.Name = "inputtablecombobox";
        String combosql = "select field from input_metadata";
        SqlDataAdapter comboadapter = new SqlDataAdapter(combosql, connection);
        DataSet ds = new DataSet();
        comboadapter.Fill(ds);
        inputtablecombobox.DataSource = ds.Tables[0];
        inputtablecombobox.DisplayMember = "field";
        inputtablecombobox.ValueMember = "field";
        dataGridView1.Columns.Add(inputtablecombobox);
    }
    private void load_output_table()
    {
        String sql = "select * from output_metadata";
        SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
        DataTable table = new DataTable();
        adapter.Fill(table);
        BindingSource b = new BindingSource();
        b.DataSource = table;
        dataGridView2.DataSource = b;
    }
    private void inputtablecombobox_SelectedIndexChanged(object sender, EventArgs e)
    {
          MessageBox.Show("text");
    }
}

谢谢!我找到了答案

public Form1()
    {
        InitializeComponent();
        load_input_table();
        load_output_table();
        dataGridView1.EditingControlShowing += new DataGridViewEditingControlShowingEventHandler(dataGridView1_EditingControlShowing);
    }

    static String conn = @"Data Source=SUMEET-PC\MSSQLSERVER1;Initial Catalog=EMIDS;Integrated Security=True";
    SqlConnection connection = new SqlConnection(conn);
    DataGridViewComboBoxColumn inputtablecombobox = new DataGridViewComboBoxColumn();

    private void load_input_table()
    {
        String sql = "select * from input_metadata";
        SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
        DataTable table = new DataTable();
        adapter.Fill(table);
        BindingSource b = new BindingSource();
        b.DataSource = table;
        dataGridView1.DataSource = b;
        addcombo();

    }

    private void addcombo()
    {
        inputtablecombobox.HeaderText = "field";
        inputtablecombobox.Name = "inputtablecombobox";
        String combosql = "select field from input_metadata";
        SqlDataAdapter comboadapter = new SqlDataAdapter(combosql, connection);
        DataSet ds = new DataSet();
        comboadapter.Fill(ds);
        inputtablecombobox.DataSource = ds.Tables[0];
        inputtablecombobox.DisplayMember = "field";
        inputtablecombobox.ValueMember = "field";
        dataGridView1.Columns.Add(inputtablecombobox);
    }

    private void load_output_table()
    {
        String sql = "select * from output_metadata";
        SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
        DataTable table = new DataTable();
        adapter.Fill(table);
        BindingSource b = new BindingSource();
        b.DataSource = table;
        dataGridView2.DataSource = b;
    }

    private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        ComboBox combo = e.Control as ComboBox;
        if (combo != null)
        {
            combo.SelectedIndexChanged -= new EventHandler(inputtablecombobox_SelectedIndexChanged);
            combo.SelectedIndexChanged += new EventHandler(inputtablecombobox_SelectedIndexChanged);
        }
    }
    private void inputtablecombobox_SelectedIndexChanged(object sender, EventArgs e)
    {
        MessageBox.Show(text);
    }
}