Reputation: 729
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
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
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