[/code] tags when posting code to preserve the formatting and make it readable.
As to your problem, i believe it stems from calling cmd.ExecuteReader() twice. You load the data into your SqlDataReader, check it has rows then try to get the dataset again. You already have the data in your DataReader so use that.
I havent checked, but im sure you can do something like:
this.gvwregioncategory.DataSource = reader;
EDIT: pipped at the post...great minds and all that :p