首页 > 解决方案 > 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)`

它现在完美运行!:-)

标签: vb.net

解决方案


更好的选择是使用数据表来做同样的事情。请阅读代码中的注释以了解所做的事情。然后将数据表绑定到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 然后循环它以将行添加到数据表


推荐阅读