[c#] DataGridViewComboBoxColumn - 각 행에 다른 항목을 추가합니다.


Answers

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == DataGridViewComboBoxColumnNumber)
    {
        setCellComboBoxItems(myDataGridView, e.RowIndex, e.ColumnIndex, someObj);
    }
}
Question

사용자가 각 셀의 드롭 다운에서 항목을 선택할 수있는 DataGridView를 사용하여 테이블을 작성합니다. 문제를 단순화하기 위해 1 열이 있다고 가정 해 보겠습니다. 디자이너에서 DataGridViewComboBoxColumn을 사용하고 있습니다. 해당 열의 각 행에 선택할 항목 목록이 다르다는 것을 지원하려고합니다.

이것이 가능한가?




이것은 2 개의 comboboxColumns를 가진 gridView의 예이고 comboBoxColumns1 선택된 인덱스가 변경되면 comboBoxColumns2를 데이터베이스의 두 개의 다른 열에서 가져온 데이터로로드합니다.

 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
              if (dataGridView1.Rows[e.RowIndex].Cells[0].Value != null && dataGridView1.CurrentCell.ColumnIndex == 0)
            {

                SqlConnection conn = new SqlConnection("data source=.;initial catalog=pharmacy;integrated security=true");
                SqlCommand cmd = new SqlCommand("select [drugTypeParent],[drugTypeChild] from [drugs] where [drugName]='" + dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString() + "'", conn);
                conn.Open();
                SqlDataReader dr = cmd.ExecuteReader();
                while (dr.Read())
                {

                    object[] o = new object[] { dr[0].ToString(),dr[1].ToString() };
                    DataGridViewComboBoxCell dgvcbc = (DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells[1];

                    dgvcbc.Items.Clear();
                    foreach (object itemToAdd in o)
                    {
                        dgvcbc.Items.Add(itemToAdd);
                    }
                }
                dr.Close();
                conn.Close();
               }
            }



Links