Formatting a column in a datagridview to currency

  • Thread starter Thread starter Cdude
  • Start date Start date
C

Cdude

I am using this code at the moment to format the column

this.itemsDataGrid.Columns["Amount"].DefaultCellStyle.Format = "c";

but i get the error "Object reference not set to an instance of an
object. " is this code incorrect ?
Any suggestions please
 
Well, is there a column named "Amount"?

Note that a *column* named "Amount" is different to a column that is
mapped to the *property* named "Amount"...

Marc
 
I am using this code at the moment to format the column

this.itemsDataGrid.Columns["Amount"].DefaultCellStyle.Format = "c";

but i get the error "Object reference not set to an instance of an
object. " is this code incorrect ?
Any suggestions please

Got it thanks
 
One other thought - if you are letting the grid auto-generate the
columns by attaching a DataSource (rather than by creating explicit
columns), then you need to be aware that the columns won't exist until
the grid needs to display itself. In which case, you can use the
ColumnAdded event as a prompt (below).

Marc

grid.ColumnAdded += (s, a) =>
{
if (a.Column.DataPropertyName == "Amount")
{
a.Column.DefaultCellStyle.Format = "c";
}
};using System;
using System.ComponentModel;
using System.Windows.Forms;

class Foo
{
public decimal Amount { get; set; }
}

class Program
{
[STAThread]
static void Main()
{
BindingList<Foo> data = new BindingList<Foo>();
data.Add(new Foo {Amount = 1.2M});
data.Add(new Foo {Amount = 7.8M});

DataGridView grid = new DataGridView();
grid.Dock = DockStyle.Fill;
grid.DataSource = data;

grid.ColumnAdded += (s, a) =>
{
if (a.Column.DataPropertyName == "Amount")
{
a.Column.DefaultCellStyle.Format = "c";
}
};

Application.EnableVisualStyles();
Application.Run(new Form {Controls = {grid}});

}
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top