2016-04-05 3 views
-2

У меня есть datagridview с тремя столбцами: идентификатор счета, цена и флажок.DataGridView CellContent Checkbox Change Event

Если щелкнуто галочкой, цена будет равна 0 для этой строки. Теперь это происходит.

Но когда я сниму флажок, цена должна быть такой, какая была. Но он остается равным нулю. Ниже приведен мой код для нажатия на элемент управления сайтом. Как я могу получить предыдущую цену, если флажок не установлен?

private void grvItems_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    var senderGrid = (DataGridView)sender; 
    DataGridViewRow row = this.grvItems.CurrentRow; 
    if (e.RowIndex >= 0) 
    { 
     if (senderGrid.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn && 
      e.RowIndex >= 0) 
     { 
      if (e.ColumnIndex == grvItems.Columns["UnderWarranty"].Index) 
      { 
       string returnAmt = lblReturnAmountVal.Text; 
       bool isCheked = (bool)grvItems.Rows[e.RowIndex].Cells["UnderWarranty"].EditedFormattedValue; 

       if (isCheked) 
       { 
        grvItems.Rows[e.RowIndex].Cells["PRICE"].Value = "0.00"; 
        lblReturnAmountVal.Text = "0.00"; 
       } 
       else 
       { 

       } 
       grvItems.EndEdit(); 
      } 
     } 
    } 
} 

ответ

0

Вы пробовали мероприятие CheckedChanged? В Winforms и использование флажков, которые должны помочь. Непроверенный код ниже:

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    if (checkBox1.Checked) 
    { 
     value = 0; 
    } 
    else 
    { 
     // whatever other logic should happen 
    } 
} 
0

Если вы хотите, чтобы вернуться к исходному значению данных вам необходимо магазина его где-нибудь.

Вы всегда можете использовать Tag свойство ячейки для этого:

   DataGridViewCell cell = grvItems.Rows[e.RowIndex].Cells["PRICE"]; 
      if (isCheked) 
      { 
       cell.Tag = cell.Value; 
       cell.Value = "0.00"; 
       lblReturnAmountVal.Text = "0.00"; 
      } 
      else 
      { 
       //   use your cell's datatype here!! VVV 
       if (cell.Tag != null) cell.Value = cell.Tag as decimal; 
      }