Re: Displaying book titles
Here is a conceptual example of working with your data (my source I am sure is slightly different than yours yet you can adapt). No UI controls are used, should be easy for you to work out.
Code:
Dim dt As New DataTable
dt.Columns.Add(New DataColumn With {.ColumnName = "Title", .DataType = GetType(String)})
dt.Columns.Add(New DataColumn With {.ColumnName = "Author", .DataType = GetType(String)})
dt.Columns.Add(New DataColumn With {.ColumnName = "Category", .DataType = GetType(String)})
dt.Columns.Add(New DataColumn With {.ColumnName = "Stock", .DataType = GetType(Int32)})
dt.Columns.Add(New DataColumn With {.ColumnName = "Price", .DataType = GetType(Decimal)})
Using MyReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("Books.txt")
MyReader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
MyReader.Delimiters = New String() {","}
Dim Row As String()
While Not MyReader.EndOfData
Try
Row = MyReader.ReadFields()
dt.Rows.Add(New Object() _
{
Row(0),
Row(1),
IIf(Row(2) = "F", "Fiction", "Non-Fiction").ToString,
CInt(Row(3)),
CDec(Row(4))
}
)
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
Console.WriteLine(ex.Message)
End Try
End While
End Using
Dim dvFiction As DataView = dt.DefaultView
dvFiction.RowFilter = "Category = 'Fiction'"
For Each row As DataRowView In dvFiction
Console.WriteLine(String.Join(",", row.Row.ItemArray))
Next
Console.WriteLine()
Dim dvNonFiction As DataView = dt.DefaultView
dvFiction.RowFilter = "Category = 'Non-Fiction'"
For Each row As DataRowView In dvNonFiction
Console.WriteLine(String.Join(",", row.Row.ItemArray))
Next
File Books.txt
Code:
Title1,Bob Smith,F,10,12.99
Title2,Jane Anderson,N,2,3.99
Title3,Serge Abiteboul,F,5,10.78
Title4,Dan Suciu,N,3,23.87
Results
Code:
Title1,Bob Smith,Fiction,10,12.99
Title3,Serge Abiteboul,Fiction,5,10.78
Title2,Jane Anderson,Non-Fiction,2,3.99
Title4,Dan Suciu,Non-Fiction,3,23.87