roy
roy

Reputation: 729

How to set datagridview and datarow cell format when editing and after editing from datatable in vb.net

I'm Trying to set datagridview and datarow cell format when editing and after editing from datatable in vb.net.

Is it possible for the Price column to still use string.empty after editing so it matches that format?

maybe there is something wrong with my code please guide me.

Thanks

Dim dt As New DataTable()
    Private Sub loadfile()
        Try
            Dim extensions() As String = {".jpg", ".png", ".jpeg", ".gif", ".tiff", ".bmp"}
            Dim filepath As String() = Directory.GetFiles(TextBox1.Text, "*.*").Where(Function(f) extensions.Contains(System.IO.Path.GetExtension(f).ToLower())).ToArray()
            dt.Columns.Add("Filename")
            dt.Columns.Add("Fullname")
            dt.Columns.Add("Price")
            Dim value As Integer = 0
            For item As Integer = 0 To filepath.Length - 1
                Dim file As New FileInfo(filepath(item))
                Dim dr As DataRow = dt.NewRow()
                dr(0) = file.Name
                dr(1) = file.FullName
                'dr(2) = value.ToString("c", CultureInfo.CreateSpecificCulture("id-ID"))
                dr(2) = String.Empty
                dt.Rows.Add(dr)
            Next
            DataGridView1.DataSource = dt
        Catch ex As Exception
        End Try
    End Sub
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        FolderBrowserDialog1.ShowDialog()
        TextBox1.Text = FolderBrowserDialog1.SelectedPath.ToString()
        loadfile()
    End Sub
    Private Sub DataGridView1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
        If DataGridView1.Columns(e.ColumnIndex) Is DataGridView1.Columns("Price") Then
            Dim price As Double = Convert.ToDouble(DataGridView1.Rows(e.RowIndex).Cells("Price").Value)
            DataGridView1.Columns("Price").DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("id-ID")
            DataGridView1.Columns("Price").DefaultCellStyle.Format = String.Format("c")
        End If
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Fullname.FillWeight = CSng("300")
        DataGridView1.Columns("Price").DefaultCellStyle.FormatProvider = CultureInfo.GetCultureInfo("id-ID")
        DataGridView1.Columns("Price").DefaultCellStyle.Format = String.Format("c")
        DataGridView1.Columns("Price").ValueType = GetType(Integer)
    End Sub 

result from above code

Filename  Fullname              Price 
A.png     C:\Input\A.png    1000
B.png     C:\Input\B.png    2000

result from above code gif

Desired result 1

Filename  Fullname              Price 
A.png     C:\Input\A.png    Rp1.000,00
B.png     C:\Input\B.png    Rp2.000,00

Desired result 2

Filename  Fullname              Price 
A.png     C:\Input\A.png    Rp1.000
B.png     C:\Input\B.png    Rp2.000

Upvotes: 1

Views: 62

Answers (1)

Etienne
Etienne

Reputation: 189

this should work from what i understand in your question

Dim FormattedNumber As String = $"Rp{DataGridView1.CurrentRow.Index}{DataGridView1.CurrentRow.Cells(2).Value:N2}"

or

Dim FormattedNumber As String = $"Rp{DataGridView1.CurrentRow.Index}{FormatNumber(DataGridView1.CurrentRow.Cells(2).Value,2)}"

Look at applying that on Datagrid End Edit event and where column index = 2

Upvotes: 0

Related Questions