У меня есть составной элемент управления DataBound: MyGrid с MyItemTemplate с контейнером MyContainer.У меня есть класс User.
public class MyGrid: CompositeDataBoundControl
{
[TemplateContainer(typeof(MyGrid.MyContainer))]
public ITemplate MyItemTemplate
{
//get;set;
}
public class MyContainer: Control, INamingContainer
{
//return DataItem of type User
}
//rest of all code
}
Это помогает мне использовать: <%# Container.DataItem.FirstName %>
где FirstName является свойством в классе пользователя.
Теперь я хочу сделать его общей сеткой, т. Е. MyGrid<T>
Поэтому я должен изменить свой TemplateContainer так:
[TemplateContainer(typeof(MyGrid<>.MyContainer))]
Класс MyGrid прекрасно компилируется без ошибок: я создаю конкретный класс, то есть
MyUserGrid: MyGrid<User>
и он тоже хорошо компилируется.Но это не нравится ASP.NET.Я имею в виду, что сам класс компилируется без ошибок, но я больше не могу использовать:
<%# Container.DataItem.User.FirstName %>
Любая помощь / идеи, как превратить эту типизированную сетку в универсальную типизированную сетку?* Это - это то, что я нашел, и выглядит довольно сложно.Это правильный и единственный путь?Я не хочу передавать тип в свойстве, как в ссылке.Вместо этого я буду создавать свой конкретный класс, производный от универсального класса.
Моя попытка постоянно выдаёт мне эту ошибку: Invalid expression term '>'
Добавить: Это ASP.NET 2.0 WebForms