Correct, you should use some existing asp.net data controls rather than doing this.
Also it is better practice to get data in a chunk rather than getting row by row using datareader. Just get the data and have it in DataSet then bind the data control with the data retrieved. Only refresh data when any update or delete is happening.
Please let me know if this helps.
It also depends on the requirement, so please go through the difference here and decide as per your convenience.
Click Here[
^]