Datasets primarily are designed to display disconnected data by binding them to a dataset or datatable. This data can come from a datasource or be custom created in code. The user can edit records in the datagrid and then via code you can update the source. i.e. their changes will be reflected in the disconnected dataset but your code actually sends these updates to the database for example when you wish. This is the primary use of the datagrid. For displaying uneditable data you would opt for a listview or something from a datareader with less overhead.