У меня есть метод сортировки сетки и подкачки, который я пытаюсь сделать многоразовым для общих типов, но я изо всех сил пытаюсь понять, как сделать динамические переменные сущности (MyContext) и таблицы (tblReports) - может кто-нибудь помочь мне пожалуйста?Могу ли я использовать динамический сущностный контекст в моем методе?
protected void PopulateGridView<T>(GridView grid)
{
string columnToSortBy = (string)(ViewState["gridview_sortbycolumn"] ?? string.Empty);
SortDirection sortDirection = (SortDirection)(ViewState["gridview_sortdirection"] ?? SortDirection.Descending);
int pageIndex = (int)(ViewState["gridview_pageindex"] ?? 0);
int pageSize = grid.PageCount;
using (MyContext db = new MyContext())
{
if (columnToSortBy != string.Empty)
{
var query = db.tblReports.OrderBy(columnToSortBy + " " + sortDirection).Skip(pageIndex * pageSize);
grid.DataSource = query.ToList();
}
else
{
string defaultColumn = string.Empty;
foreach (var field in typeof(T).GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance))
{
defaultColumn = field.Name.Remove(field.Name.IndexOf(">")).Replace("<", string.Empty);
break;
}
var query = db.tblReports.OrderBy(defaultColumn).Skip(pageIndex * pageSize);
grid.DataSource = query.ToList();
}
grid.PageIndex = pageIndex;
grid.DataBind();
}
}
Что идет не так? Что делает код примера (или нет). –
спасибо за ответ, я в настоящее время должен объявить конкретный контекст объекта (MyContext) и обратиться к определенной таблице сущностей (tblReport) - я хотел бы иметь возможность абстрагировать их вне метода, чтобы он мог стать общим и обрабатывать любое gridview, не привязанное к определенной конфигурации. – Mike
Не можете ли вы передать параметр tblReports в качестве параметра? и используйте 'typeof (tableparameter)' вместо 'typeof (T)'. Делает: «PopulateGridView (grid, db.tableReports);' Ищите базовый класс tblReports в качестве типа параметра. –