如何在 datagridview 列中显示枚举值

2023-11-24

我有这个数据库,不是我设计的,但我必须使用它,其中包含一个如下表:



 id  |   Name     |  status  | ...
-----+------------+----------+------
 1   |  Product1  |  2       | ...
 2   |  Product2  |  2       | ...
 3   |  Product3  |  3       | ...
 ... |  ...       |  ...     | ...
  

status 属性指的是一个枚举,其中



0 = Invalid
1 = Dev
2 = Activ
3 = Old
  

当我在只读数据网格视图中显示此内容时,我希望用户看到枚举的名称(Dev、Activ...)或描述而不是数值。 datagridview 绑定到来自 DAL 的数据表,这又不是我的设计,因此我无法真正更改数据表。我发现如何做到这一点的唯一方法是监听 datagridview.CellFormating 事件,我在其中放置了以下代码:

private void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 3) // column of the enum
    {
        try
        {
            e.Value = getEnumStringValue(e.Value);
        }
        catch (Exception ex)
        {
            e.Value = ex.Message;
        }
    }
}

这工作得很好,除了如果我有大约 1k(不是那么多)或更多的项目,它需要永远...... 有一个更好的方法吗 ?

- -编辑 - -
这工作正常,但我的问题是,如果数据表中有超过 1000 行,则需要永远。问题是 CellFormating 事件会针对每一列触发,甚至是那些不需要它的列。假设我显示 15 列,有 1000 行,那么该事件会触发 15 000 次...

有没有比使用 CellFormatting 事件更好的方法?或者有没有一种方法可以将 CellFormatting 事件仅添加到一列?或者是什么 ?


我不会在 CellFormatting 上这样做。我会攻击数据表本身。我将添加一行具有枚举类型的行,然后循环遍历表并添加值。像这样的东西:

    private void Transform(DataTable table)
    {
        table.Columns.Add("EnumValue", typeof(SomeEnum));
        foreach (DataRow row in table.Rows)
        {
            int value = (int)row[1]; //int representation of enum
            row[2] = (SomeEnum)value;
        }
    }

然后,在 DataGridView 中隐藏具有枚举整数表示形式的列。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 datagridview 列中显示枚举值 的相关文章

