首页 > 解决方案 > 整数类型的值无法转换为数据表 vn.net

问题描述

我正在尝试创建树视图,但有些错误我无法修复

Sub CREATENODE()
    Dim TRN As New TreeNode
    Dim DT As New DataTable
    DT.Clear()
    DT = ACCOUNTTableAdapter.TREE_ACCOUNT()

    For I As Integer = 0 To DT.Rows.Count - 1

        If DT.Rows(I)(9).ToString() = "00000000-0000-0000-0000-000000000000" Then
            TRN = New TreeNode(DT.Rows(I)(3).ToString() + " " + DT.Rows(I)(4).ToString())

            TRN.Tag = DT.Rows(I)(1).ToString()

            If DT.Rows(I)(7).ToString() <> "0" Then

                TRN.ImageIndex = 0
                TRN.SelectedImageIndex = 0
            Else

                TRN.ImageIndex = 1
                TRN.SelectedImageIndex = 1
            End If



            TreeView1.Nodes.Add(TRN)
        End If
    Next
    ''For Each NODE As TreeNode In TreeView1.Nodes
    ''    CHELD(NODE)
    'Next
End Sub

标签: vb.net

解决方案


这是无稽之谈

 Dim TRN As New TreeNode 
 Dim DT As New DataTable
 DT.Clear()
 DT = ACCOUNTTableAdapter.TREE_ACCOUNT()

您创建一个 New TreeNode,然后在循环内用另一个 New TreeNode 覆盖它。只需将 Dim 放在 if 之后的循环内。

Dim TRN = New TreeNode($"{row(3)} {row(4)}")

您创建了一个全新的 DataTable。然后当它不可能有任何东西时你清除它。然后你把它扔掉并分配一个不同的 DataTable 给它。

做就是了

Dim DT = ACCOUNTTableAdapter.TREE_ACCOUNT()

我使用 For Each 循环简化了您的代码。另外,我使用并插入了字符串前面的 $ 指示的字符串。变量可以插入用大括号 { } 包围的位置。

至于实际问题,您需要使用 New 关键字创建表适配器的实例。然后调用相应的方法。一个简单的应用程序将只使用.GetData.

Private Sub CREATENODE()
    Dim DT = (New ACCOUNTTableAdapter).TREE_ACCOUNT() 'See what intellisense offers. It may be just .GetData
    For Each row As DataRow In DT.Rows
        If row(9).ToString() = "00000000-0000-0000-0000-000000000000" Then
            Dim TRN = New TreeNode($"{row(3)} {row(4)}")
            TRN.Tag = row(1)
            If row(7).ToString() <> "0" Then
                TRN.ImageIndex = 0
                TRN.SelectedImageIndex = 0
            Else
                TRN.ImageIndex = 1
                TRN.SelectedImageIndex = 1
            End If
            TreeView1.Nodes.Add(TRN)
        End If
    Next
End Sub

提示:为什么不将整行放在Tag属性中。通过将标签转换回 DataRow,您将可以访问所有字段。


推荐阅读