2011-06-01 68 views
1

我有一個compositeDatabound控件:MyGrid,MyItemTemplate和MyContainer容器。 我有一個類的用戶。泛型複合數據綁定控件

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 %>

任何幫助/想法如何使這一類型化的網格,以通用類型化的電網?

This是我發現的東西,看起來很複雜。這是唯一的方法嗎?我不想在鏈接中傳遞類型。相反,我將通過派生一個泛型類來創建我的具體類。

我嘗試不斷給我這個錯誤:Invalid expression term '>'

補充:這是ASP.NET 2.0 Web窗體

回答

0

我改變了類MyGrid一個抽象類MyGrid並取得了Itemplate屬性抽象爲好。然後在我的具體的派生類MyUserGrid:MyGrid我實現與TemplateContainer的了Itemplate財產屬性,如:

[TemplateContainer(typeof(MyUserGrid.MyContainer))] 

這是不是很方便,但仍然不夠好一般我使用。但如果您有更好的解決方案,請隨時留言。