aktualisieren
ich durch die Data.DataTable
iterieren entschieden und getrimmt dort die Werte.ComboBox Databinding Display und LINQ-Abfragen
Verwendung SirDemon's Post, habe ich den Code ein wenig aktualisiert:
Sub test(ByVal path As String)
Dim oData As GSDataObject = GetDataObj(path)
EmptyComboBoxes()
Dim oDT As New Data.DataTable
Try
Dim t = From r In oData.GetTable(String.Format("SELECT * FROM {0}gsobj\paths ORDER BY keyid", AddBS(path))) Select r
If t.Count > 0 Then
oDT = t.CopyToDataTable
For Each dr As Data.DataRow In oDT.Rows
dr.Item("key_code") = dr.Item("key_code").ToString.Trim
dr.Item("descript") = dr.Item("descript").ToString.Trim
Next
dataPathComboBox.DataSource = oDT
dataPathComboBox.DisplayMember = "descript"
dataPathComboBox.ValueMember = "key_code"
dataPathComboBox.SelectedIndex = 0
dataPathComboBox.Enabled = True
End If
Catch ex As Exception
End Try
End Sub
Das funktioniert fast wie ich es brauche die Daten, die ursprünglich aus einem foxpro Tisch ist, so dass die Saiten kehrt sind <value>
plus (<Field>.maxlength-<value>.length
) von nachfolgenden Leerzeichen Zeichen. Zum Beispiel hat ein Feld mit einer Länge von 12 Zeichen einen Wert von bob. Wenn ich die Datenbank abfrage, bekomme ich "bob_________
", wobei _ ein Leerzeichen ist.
Ich habe ein paar verschiedene Dinge ausprobiert, die Leerzeichen, um loszuwerden, wie zum Beispiel:
dataPathComboBox.DisplayMember.Trim()
dataPathComboBox.DisplayMember = "descript".Trim
.
Aber nichts hat noch funktioniert. Anders als Iterieren durch Data.DataTable
oder Erstellen einer benutzerdefinierten CopyToDataTable
Methode, gibt es eine Möglichkeit, die Werte zu trimmen? Vielleicht kann es inline mit der LINQ-Abfrage durchgeführt werden?
Hier ist der Code, den ich bisher habe, habe ich kein Problem, das Abfragen der Datenbank und die Informationen bekommen, aber ich kann nicht herausfinden, wie in der ComboBox-Liste den richtigen Text anzuzeigen. Ich bekomme immer System.Data.DataRow
:
Try
Dim t = From r In oData.GetTable("SELECT * FROM ../gsobj/paths ORDER BY keyid") _
Select r
dataPathComboBox.DataSource = t.ToList
dataPathComboBox.SelectedIndex = 0
'dataPathComboBox.DisplayMember = t.ToList.First.Item("descript")
dataPathComboBox.Enabled = True
Catch ex As Exception
Stop
End Try
Ich weiß, dass auf der Display Linie des .First.Item()
Teil falsch ist, ich wollte nur zeigen, welche Zeile ich als Display zu bezeichnen versuchen.
Beachten Sie, dass meine Antworten zur C# -Syntax tendieren, ich habe VB seit langer Zeit nicht mehr verwendet. – SirDemon
Ja, ich kann C# -> VB.NET in meinem Kopf ziemlich gut konvertieren. Keine Sorge ^^. – Anders