在显示DataGridView之前,如何用文本替换查询结果中的数字?

时间:2015-02-10 14:53:01

标签: c# sql-server winforms datagridview

SQL查询:

SELECT * FROM USERS

结果是:

ID    USERNAME       AUTH
--    ---------      -----
1     USER_A            1
2     USER_B            2
3     USER_C            2
4     USER_D            3

Auth专栏的含义:

  • AUTH 1表示:SuperAdmin
  • AUTH 2表示:Admin
  • AUTH 3 measn:用户

我可以从Sql Server接收数据到DataGridView。

但我想在DataGridView上显示:

  • SuperAdmin而不是1
  • Admin而不是2
  • 用户而不是3。

我该怎么做?感谢。

3 个答案:

答案 0 :(得分:2)

只需更改您的SQL查询以带来其他说明列,例如

SELECT 
      auth, 
      CASE 
        WHEN auth = 1 THEN 
         'SuperAdmin' 
        WHEN auth = 2 THEN 
         'Admin' 
        WHEN auth = 3 THEN 
         'User' 
      /* can add an optional Else clause */
      END CASE as description
FROM yourTable
WHERE ...

绑定到gridView时,绑定到刚刚创建的“description”列

答案 1 :(得分:0)

AUTH创建新的查找表:

AUTH  DESCRIPTION
-----------------
 1    SuperAdmin
 2    Admin
 3    User

然后JOIN到它:

SELECT u.*, a.DESCRIPTION 
FROM USERS u
INNER JOIN AUTH a on u.AUTH = a.AUTH

否则,请在代码中使用enum来存储这些值以及说明。

public enum AUTH
{
    [Description("Super Admin")]
    SuperAdmin = 1,
    [Description("Admin")]
    Admin = 2,
    [Description("User")]
    User = 3
};

这两种解决方案都会删除隐藏意义的神奇数字。

答案 2 :(得分:0)

如果要在GUI而不是SQL查询中执行此操作,可以使用DataGridView的{​​{1}}事件。
这是一个例子:

CellFormatting