Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DataGridView - how to set the currency format for a single column ONLY

I am trying to use the datagridview for a basket. I have got it to display the basket of the customer but I would like it to display the currency for the Price column, but i have a Quantity column as well, so if I put the default style as currency then it will change both columns to the currency format.

What I want to be able to do is add the currency format to the Price Column but not to the quantity column.

Here is the code that displays the basket (Form_load)

using (var con = new SqlConnection(connectionString))
        {
            SqlDataAdapter dataadapter =
          new SqlDataAdapter(
              "select p.productname 'Product Name', b.productquantity 'Quantity', c.categoryname 'Category', p.price 'Current Price' " +
              "from basket b join products p on b.productid = p.productid " +
              "join Categories c on c.categoryid = p.categoryid " +
              $"where b.customerid = {CustomerId}", con);

            DataSet ds = new DataSet();
            con.Open();
            dataadapter.Fill(ds);
            con.Close();
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
        }

The CustomerId is collected from a txt file that stores the CustomerId when they log in.

If there is any more code that you would like to see then comment and i will add it.

This is what i get on the form with the currency added as the style. enter image description here

like image 238
Brendon Avatar asked May 04 '16 11:05

Brendon


1 Answers

You can set format of data of a column using Format property of its DefaultCellStyle property of the column.

For example to use currency format for second column of a DataGridView using current culture, you can use such code:

grid1.Columns[1].DefaultCellStyle.Format = "c";

Or for example to use an specific culture and specific decimal numbers:

grid1.Columns[1].DefaultCellStyle.Format = "c2";
grid1.Columns[1].DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("en-GB");

More Information

  • How to: Format Data in the Windows Forms DataGridView Control
  • Standard Numeric Format Strings - The Currency ("C") Format Specifier.

Note

If you are using an object data source, then you can use the following approaches as well. The Foundation is same, setting suitable format for the column, but using attributes:

  • DataAnnotations attributes for DataGridView in Windows Forms
  • Using custom attributes to control appearance of DataGridView columns
like image 144
Reza Aghaei Avatar answered Oct 13 '22 01:10

Reza Aghaei