gani7787 Ответов: 1

C# - ячейка поля со списком datagridview не обновляется должным образом.


Привет,

Я использую datagridview.

я просто хочу обновить значение ячейки combobox. i значение ячейки должно обновляться в зависимости от моего состояния.

Но проблема в том, что всегда отображается значение combobox, которое является последним выполненным значением. остальных условие обновления клеток.

в чем проблема в моем коде?

выборочные данные.

EMPNO	STATUS (Dropdown)
101	1-EXCELLENT 2-MODERATE
102	1-EXCELLENT 2-MODERATE 3-GOOD 4-AVERAGE
103	1-EXCELLENT 2-MODERATE 3-GOOD 4-AVERAGE
104	1-EXCELLENT 2-MODERATE
105	1-EXCELLENT 2-MODERATE 3-GOOD 4-AVERAGE
106	1-EXCELLENT 2-MODERATE 3-GOOD 4-AVERAGE


Что я уже пробовал:

List<string> Emplist = new List<string>(); 
foreach (DataRow row in dt.Rows)
 {
         Grid1.Rows.Add();
         Grid1[0, cnt].Value = row["EmpNO"].ToString();
         Grid1.UpdateCellValue(0, cnt);
         DataGridViewComboBoxCell cbobox = (DataGridViewComboBoxCell)Grid1[1, cnt];
	 
	 if (cbobox.Items.Count == 0)
         {
		// Conditions
	   
	 if ((Mark1 != 0) && (SUB == "H1"))
         {
             Emplist.Clear();
             Emplist.Add("1-EXCELLENT");
             Emplist.Add("2-MODERATE");
             cbobox.DataSource = Emplist;
             Grid1.UpdateCellValue(3, cnt);

         }
	 else if ((Mark2 != 0) && (SUB2 == "H2"))
         {
             Emplist.Clear();
             Emplist.Add("1-EXCELLENT");
             Emplist.Add("2-MODERATE");
	     Emplist.Add("3-GOOD");
             Emplist.Add("3-AVERAGE");
             cbobox.DataSource = Emplist;
             Grid1.UpdateCellValue(3, cnt);

         }


	 }

	 Grid1.UpdateCellValue(1,cnt);
         Grid1.Refresh();
         cnt++;

  
 }

1 Ответов

Рейтинг:
2

gani7787

Thanks.

i tried one more ideas.

I have added different list item to map the combo box cell. it's also working.

Example

List<string> Emplist1 = new List<string>(); 

List<string> Emplist2 = new List<string>(); 

foreach (DataRow row in dt.Rows)
 {
         Grid1.Rows.Add();
         Grid1[0, cnt].Value = row["EmpNO"].ToString();
         Grid1.UpdateCellValue(0, cnt);
         DataGridViewComboBoxCell cbobox = (DataGridViewComboBoxCell)Grid1[1, cnt];
       
       if (cbobox.Items.Count == 0)
         {
            // Conditions
         
       if ((Mark1 != 0) && (SUB == "H1"))
         {
             Emplist.Clear();
             Emplist.Add("1-EXCELLENT");
             Emplist.Add("2-MODERATE");
             cbobox.DataSource = Emplist1;
             Grid1.UpdateCellValue(3, cnt);

         }
       else if ((Mark2 != 0) && (SUB2 == "H2"))
         {
             Emplist.Clear();
             Emplist.Add("1-EXCELLENT");
             Emplist.Add("2-MODERATE");
           Emplist.Add("3-GOOD");
             Emplist.Add("3-AVERAGE");
             cbobox.DataSource = Emplist2;
             Grid1.UpdateCellValue(3, cnt);

         }


       }

       Grid1.UpdateCellValue(1,cnt);
         Grid1.Refresh();
         cnt++;

  
 }


This is also working and simple


Graeme_Grant

Пожалуйста, не публикуйте обновления в качестве решения этого вопроса. Это всех собьет с толку. Вместо этого удалите это решение и нажмите кнопку Далее Улучшить вопрос виджет для добавления дополнительной информации к вопросу.