2016-05-04 3 views
1
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() 

Stuck auf diesen Fehler für ein paar Stunden jetzt. Sah andere Stapelüberlauf-Frage-Posts aus, aber keiner antwortete, warum ich dieses Problem bekam.Exception: Eine Spalte mit dem Namen 'Latitude' gehört bereits zu dieser DataTable

+2

Sie fügen die Spalte zweimal hinzu. fügen Sie es vor der Schleife nur einmal – Zaki

+0

nicht sicher, wo es nur einmal hinzufügen. kannst du beschreiben wo und was bitte. – JT4U

+0

Wie viele Werte: "Breite, Länge" in der Liste –

Antwort

1

Zuerst müssen Sie tes für Punkt der Liste ListBox2.Items (i) .ToString() und Sie können auch testen, ob th Spalten alredy existiert in Datentabelle sind:

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 
+0

Bitte geben Sie mir einen upvote auf die Frage als diese Antwort geholfen. danke – JT4U

+0

Ok hier gehört dir –

0

Der Fehler in der Schleife ist. Überprüfen Sie immer den gleichen Text der ListBox. Ich verstehe, dass Sie den Text jedes Elements der ListBox vergleichen möchten.

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() 
Verwandte Themen