vb.net - DataGridView,列作为字符串,列作为整数
问题描述
我有一个包含 5 列(地点、位置、大小、容量、租用成本)的 datagridview。我从文本文件中获取数据。一切正常,除了我希望用户能够通过单击列标题对容量和租用成本进行排序。但问题在于,由于它的编码方式,所有列都是字符串。我需要的是将前 3 列作为字符串,最后两列作为整数,但我不确定我应该如何修改我的代码来实现这一点。
我目前有以下内容:
Dim row As String() = New String() {vi.venue_name, vi.venue_location, vi.venue_size, String.Format("{0:n0}", vi.venue_capacity), "$" & String.Format("{0:n0}", vi.venue_hirecost)}
DataGridView1.Rows.Add(row)
我如何修改它以便只有前三列是字符串,而 vi.venue_capacity 和 vi.venue_hirecost 列是整数?
编辑:我已经对此进行了排序。是一个非常简单的解决方案。我只是将行:更改
Dim row As String() = New String() {vi.venue_name, vi.venue_location, vi.venue_size, String.Format("{0:n0}", vi.venue_capacity), "$" & String.Format("{0:n0}", vi.venue_hirecost)}
为:
DataGridView1.Rows.Add(vi.venue_name, vi.venue_location, vi.venue_size, vi.venue_capacity, vi.venue_hirecost)`
它现在完美运行!:-)
解决方案
更好的选择是使用数据表来做同样的事情。请阅读代码中的注释以了解所做的事情。然后将数据表绑定到Datagridview..
''' <summary>
''' Sub for
''' </summary>
''' <remarks></remarks>
Public Sub GetData()
''Create a Dummy Datatable
Dim tempCompoTable As DataTable = New DataTable()
''Add Columns
tempCompoTable.Columns.Add(New DataColumn("Venue", Type.GetType("System.String")))
tempCompoTable.Columns.Add(New DataColumn("Location", Type.GetType("System.String")))
tempCompoTable.Columns.Add(New DataColumn("Size", Type.GetType("System.String")))
tempCompoTable.Columns.Add(New DataColumn("Capacity", Type.GetType("System.Double")))
tempCompoTable.Columns.Add(New DataColumn("Hire", Type.GetType("System.Double")))
tempCompoTable.Columns.Add(New DataColumn("Cost", Type.GetType("System.Double")))
Dim lines() As String = IO.File.ReadAllLines("venues.txt")
For Each line In lines
If Not line.Trim.Equals("") Then
Dim strArr() = line.Split(":")
''Createnewrow
Dim drworg As DataRowView = tempCompoTable.DefaultView.AddNew()
drworg("Venue") = strArr(0)
drworg("Location") = strArr(1)
drworg("Size") = strArr(2)
drworg("Capacity") = Val(Trim(strArr(3) & ""))
drworg("Hire") = Val(Trim(strArr(4) & ""))
drworg.EndEdit()
''if you want
'Dim vi As New VenueInfo()
'vi.venue_name = strArr(0)
'vi.venue_location = strArr(1)
'vi.venue_size = strArr(2)
'vi.venue_capacity = strArr(3)
'vi.venue_hirecost = strArr(4)
End If
Next
grd.AllowUserToAddRows = False
grd.DataSource = tempCompoTable
End Sub
如果您想要而不是直接从数组绑定,您可以绑定到 value_info 然后循环它以将行添加到数据表
推荐阅读
- ignition - Ignition SDK 网关配置显示路径,而不是字符串
- c# - 操作被外部 API 调用时不会创建 cookie
- codenameone - spanlabel 组件不显示所有文本
- r - 如何使具有相应小 Y 值的 X 值在直方图中更明显
- excel - 使用 If 语句循环特定工作表时出现空错误
- c - 我不能在数组中使用双精度吗?
- android - Android 处理 onStop 和 onDestroy 用户行为
- php - Laravel - 渴望加载
- django - Django 无法将新实例保存到模型中
- css - 为什么 @font-face 在 Chrome DevTools 的 Coverage 选项卡中总是显示为未使用?