From first glance you created a DataView from the table and then you sorted it. The row order in the dataview will not match the row order in the original table. So you are searching the dataview for the Index only to use the index with the original table. Why not search the DataView?
Do the following creating your dataview and kill 2 birds with one stone.
Dim dv As New DataView(Datatable Name, "ID = " & Cstr(Index), "Sort Column", DataViewRowState.CurrentRows)
"Sort Column" = Column Name you want to sort by.
Then you can get the values for your TextBoxes
by iterating the columns of the row returned
TextBox1.Text = CStr(dv(0)("Columnx"))
TextBox2.Text = cstr(dv(0) ("Columnx")) Columnx = Column Name from your table
Seems like you only want one row from the Table to fill your textboxes.
OR DO NOT SORT THE DATAVIEW AND YOUR CURRENT CODE SHOULD WORK