Ken H.
asked on
[LINQ] Problem binding data to drop down box
The DataValueField contains the appropriate data, but the DataTextField shows up as
System.Linq.Enumerable+Whe reSelectEn umerableIt erator'2[S ystem.Stri ng, System.String]
Full code for the sub is below. Basically i need the full path to each file but in the drop down box i only want to display the file name, hence the linq filter.
System.Linq.Enumerable+Whe
Full code for the sub is below. Basically i need the full path to each file but in the drop down box i only want to display the file name, hence the linq filter.
Dim Table1 As DataTable
Table1 = New DataTable("DAT List")
Dim datFiles As DataColumn = New DataColumn("Files")
datFiles.DataType = System.Type.GetType("System.String")
Table1.Columns.Add(datFiles)
Dim datName As DataColumn = New DataColumn("Name")
datFiles.DataType = System.Type.GetType("System.String")
Table1.Columns.Add(datName)
Dim datPath As String = txtPath.Text & "\SnapDriveInfo\"
Dim datFile As String() = IO.Directory.GetFiles(txtPath.Text & "\SnapDriveInfo\")
Dim file = From p In datFile Where p.Contains(".dat") Select p
'Dim logName = From q In file Where q.Contains(".dat") Select q.Replace(datPath, String.Empty).Trim
Dim logName = From q In file Where q.Contains(".dat") Select q.Replace(datPath, String.Empty).Trim
For Each log In file
txtOut.Text &= log
txtOut.Text &= vbCrLf
Dim Row1 As DataRow
Try
Row1 = Table1.NewRow()
Row1.Item(datFiles) = log
Row1.Item(datName) = logName
Table1.Rows.Add(Row1)
Catch ex As Exception
End Try
Next
drpDatFiles.DataSource = Table1
drpDatFiles.DataTextField = Table1.Columns(1).ToString
drpDatFiles.DataValueField = Table1.Columns(0).ToString
drpDatFiles.DataBind()
ASKER
I made that change and the behavior is still the same.
Move
drpDatFiles.DataSource = Table1
to after the above two lines
drpDatFiles.DataSource = Table1
to after the above two lines
ASKER
Still doesn't change the drop down box output.
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
ASKER
here is something interesting. if i use table1.columns(0).tostring for the text field i get the full path to the file displayed properly. but table1.columns(1).tostring doesnt and column 1 contains the text i want displayed.
ASKER
That did the trick. Thank you!
Glad to help :-)
drpDatFiles.DataTextField = Table1.Columns(1).ToString
drpDatFiles.DataValueField
to
drpDatFiles.DataTextField = "Name"
drpDatFiles.DataValueField