2016-04-13 8 views
0

データグリッドビューにコンボボックスを追加しようとしています。これは私がコンボボックスとして設定し、自分のデータベースのカテゴリテーブルからカテゴリ名を読みしようとしているデータグリッドビューのデータグリッドビューの列5のためのコンボボックスをデータグリッドに追加するビュー

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

ためのコードです。

私はこのコードで始まるんだけど、私は

 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

私はそれをやってみましたが、私が得るものはすべて空のデータグリッドです私のデータソースコードを変更する必要があります以前は問題がなかったので何も変更されていませんでした。 – zozi

+0

表示する各列に対して新しい列エントリを作成する必要があります。これは、datagridviewのデータソースを設定する前に行います。 DataPropertyNameは、DataTableの列名と一致する必要があります。これでも問題が解決しない場合は、現在のバージョンのコードを投稿してください。 –

+0

それは今働いています。ありがとう – zozi

関連する問題