Although 300-400 rows is not a very large data set, I would probably vote for option B, as it will definitely be more scalable. Once you start receiving massive data, loading all of it with a single request and processing the GridView, the search call will be incredibly slow. The best option is, as you said, only requesting the data needed for each page.
However, if you do not have datasets larger than 300-400 records, you probably do not need to worry too much about load times, but again, the key is scalable.
source
share