i had a similar situation, different users can view different grids/columns...etc, they way i solved it: tables in sql (stripped down version, email me if you want the full implementation): GridViewSetup (ID, Name, MaxRows ...etc) GridViewItem (GridViewID, ID, DisplayName, DatabaseColumnName, AllowSort, Format, Width...etc) DataSetup (ID, Proc to use, ReturnType(DataTable/CustomCollection...etc) PageSetup (UserID, PageID, GridViewSetupID, DataSetupID) when a user visits page x, i look up what grid