1 Previous Next 

DataGridView: Currency symbols in a DatagridView ( as well relations )


This sample is made in true North-Atlantic cooperation.
It shows how to get a currency-sign based on a country in a DataGridView.
It needs the SQL Northwind sample database and a a project with a DataGridView on a Form.
To test it, you need only to click Debug.
Untitled 9
Imports System.Data.SqlClient
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, _
    ByVal e As System.EventArgsHandles MyBase.Load
        Dim ds As New DataSet
        Using conn As New SqlConnection _
        ("Server = YourServer;Database = NorthWind; Integrated Security = SSPI;")
            Dim da As New SqlDataAdapter("Select * from [Order Details]", conn)
            da.Fill(ds, "Orderdetails")
            da = New SqlDataAdapter("Select OrderId, ShipCountry from Orders", conn)
            da.Fill(ds, "Orders")
            ds.Relations.Add("TheRelation"ds.Tables("Orders").Columns("OrderId"), _
                            ds.Tables("Orderdetails").Columns("OrderId"))
            ds.Tables("Orderdetails").Columns.Add("ShipCountry", _
                     GetType(String), "Parent.ShipCountry")
            ds.Tables("Orderdetails").DefaultView.RowFilter = _
            "ShipCountry = 'USA' OR ShipCountry = 'UK' OR ShipCountry = 'Belgium' OR " & _
            "ShipCountry = 'Poland' Or ShipCountry = 'Ireland'"
            DataGridView1.DataSource = ds.Tables("Orderdetails").DefaultView
            DataGridView1.Columns.Remove("ProductID")
        End Using
    End Sub
    Private Sub DataGridView1_CellFormatting(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
    Handles DataGridView1.CellFormatting
        Dim dv As DataView = DirectCast(DataGridView1.DataSource, DataView)
        Dim ci As System.Globalization.CultureInfo
        If e.ColumnIndex = 1 Then
            Select Case dv(e.RowIndex)("ShipCountry").ToString
                Case "USA"
                    ci = New System.Globalization.CultureInfo("en-US")
                Case "UK"
                    ci = New System.Globalization.CultureInfo("en-GB")
                Case "Poland"
                    ci = New System.Globalization.CultureInfo("pl-PL")
                Case "Ireland"
                    ci = New System.Globalization.CultureInfo("en-IE")
                Case Else
                    ci = New System.Globalization.CultureInfo("nl-NL")
            End Select
            Dim cValue As Decimal = Convert.ToDecimal(e.Value)
            e.Value = cValue.ToString("c", ci)
        End If
    End Sub
End Class



1 Previous Next