You've set up your hyperlink field.

BookCollection.aspx?ID={0}

Does the hyperlink render properly with correct IDs?

When you then click on the link and go to BookCollection.aspx, how are you actually getting the ID? The SelectCommand of your datasource needs to know the ID that it is supposed to be dealing with. For that, you need to use Request.QueryString(), and pass it to the SelectCommand.