【问题标题】:In a BoundColumn in a DataGrid, how do I format a byte[] column as a string?在 DataGrid 的 BoundColumn 中,如何将 byte[] 列格式化为字符串?
【发布时间】:2009-07-27 23:34:06
【问题描述】:

我正在将一个数据库读取器对象传递给DataGrid,它会将我的列之一视为byte[] 类型,但我碰巧知道它应该始终是一个可打印的字符串。如何强制 .NET DateBinding 系统进行该转换?我能看到的唯一放置任何东西的地方是BoundColumn.DataFormatString,但我找不到任何指示如何做我需要的东西。


编辑:我知道如何将byte[] 转换为string,但不知道如何让BoundColumn 做到这一点。

因为在这种情况下我可以编辑查询字符串,所以我在SELECT 中使用PADR(column,0) as column 破解了它。如果无法修改查询,我仍然对如何处理感兴趣。

【问题讨论】:

  • 那个字节数组的内容是什么?一个名字?一个图像?实际的 GUID 类型代码?这可能会影响从 byte[] 到 string 的转换。
  • 这是对异常调用 .stacktrace 并通过 SQLite BLOB 列反弹的结果。
  • 嗯,您能否再更新一下您的问题以概述您的流程。我很困惑您是否希望处理方法进行转换,数据库读取器进行转换,或者您是否希望在所有过程开始之前将数据从 SQLite 数据库转换为字符串。
  • 我希望它被转换的地方是在 BoundColumn 对象中作为某种格式指令或某种回调:这是对象,请返回一个要使用的字符串。
  • 数组类型没有内置的格式字符串,所以你不走运。但是,如果切换到 TemplateColumn,您几乎可以做任何事情。

标签: asp.net data-binding


【解决方案1】:

您可以使用System.Text.Encoding.UTF8.GetString(byte[]) 获取字符串(确保在存在 UTF8 的地方使用正确的编码 - 有 ASCII、UTF7、UTF8、Unicode 和 UTF32)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2015-03-26
    相关资源
    最近更新 更多