私はcompositeDataboundコントロールを持っています:MyContainerのコンテナを持つMyItemTemplateを持つMyGrid。クラス 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 %>
この Typed Grid を Generic Typed Grid にする方法についてのヘルプ/アイデアはありますか?
これは私が見つけたもので、ちょっと複雑に見えます。それが正しい唯一の方法ですか?リンクのようにプロパティにタイプを渡したくありません。代わりに、ジェネリック クラスから派生させて具象クラスを作成します。
私の試みは私にこのエラーを与え続けます:Invalid expression term '>'
追加するには: ASP.NET 2.0 WebForms です