900 queries per page sounds complicated.
Well here's a bunch of assumptions:
If I understand correctly, you're displaying one month of data on a single web page, and that can involve up to 465 cells of data? So what is it, 31 fifteen hour days displayed as a sort of grid?
What kind of control are you using to display these 465 cells?
If you're using simple input text boxes, why not name each box by row and column number? That would give each cell a unique name.
If you're "posting" this data back to the database, is it possible to request each cell by name?
I'm assuming your grid will have a start date and a start time (hour?) too. With that, there's no need to associate each dates with all cells. You should be able to determine in your post that input box named rowx-columny of value such and such corresponds to date such and such and time slot such and such, assuming every column increments by the same time interval and each row increments by the same date interval or vice-versa.
Or something or rather...