You can certainly use a DataGridView. You'd use it unbound so you can control each cell and its formatting and whether it can be edited. You would populate a DataTable from the database and then copy the data across to those expense rows in the grid. After the user makes the desired modifications, you can copy the changes back to the DataTable and then save to the database. You can insert or remove rows in the grid as desired as expenses change.