2012-03-19 38 views
0

我有必然要放置在用戶控件內一個ObjectDataSource的FormView控件,用下面的代碼初始化:爲什麼我的ASP.NET FormView總是呈現EmptyTemplate?

<asp:ObjectDataSource ID="odsCampaign" runat="server" 
    DataObjectTypeName="code.model.Campaign" 
    TypeName="code.model.Campaign" 
    SelectMethod="LoadCampaign"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="code" QueryStringField="id" Type="Int32" /> 
    </SelectParameters> 
</asp:ObjectDataSource> 

<%-- ... --%> 

<asp:FormView ID="fvCampaign" runat="server" 
    DataSourceID="odsCampaign"> 
    <EmptyDataTemplate> 
     <span>No campaign loaded.</span> 
    </EmptyDataTemplate> 
    <ItemTemplate> 
     <span>Campaign</span> 
     <span><%# Eval("Subject") %></span> 

     <%-- ... --%> 
    </ItemTemplate> 
</asp:FormView> 

我後面的代碼看起來是這樣的:

// CampaignCallCollection inherits from IEnumerable<CampaignCall> 
public class Campaign : CampaignCallCollection 
{ 
    // Some property to show 
    public string Subject { get; set; } 

    // Constructor 
    public Campaign(int code) 
     : base() 
    { 
     // Initialize the object based on the primary key passed to the constructor 
     InitializeCampaign(code); 
    } 

    private void InitializeCampaign(int code) 
    { 
     // Initialization Code 
    } 

    // Loading method for ObjectDataSource 
    public static Campaign LoadCampaign(int code) 
    { 
     // Return new instance of an initialized campaign object. 
     Campaign oCampaign = new Campaign(code); 
     //throw new Exception(oCampaign.Subject); 
     return oCampaign; 
    } 
} 

但是如果我啓用異常正確的主題文本作爲例外消息傳遞。但是我的FormView通常會渲染EmptyTemplate。我在這裏看不到錯誤。任何人都可以幫我解決這個問題嗎?

在此先感謝!

回答

0

是否因爲期望的是活動列表而不是單個活動?

+0

這種情況下的Campaign定義爲CampaignCalls的列表。 Campaign-Object本身爲這些調用描述了某種元信息。在我的FormView中,我想爲單個廣告系列實例顯示這些信息。這就是爲什麼DataObjectTypeName是code.model.Campaign。但是這個想法並不糟糕 - 也許FormView不能直接或間接地從IEnumerable <>繼承對象?我會檢查這個! :-) – Carsten 2012-03-19 09:34:39

+0

好吧, 從繼承層次結構中移除IEnumerable <>修復了問題。在編碼之後,我更改了Campaign和CampaignCallCollection之間的關係,以便Campaign不會從CampaignCallCollection繼承,但會保留此對象實例的引用。 非常感謝:-) 非常感謝! – Carsten 2012-03-19 10:10:26

+0

好消息很高興你整理出來:D – 2012-03-19 15:10:44

相關問題