Witam,
Miałem problem z paginacją GridView kiedy używam Linq – znalazłem rozwiązanie wykorzystując ObjectDataSource.
…Może najpierw pokaże kod i dopiero napisze z czym mam problem.
W Page_Load mam:
ObjectDataSource gridview_dane = new ObjectDataSource();
gridview_dane.ID = "ObjectDataSource_GridView";
gridview_dane.TypeName = "Magazyn.Class.Linq_Zapytanie";
gridview_dane.SelectMethod = "Query_All";
gridview_dane.SelectCountMethod = "Get_Magazyn_Count";
gridview_dane.EnablePaging = true;
Page.Controls.Add(gridview_dane);
GridView_Magazyn.DataSourceID = "ObjectDataSource_GridView";
Dalej w pliku Linq_Zapytanie.cs kod wygląda tak:
static public System.Linq.IQueryable<Narzedzia> Query_All(int startRowIndex, int maximumRows)
{
var Magazyn = new Magazyn_TestContainer();
var query = from p in Magazyn.Moj_Magazyn
select
new Narzedzia
{
Id = p.Id,
Nazwa = p.Nazwa,
Typ = p.Typ
};
return query.OrderBy(p => p.Id).Skip(startRowIndex).Take(maximumRows);
}
Paginacja działa prawidłowo, jednak potrzebuje do Query_All dodać jeszcze jednen parametr, czyli:
static public System.Linq.IQueryable<Narzedzia> Query_All(int startRowIndex, int maximumRows, string dane)
Rozumiem, że gridview_dane.SelectMethod = "Query_All"; powoduje automatyczne podanie wartości dla startRowIndex i maximumRows …ale jak w Page_Load mam przesłać wartość dla dodatkowego parametru „dane”.
Pozdrawiam
Andrzej