简体   繁体   English

加载时来自数据库的.net datagridview值更改单元格值

[英].net datagridview value from database change cell value when loading

I have a datagridview and it load data from database. 我有一个datagridview,它从数据库加载数据。 The SPENDING_SUM is double in database, but I want change it to money in the datagridview (for example, if the database value is 1234567.00, what I want to display in the datagridview is $1,234,567.00). SPENDING_SUM在数据库中是双精度的,但是我想在datagridview中将其更改为money(例如,如果数据库值为1234567.00,我想在datagridview中显示的是$ 1,234,567.00)。 Don't know how to convert the value. 不知道如何转换值。

The related code is: 相关代码为:

       Using connObj As New SqlClient.SqlConnection(My.Settings.dbConnectionString)
            connObj.Open()


            querySql = "SELECT UPPER(USER_ID) AS 'USER ID', UPPER(USER_NAME) AS 'USER NAME', " & vbCrLf &
                      "CONVERT(varchar,JOIN_DATE, 103) AS 'JOIN DATE'," & vbCrLf &
                      "SPENDING_SUM AS 'SPENDING SUM' FROM USERS WHERE USER_NAME = " & vbCrLf &


            querySql = querySql + userName.Text

            Try
                adapter = New SqlDataAdapter(querySql, connObj)
                adapter.Fill(ds)
                DataGridView1.DataSource = ds.Tables(0)
            Catch ex As Exception
                logger.Error(ex.ToString)
            End Try

            connObj.Close()
        End Using

To display the filed values with preceding dollar($) symbol you need not convert the field to money instead you can use something like 要显示带有前面的dollar($)符号的归档值,您无需将字段转换为金钱,而是可以使用类似

 querySql = "SELECT UPPER(USER_ID) AS 'USER ID', UPPER(USER_NAME) AS 'USER NAME', " & vbCrLf &
                      "CONVERT(varchar,JOIN_DATE, 103) AS 'JOIN DATE'," & vbCrLf & 
                      " '$' + convert(varchar(100),SPENDING_SUM) AS 'SPENDING SUM' FROM USERS WHERE USER_NAME = " & vbCrLf &

if you want to convert to money,you can use a cast operator like 如果您想转换成金钱,可以使用诸如

 querySql = "SELECT UPPER(USER_ID) AS 'USER ID', UPPER(USER_NAME) AS 'USER NAME', " & vbCrLf &
                      "CONVERT(varchar,JOIN_DATE, 103) AS 'JOIN DATE'," & vbCrLf &
                      "cast(SPENDING_SUM as money) AS 'SPENDING SUM' FROM USERS WHERE USER_NAME = " & vbCrLf &

anyways i prefer the first solution as it will provide better query performances. 无论如何,我更喜欢第一个解决方案,因为它将提供更好的查询性能。

Suppose you have a control named lblDisplay where you want to display this here is the simple code. 假设您有一个名为lblDisplay的控件,您想在此处显示此简单代码。

 lblDisplay.Text = String.Format("{0:C2}", SPENDING_SUM)

For simple use try this example. 为了简单使用,请尝试以下示例。

 Dim Numbers As Double = 1234567.0
 lblDisplay.Text = String.Format("{0:C2}", Numbers)

Hope this answered your question. 希望这回答了您的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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