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

Re: Formatting a column in a datagridview to currency by Cdude

Cdude
Fri May 09 02:07:42 CDT 2008

On May 9, 8:53 am, Cdude <camelj...@yahoo.com> wrote:
> 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

Re: Formatting a column in a datagridview to currency by Marc

Marc
Fri May 09 02:07:36 CDT 2008

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

Re: Formatting a column in a datagridview to currency by Marc

Marc
Fri May 09 02:17:57 CDT 2008

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}});

}
}