【发布时间】:2016-05-10 20:57:24
【问题描述】:
我使用 csv 文件作为 datagridview 的数据源。它工作正常,显示数据,但是当我尝试对数字数据进行排序时,它排序为字符串(“9”>“10”)。
当我将数据行添加到 datagridview 时,我会这样做:
Dim data() As String = _textStreamReader.ReadLine.Split(vbTab)
dt.Rows.Add(data.ToArray)
我不想显式地一一添加列,以编程方式设置其数据类型,从而失去向源数据添加新列并将其加载到 datagridview 中的灵活性(新列和所有)。
有没有办法测试列中单元格的内容是否为数字并相应地设置列的数据类型?每列要么全部为文本,要么全部为浮点数。
【问题讨论】:
-
如果您不想添加列并想坚持使用
ToArray,那么不,我不知道测试的方法。如果您想进行预初始化,您始终可以进行各种数据转换测试以确定每个位置的内容,创建列,然后添加行。如果您进行预初始化测试,它将适用于新列。只需确保按照特定的优先顺序进行测试即可。 -
在某些时候,某人或某事必须指定数据类型。编译器要么使用最低公分母(字符串),要么添加类型列,或者定义一个匹配的类并将数据解析为该类并使用 List
而不是数据表。顺便说一句, data已经是一个数组了。 -
@ChrisFannin 这听起来可行。你有我可以参考的代码示例吗?
-
@Plutonix 可以在 addedColumn 事件上完成吗?
-
是的,但它有什么不同呢?您要么有代码来添加一些类型化的列,要么有代码有条件地丢弃一些字符串列(基于顺序)并替换为硬编码的不同列类型。如果它不是用于数据库,请使用 List(of T);如果是去 db,从 db 表中获取 dt 列 defs。
标签: .net vb.net datagridview