我有一个包含5列(地点,位置,大小,容量,租用成本)的datagridview。 我从文本文件中获取数据。一切正常,除了我希望用户能够通过单击列标题来对容量和租金进行排序。但是,问题在于,由于编码方式的原因,所有列都是字符串。我需要的是将前三列作为字符串,将后两列作为整数,但是我不确定应该如何修改我的代码以实现此目的。
我目前有以下内容:
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)`
它现在可以完美运行了! :-)
答案 0 :(得分:1)
更好的选项将使用数据表来执行相同的操作。请阅读代码中的注释以了解执行的操作。然后将数据表绑定到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,然后遍历它以将行添加到数据表中
答案 1 :(得分:1)
我已经对此进行了排序。是一个非常简单的解决方案。我只是改变了这一行:
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
)
它现在可以完美运行了! :-)