简体   繁体   中英

How to set unbound datagridview column cell to currency in c#

i had this unbound datagridview that add columns during form load;

here is the code;

private void loadfields()
        {
            dgvbulkentries.ColumnCount = 15;
            dgvbulkentries.Columns[0].Name = "ID No";
            dgvbulkentries.Columns[0].Width = 80;
            dgvbulkentries.Columns[0].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvbulkentries.Columns[1].Name = "Surname";
            dgvbulkentries.Columns[1].Width = 150;
            dgvbulkentries.Columns[2].Name = "First Name";
            dgvbulkentries.Columns[2].Width = 150;
            dgvbulkentries.Columns[3].Name = "Name Extn";
            dgvbulkentries.Columns[3].Width = 40;
            dgvbulkentries.Columns[4].Name = "Middle Name";
            dgvbulkentries.Columns[4].Width = 150;
            dgvbulkentries.Columns[5].Name = "Course";
            dgvbulkentries.Columns[5].Width = 110;
            dgvbulkentries.Columns[6].Name = "Year";
            dgvbulkentries.Columns[6].Width = 40;
            dgvbulkentries.Columns[6].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvbulkentries.Columns[7].Name = "Street/Block";
            dgvbulkentries.Columns[7].Width = 150;
            dgvbulkentries.Columns[8].Name = "Subdivision";
            dgvbulkentries.Columns[8].Width = 150;
            dgvbulkentries.Columns[9].Name = "Barangay";
            dgvbulkentries.Columns[9].Width = 150;
            dgvbulkentries.Columns[10].Name = "Municipality/City";
            dgvbulkentries.Columns[10].Width = 150;
            dgvbulkentries.Columns[11].Name = "Province";
            dgvbulkentries.Columns[11].Width = 150;
            dgvbulkentries.Columns[12].Name = "GWA";
            dgvbulkentries.Columns[12].Width = 60;
            dgvbulkentries.Columns[12].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            dgvbulkentries.Columns[13].Name = "Units";
            dgvbulkentries.Columns[13].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            dgvbulkentries.Columns[13].Width = 50;
            dgvbulkentries.Columns[14].Name = "Total School Fees";
            dgvbulkentries.Columns[14].Width = 100;
            dgvbulkentries.Columns[14].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
            DataGridViewComboBoxColumn sexes = new DataGridViewComboBoxColumn();
            sexes.HeaderText = "Sex";
            sexes.Name = "Sex";
            sexes.MaxDropDownItems = 4;
            sexes.Items.Add("Male");
            sexes.Items.Add("Female");
            dgvbulkentries.Columns.Add(sexes);
            dgvbulkentries.Columns[15].DisplayIndex = 5;
            dgvbulkentries.Columns[15].Width = 80;
            DataGridViewComboBoxColumn ssfapremarks = new DataGridViewComboBoxColumn();
            ssfapremarks.HeaderText = "Remarks";
            ssfapremarks.Name = "Remarks";
            ssfapremarks.MaxDropDownItems = 4;
            ssfapremarks.Items.Add("Enrolled");
            ssfapremarks.Items.Add("Not Enrolled");
            dgvbulkentries.Columns.Add(ssfapremarks);
            dgvbulkentries.Columns[16].Width = 120;
        }

I already set the code for currency textbox for a specific column in a datagridview. But the problem is, when i enter numbers in a cell, it does not change at all.

This is the code i included;

private void dgvbulkentries_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        dgvbulkentries.Columns[14].DefaultCellStyle.Format = "n";
    }

For example , when i enter numbers to a specific column in the datagridview, it does not format the value as currency format. i already did what you had suggested but its not working

what did i miss?

As mentioned in this answer After knowing the issue I think using CellLeave event of data grid view will solve ur issue

void dataGridView1_CellLeave(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
   dgvbulkentries.Columns[14].DefaultCellStyle.Format = "c2";
   dgvbulkentries.Columns[14].DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("en-GB");
   dgvbulkentries.Columns[14].ValueType = typeof(decimal);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM