Mehmet Fatih

Mehmet Fatih

  • 855
  • 931
  • 39.8k

Conditionally Active Datagridview ComboBox

Jul 29 2023 11:02 PM

I want only the comboBoxes that are in front of the checked checkboxes to be active and the others to be passive. My codes are those.  How can I integrate these codes?

private void button1_Click(object sender, EventArgs e)
{
    int i = 0;
    List<int> ChkedRow = new List<int>();
    if (dataGridView1.Rows.Count > 0)
        for (i = 0; i <= dataGridView1.RowCount - 1; i++)
        {
            if (Convert.ToBoolean(dataGridView1.Rows[i].Cells["pid"].Value) == true)
            {
                ChkedRow.Add(i);
            }
        }
    if (ChkedRow.Count == 0)
    {
        MessageBox.Show("Geziye katilacak personel seçimi yapilmadi. Geziye gidecek personeli seçmek için en bastaki kutucuklari isaretleyiniz!");
        return;
    }
    DataGridViewComboBoxColumn comboBoxColumn = dataGridView1.Columns["kbaskani"] as DataGridViewComboBoxColumn;
    if (comboBoxColumn != null)
    {
        int yesCount = 0;
        int rowIndexWithMultipleYes = -1;
        //Evet sayisini hesaplama ve birden fazla eveti hafizaya alma
        for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++)
        {
            DataGridViewRow row = dataGridView1.Rows[rowIndex];
            string cellValue = row.Cells[comboBoxColumn.Index].Value?.ToString();
            if (cellValue == "Evet")
            {
                yesCount++;
                if (yesCount > 1)
                {
                    rowIndexWithMultipleYes = rowIndex;
                    break;
                }
            }
        }
        //Evet sayimina dayali sonuç gösterme
        if (yesCount == 0)
        {
            MessageBox.Show("Kafile baskani seçmediniz. Bir kisi kafile baskani olarak seçilmelidir.", "UYARI", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
        else if (yesCount > 1)
        {
            MessageBox.Show("Birden fazla kafile baskani seçtiniz. Yalnizca bir kisi kafile baskani olarak seçilmelidir.", "UYARI", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;
        }
        else if (rowIndexWithMultipleYes != -1)
        {
            //1'den fazla kisi seçimi durumunda yapilacak uyari
            for (int rowIndex = 0; rowIndex < dataGridView1.Rows.Count; rowIndex++)
            {
                if (rowIndex != rowIndexWithMultipleYes)
                {
                    dataGridView1.Rows[rowIndex].Cells[comboBoxColumn.Index].Value = "Hayir";
                }
            }
        }
    }
}

 


Answers (2)