随机推荐

  • Lattix 的开源替代品有哪些?

    我有机会与Lattix在过去 我相信它所代表的范式 分层依赖矩阵 是大规模系统架构管理的未来 然而 我工作的公司总是因为价格标签而望而却步 有人知道存在任何好的开源替代方案吗 经过一番搜索 我似乎找不到一个 这里列出了一些实现Lattix核
  • iPhone UIWebView - 如何设置缩放级别和位置?

    我在 UIWebView 中显示一系列平铺图像 并希望以编程方式设置 UIWebview 的初始缩放和查看位置 如何去做呢 将UIWebView的属性scalesPageToFit设置为YES 然后 网页会缩放以适合用户 并且用户可以放大和
  • 使用 qmake 时是否有可能通过 -isystem 传递包含

    我使用 qmake 作为 makefile 生成器并希望坚持使用它 此外 我想使用 gcc Wall Werror Wundef Wextra 来获得健壮的代码 我正在考虑 迂腐 但那是更进一步的事情 我目前的主要问题是像这样的库生成的大量
  • 访问 .NET 中 VBA 函数的返回值?

    我在 VBA 中有以下代码 位于 Excel 2007 工作簿中 Public Function Multiply a As Double b As Double As Double Multiply a b End Function 如果
  • 如何可靠地从 AttributeSet 获取颜色?

    我想创建一个自定义类 在 Android XML 文件中布局时将颜色作为其属性之一 然而 颜色可以是一种资源 也可以是多种直接颜色规范之一 例如十六进制值 有没有一种简单的首选方法来使用AttributeSet检索颜色 因为表示颜色的整数可
  • 在终端中运行文本文件

    有谁知道是否有办法在 shell 中自动运行命令列表 来自文本文件 我需要运行很多脚本 大约 1000 个 这些脚本采用 python 语言 每个有 2 个参数 dir 和 example 我制作的文本文件看起来像这样 python hom
  • SpringHibernateJpaPersistenceProvider 类未实现请求的接口 PersistenceProvider

    我很困惑 我已经好几年没有使用过 Hibernate 了 然后就再也没有使用过 Spring Boot Spring Boot 但从未与 Hibernate 或 JPA 一起使用 所以我想弄清楚如何让它为我的工作工作 我应该在周一演示一些东
  • F#:重载函数

    我的问题与此有些相关 具有泛型参数类型的函数 但我不太清楚如何做我想做的事 我想定义一个 后代函数 来包装对各种 C 类上 后代 的调用 如下所示 让后代名称 xDocument XDocument xDocument 后代名称 让后代名称
  • 错误 310(net::ERR_TOO_MANY_REDIRECTS):

    我在本地主机上没有收到此错误 只有当我上传到我的服务器时 此错误才会出现在我的页面之一上 知道我需要改变什么吗 我在网络浏览器中遇到了这个错误 其中我访问的网页重定向到另一个网页 该网页无限地重定向回原始页面 我还遇到过编程错误不断重新加载
  • 针对多个快速请求的 .htaccess 或 PHP 保护代码

    我正在寻找如何阻止外部脚本与我的网站连接的想法 我正在寻找谷歌背后同样的想法 就像在一定时间内发出一定数量的请求然后阻止 IP 地址或其他内容一样 我想也许有一个 htaccess 解决方案 如果没有 我会写一个 PHP 解决方案 非常感谢
  • 根据参数的真实类型选择重载方法

    我正在尝试这段代码 interface Callee public void foo Object o public void foo String s public void foo Integer i class CalleeImpl
  • 使用 jQuery 在文本区域中的光标位置创建工具提示

    我正在尝试在文本区域中的输入插入符号上方创建一个工具提示 如果我能够获得文本区域中插入符号的 x y 坐标 这将很容易 但是我已经搜索了一段时间 但不知道如何做到这一点 假设用户正在文本区域中输入内容 然后按某个键 例如 符号 我试图在文本
  • SQLAlchemy 中不区分大小写的字符串列?

    我可以在 sqlalchemy 中创建不区分大小写的字符串列吗 我正在使用 sqlite 并且可能有一种方法可以通过更改排序规则来通过数据库来完成此操作 但我想将其保留在 sqlalchemy python 中 在 SQLAlchemy 0
  • QQ剧情:多于两条数据

    我想画一个类似于这张图的QQ图 我设法使用两个样本获得了 QQ 图 但我不知道如何将第三个样本添加到图中 这是我的结果 这是我使用的代码 qqplot table Bedouin table Tunisia xlim c 0 25 0 25
  • 如何使用 XMLStarlet 将一个元素直接插入到另一个元素之后?

    对于这个 XML 示例
  • PHP 中的 Yield 是什么意思?

    我最近偶然发现了这段代码 function xrange min max for i min i lt max i yield i 我从没见过这个yield之前的关键字 尝试运行我得到的代码 解析错误 语法错误 第 x 行出现意外的 T V
  • TestNG 与 IntelliJ IDEA:如何在 IntelliJ IDEA 9 中使用 testng.xml 文件

    我能够在 IntelliJ 中运行 TestNG 单元测试并在窗口中查看通过 失败输出 这是没有使用任何testng xml文件 我还可以使用 maven 在命令行中运行测试 即mvn clean test Dgroups fast 效果很
  • 我应该将 sqlite 数据库文件写入文档目录还是库/缓存吗?

    我已经阅读了 Apple 的数据存储指南 并且对于应该将我在应用程序中创建的 sqlite 数据库文件保存在哪里感到非常困惑 即使应用程序处于离线模式 我也想读取 sqlite 文件 我读到创建的此类文件应该保存在库 缓存中 并设置 不备份
  • 如何在 alpine Dockerfile 中创建并添加带密码的用户?

    下列Dockerfile在 Ubuntu 上运行良好 FROM ubuntu 20 04 SHELL bin bash c ARG user hakond ARG home home user RUN useradd create home
  • 如何在 datagridview 列中显示枚举值

    我有这个数据库 不是我设计的 但我必须使用它 其中包含一个如下表 id Name status 1 Product1 2 2 Product2 2 3 Product3 3 status 属性指的是一个枚举 其中 0 Invalid 1 D