网格视图中的组合框/下拉列表c#.net

时间:2014-09-03 20:07:45

标签: c# winforms

我是c#.net winforms应用程序的新手。我有一个数据网格wch显示一些数据,其中一个列shud成为下拉列表或组合框。我如何在我的代码中使用它。请帮忙。

private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
   DataGridViewComboBoxColumn combo = (DataGridViewComboBoxColumn)dataGridView1.Rows[e.RowIndex].Cells[3].OwningColumn;
   sql = "select NAME FROM Suppliers";
   BindingSource bsource = new BindingSource();
   bsource.DataSource = obj.SqlDataTable(sql);
   dataGridView1.DataSource = bsource;
   combo.HeaderText = "Select Supplier";
 }

我想用相应供应商表中的供应商名称填充数据网格的第3列。数据网格视图已经填充了来自连接查询的数据,其中一个字段是供应商(我想转换为下拉列表或组合框)。如果您需要任何进一步的信息来澄清,请告诉我。

        I Modified my code as follows:

        DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
        combo.HeaderText = "Suppliers";
        //execute sql data adapter to get supplier values
        DataTable dt = obj.SqlDataTable("select NAME from CUSTOMERS");
        foreach (DataRow supplier in dt.DataSet.Tables[0].Rows)
        {
            combo.Items.Add(supplier[0]);
        }
        dataGridView1.Columns.Add(combo);

现在我在"得到一个空引用异常dt.DataSet.Tables [0] .Rows"  。请帮助。我不确定是否遗漏了什么。

1 个答案:

答案 0 :(得分:0)

试试此代码

string strcon = @"Data Source=kp;Initial Catalog=Name;Integrated Security=True;Pooling=False";
        SqlConnection con;
        SqlCommand cmd;
        SqlDataAdapter da;
        DataTable dt;
        DataGridViewComboBoxColumn dgvCmb;
        public Form2()
        {
            InitializeComponent();
            grdcmd();
        }
        public void grdcmd()
        {
            con = new SqlConnection(strcon);
            con.Open();
            string qry = "Select * from Dbname";
            da = new SqlDataAdapter(qry, strcon);
            dt = new DataTable();
            da.Fill(dt);
            dgvCmb = new DataGridViewComboBoxColumn();
            foreach (DataRow row in dt.Rows)
            {
                dgvCmb.Items.Add(row["Fname"].ToString());
            }
            dataGridView1.Columns.Add(dgvCmb);
        }