What is Request.QueryString("i") returning?
Array.IndexOf will return -1 if you don't have a match (which you're incrementing by 1)
Example using strings:
Code:
Dim strings() As String = New String() {"Document1", "Document2", "Document3", "Document4", "Document5"}
'Returns -1
MessageBox.Show(Array.IndexOf(strings, "Document10"))
'Returns 2
MessageBox.Show(Array.IndexOf(strings, "Document3"))