ObjectDataSource sorting filtering paging
In my project there will be more than 2 mln users. And for one of page I need to just show some info about users in gridview. I'm using ObjectDataSource and my DAL LINQ methods. Is it right way to get not slowly data retreiving? Or i have to implement custom paging, sorting and so on?
Amit ChoudharyPosted Mar 16, 2010, 1:08 AM
you can apply caching for pages if you are using asp.net... or you can save the data in http cache on application start and use it when your application is loaded in your global.asax
Please mark as answer if it helps.
pavel yermalovichPosted Mar 15, 2010, 7:02 PM
string usernameMask, string emailMask,
int totalBalanceFrom, int totalBalanceTo,
int realBalanceFrom, int realBalanceTo,
int bonusFrom, int bonusTo, string PartnerProgramName)
{
using (UserDataContext db = new UserDataContext())
{
var query = from users in db.Users
select users;
if (usernameMask != null && usernameMask != String.Empty)
{
query = query.Where(users => users.Username.Contains(usernameMask));
}
if (emailMask != null && emailMask != String.Empty)
{
query = query.Where(users => users.Email.Contains(emailMask));
}
if (PartnerProgramName != null && PartnerProgramName != String.Empty)
{
query = query.Where(users => users.PartnerProgram == PartnerProgramName);
}
if (totalBalanceFrom > 0 || totalBalanceTo < int.MaxValue)
{
query = query.Where(users => users.TotalBalance >= totalBalanceFrom &&
users.TotalBalance <= totalBalanceTo);
}
if (realBalanceFrom > 0 || realBalanceTo < int.MaxValue)
{
query = query.Where(users => users.RealBalance >= realBalanceFrom &&
users.RealBalance <= realBalanceTo);
}
if (bonusFrom > 0 || bonusTo < int.MaxValue)
{
query = query.Where(users => users.BonusBalance >= bonusFrom &&
users.BonusBalance <= bonusTo);
}
return ToDataTable
}
}
And may be somebody knows how to build more eficient method for filtering than my