【问题标题】:Exception: A column named 'Latitude' already belongs to this DataTable例外:名为“纬度”的列已属于此数据表
【发布时间】:2016-05-04 15:59:17
【问题描述】:
Dim dt As New DataTable
        dt.Clear()
        For i As Integer = 0 To listbox2.items.Count - 1
            If ListBox2.text = "X,Y Coordinate" Then
                dt.Columns.Add("X Coordinate")
                dt.Columns.Add("Y Coordinate")
            ElseIf ListBox2.text = "Latitude, Longitude" Then
                dt.Columns.Add("Latitude")
                dt.Columns.Add("Longitude")
            End If
        Next
        Dim mr As DataRow
        mr = dt.NewRow
        mr("X Coordinate") = "sdsf"
        mr("Y Coordinate") = "sdfsdf"
        mr("Latitude") = "AsDASDASD"
        mr("Longitude") = "AsDASDASD"
        dt.Rows.Add(mr)
GridView1.DataSource = dt
GridView1.DataBind()

在这个错误上停留了几个小时。查找其他堆栈溢出问题帖子,但没有人回答我为什么会遇到这个问题。

【问题讨论】:

  • 您要添加该列两次。在循环之前添加一次
  • 不确定在哪里添加一次。你能描述一下在哪里和什么吗?
  • 有多少个值:"纬度,经度"就行了
  • 您正在为 ListBox2 中的每个项目添加数据表列。也许您可以只使用X - LongY - Lat 之类的列名?
  • 我要做的是将所有列添加到网格视图中,并为每个行项添加字符串文本。但是,它一直说现在找不到列名。我想添加两列,但只添加 lat、lon 或添加 x 或 y

标签: asp.net vb.net gridview


【解决方案1】:

首先您必须逐项测试 ListBox2.Items(i).ToString() 并且您还可以测试数据表中是否已经存在列:

  If ListBox2.Items(i).ToString() = "X,Y Coordinate" Then
                If (Not columns.Contains("X Coordinate")) Then dt.Columns.Add("X Coordinate")
                If (Not columns.Contains("Y Coordinate")) Then dt.Columns.Add("Y Coordinate")
            ElseIf ListBox2.text = "Latitude, Longitude" Then
               If (Not columns.Contains("Latitude")) Then dt.Columns.Add("Latitude")
                If (Not columns.Contains("Longitude")) Then  dt.Columns.Add("Longitude")
            End If

【讨论】:

  • 请给我一个关于这个问题的投票,因为这个答案有帮助。谢谢
【解决方案2】:

错误在循环中。始终检查 ListBox 的相同文本。我了解到您想比较 ListBox 中每个元素的文本。

Dim dt As New DataTable
        dt.Clear()
        For i As Integer = 0 To listbox2.items.Count - 1
            If ListBox2.Items(i).ToString() = "X,Y Coordinate" Then
                dt.Columns.Add("X Coordinate")
                dt.Columns.Add("Y Coordinate")
            ElseIf ListBox2.Items(i).ToString() = "Latitude, Longitude" Then
                dt.Columns.Add("Latitude")
                dt.Columns.Add("Longitude")
            End If
        Next
        Dim mr As DataRow
        mr = dt.NewRow
        mr("X Coordinate") = "sdsf"
        mr("Y Coordinate") = "sdfsdf"
        mr("Latitude") = "AsDASDASD"
        mr("Longitude") = "AsDASDASD"
        dt.Rows.Add(mr)
GridView1.DataSource = dt
GridView1.DataBind()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 2023-03-31
    相关资源
    最近更新 更多