Søg, sortere og presentere store mængder data.
Hej eksperter,Jeg har i et stykke tid grublet lidt over hvordan man smartest laver en ASP.NET 2.0 C# side, der repræsenterer brugeren for et udtræk fra en database (typisk i et Gridview).
Som eksempel, siger vi, at brugeren har mulighed for, at få vist en oversigt over samtlige brugere i et bestemt miljø. Brugeren bliver bedt om at indtaste et brugernavn, eller en del af et brugernavn. Indtastes der fx ”con”, bliver alle brugere hvis brugernavn indeholder ”con”, vist i et Gridview.
Til dette forestiller jeg mig en metode i et data access layer, kaldet GetUsersByUsername(string username).
Man kan også søge på andre parameter, så vi har også følgende metoder:
GetUsersByFullName(string fullName);
GetUsersByNumber(int number);
GetAllUsers();
… osv.
Disse metoder returnerer en DataTable, som bliver bundet til et Gridview.
Hvis jeg så også vil have mulighed for, at sortere mit udtræk (ved at klikker på et kolonnenavn i Gridviewet), så skal jeg oprette yderligere 4 metoder:
GetUsersByUsernameAndSort(string username, string sortExpression, SortDirection direction);
GetUsersByFullName AndSort(string fullName, string sortExpression, SortDirection direction);
GetUsersByNumber AndSort(int number, string sortExpression, SortDirection direction);
GetAllUsers AndSort(string sortExpression, SortDirection direction);
Det første “problem”, er altså, at jeg vil ende med at få rigtig mange metoder, hvor I der star meget af det same.
Det andet problem er, at jeg skal holde styr på, om der er søgt på brugernavn, navn, nummer eller på alle brugere hver gang brugeren sorterer Gridviewet.
Og endvidere, hvis jeg giver brugeren mulighed for at søge på flere parameter, fx nummer og dato, så får jeg rigtig mange flere metoder:
GetUsersByNumber();
GetUsersByNumberAndDate();
GetUsersByNumberAndDateAndAlive();
GetUsersByNumberAndSort();
GetUsersByNumberAndDateAndSort();
GetUsersByNumberAndDateAndAliveAndSort();
Jeg arbejder med en kæmpe database hvor man skal have mulighed for at søge på rigtig mange kolonner i databasen, og mit spørgsmål er hvordan man går dette nemmest? Den metode jeg har illustreret her, håber jeg er besværlig – for ellers får jeg et kæmpe arbejde. Håber I kan komme med nogle gode råd.
På forhånd tak.