Проблема приведения к DatagridViewtextBoxColumn - PullRequest
0 голосов
/ 04 ноября 2010

Я заметил, что DatagridviewtextBoxColumn не приводится к десятичному типу. Я продемонстрировал это двумя способами:

  1. DataTable : -

    DataTable dt = new DataTable();
    dt.Columns.Add("carats");
    dt.Columns.Add("rate");
    dt.Columns.Add("amount");
    dataGridView1.DataSource = dt;
    

Работает нормально с кодом следующего приведения

private void dataGridView1_CellEndEdit(object sender,DataGridViewCellEventArgs e)
{
  int b = dataGridView1.CurrentCell.RowIndex;
  if (
       dataGridView1[0, b].Value != DBNull.Value && 
       dataGridView1[1, b].Value !=    DBNull.Value
     )
  {
    dataGridView1[2, b].Value = Convert.ToDecimal(dataGridView1[0, b].Value.ToString())          
    * Convert.ToDecimal(dataGridView1[1, b].Value.ToString());

  }
}

Но мое главное замечание о DatagridviewtextBoxColumn, что оно не передается почему ?.

2 DatagridviewtextboxColumn : -

DataGridViewTextBoxColumn cts = new DataGridViewTextBoxColumn();              
dataGridView1.Columns.Insert(0, cts);
DataGridViewTextBoxColumn rt = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Insert(1, rt);
DataGridViewTextBoxColumn amt = new DataGridViewTextBoxColumn();
dataGridView1.Columns.Insert(2, amt);

Это ошибка выброса, подобная «Исключение NullReference было отменено», «Ссылка на объект не устанавливает экземпляр для объекта« со следующим кодом:

private void dataGridView1_CellEndEdit(object sender,DataGridViewCellEventArgs e)
{
  int b = dataGridView1.CurrentCell.RowIndex;
  if (
       dataGridView1[0, b].Value != DBNull.Value && 
       dataGridView1[1, b].Value !=    DBNull.Value
     )
  {
    dataGridView1[2, b].Value = Convert.ToDecimal(dataGridView1[0, b].Value.ToString())          
    * Convert.ToDecimal(dataGridView1[1, b].Value.ToString());

  }
}

Я просто хочу знать причину этого. И решить проблему приведения с помощью DatagridviewtextBoxColumn

1 Ответ

1 голос
/ 04 ноября 2010

Я использовал только 'null' для проверки ячеек datagridView, а не DBNull. Вы пробовали с этим?

Редактировать: после прочтения я нашел это (VB.NET), которое говорит, что

Если сетка привязана к DataTable, тогда «пустые» ячейки будут содержать DBNull.Value. Если сетка привязана к чему-то другому или не привязана вообще, то «пустые» ячейки не будут содержать ничего

так что вы, вероятно, должны проверить на ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...