J'ai remarqué que DatagridviewtextBoxColumn n'est pas converti en Decimal. Je l'ai démontré de deux manières qui sont les suivantes.Problème de diffusion sur DatagridViewtextBoxColumn
DataTable: -
DataTable dt = new DataTable(); dt.Columns.Add("carats"); dt.Columns.Add("rate"); dt.Columns.Add("amount"); dataGridView1.DataSource = dt;
Il fonctionne très bien avec le code de coulée Après
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());
}
}
Mais mon observation principale sur DataGridViewTextBoxColumn il est notcasting ce pourquoi ?.
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);
Il est Erreur Throw Comme « Exception NullReference était Unhandle », « référence d'objet fixe pas une instance sur un objet « avec code suivant:
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());
}
}
Je veux juste savoir la raison derrière cela. Et résoudre le problème de diffusion avec DatagridviewtextBoxColumn
@Rox, oui vous avez raison mais pourquoi ça marche avec datatable et pourquoi pas avec datagridviewcomboboxcolumn? – mahesh
Cela ne marche-t-il pas après avoir changé en null dans datagridview? DBNull est utilisé uniquement pour la liaison DataTable - Je ne sais pas pourquoi c'est comme ça, mais peut-être vous pouvez en trouver plus sur msdn – Rox
@mahesh: Dans le premier exemple vous avez lié 'DataGridView' à un' DataTable', donc vide les cellules ont une valeur de 'DBNull' (sur laquelle vous pouvez appeler' ToString' sans 'NullReferenceException') alors que dans le deuxième exemple 'DataGridView' est non lié, ce que Rox signale est que les cellules vides contiennent' null'. Si vous appelez 'null.ToString()', vous obtenez une exception 'NullReferenceException'. Donc vous devez changer '! = DBNull.Value' en'! = Null'. –