2016-04-13 52 views
0

我试图添加组合框到datagrid视图。这是数据网格视图将组合框添加到数据网格视图

  SqlDataAdapter da = new SqlDataAdapter("SELECT pid, pdtName, amount, Qty,day, cat from purchase where [email protected] and [email protected]", ConnectionInfo.con); 
      da.SelectCommand.Parameters.AddWithValue("@year", comboBox3.Text); 
      da.SelectCommand.Parameters.AddWithValue("@month", comboBox2.Text); 



      DataTable dt = new DataTable(); 

      da.Fill(dt); 
      dataGridView1.DataSource = dt; 
      this.dataGridView1.Columns[0].HeaderText = "number"; 
      this.dataGridView1.Columns[0].ReadOnly = true; 
      this.dataGridView1.Columns[0].Visible = false; 
      this.dataGridView1.Columns[1].HeaderText = "name"; 
      this.dataGridView1.Columns[2].HeaderText = "amount"; 
      this.dataGridView1.Columns[3].HeaderText = "number"; 
      this.dataGridView1.Columns[4].HeaderText = "day"; 
      this.dataGridView1.Columns[5].HeaderText = "category"; 

在数据网格视图我试图将其设置为组合框,在我的数据库中读取从类别表中的类别名称5列的代码。

我开始用这个代码,但我不知道如何去完成它

 string query = "select distinct cat from purchase "; 
      SqlDataAdapter da2 = new SqlDataAdapter(query, ConnectionInfo.con); 

      DataSet ds2 = new DataSet(); 
      da2.Fill(ds2, "purchase"); 

     DataGridViewComboBoxColumn cmb = new DataGridViewComboBoxColumn(); 
     cmb.HeaderText = "cat"; 
     cmb.Name = "cmb"; 
     cmb.DataSource=ds2 

你能指出什么是错在我的代码,或者帮助我以另一种方式来解决我的问题

+0

可能是这样的:http://stackoverflow.com/questions/12747256/datagridview-set-column-cell-combobox –

回答

1

您需要使用DataGridViewTextBoxColumn或DataGridViewComboBoxColumn格式化每列,并将其添加到DataGridView中。确保将AutoGenerateColumns设置为false。类似于:

dataGridView1.Columns.Clear(); 
    dataGridView1.AutoGenerateColumns = false; 

    DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn(); 
    column.DataPropertyName = "Description"; 
    column.Name = "Description"; 
    column.HeaderText = "Description"; 
    column.Width = 150; 
    //column.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 
    dataGridView1.Columns.Add(column) 

    DataGridViewComboBoxColumn ccolumn = new DataGridViewComboBoxColumn(); 
    ccolumn.DataPropertyName = "cmb"; 
    ccolumn.Name = "cmb"; 
    ccolumn.HeaderText = "Cat"; 
    ccolumn.Width = 65; 
    ccolumn.DataSource = ds2; 
    ccolumn.DisplayMember = "cat"; 
    ccolumn.ValueMember = "cat"; 
    dataGridView1.Columns.Add(ccolumn); 

在将DataSource分配给DataGridView之前,请执行所有这样的列。

+0

我试过这样做,但所有我得到的是一个空的datagrid我应该改变我的数据源代码,我没有改变任何东西,因为我之前没有任何问题 – zozi

+0

您需要为每个要显示的列创建一个新的列条目。在设置datagridview的数据源之前执行此操作。 DataPropertyName必须与DataTable中的列名称匹配。如果这仍然不起作用,请发布当前版本的代码,然后我会查看它。 –

+0

现在正在工作。谢谢 – zozi

相关问题