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。我在這裏看不到錯誤。任何人都可以幫我解決這個問題嗎?
在此先感謝!
這種情況下的Campaign定義爲CampaignCalls的列表。 Campaign-Object本身爲這些調用描述了某種元信息。在我的FormView中,我想爲單個廣告系列實例顯示這些信息。這就是爲什麼DataObjectTypeName是code.model.Campaign。但是這個想法並不糟糕 - 也許FormView不能直接或間接地從IEnumerable <>繼承對象?我會檢查這個! :-) – Carsten 2012-03-19 09:34:39
好吧, 從繼承層次結構中移除IEnumerable <>修復了問題。在編碼之後,我更改了Campaign和CampaignCallCollection之間的關係,以便Campaign不會從CampaignCallCollection繼承,但會保留此對象實例的引用。 非常感謝:-) 非常感謝! – Carsten 2012-03-19 10:10:26
好消息很高興你整理出來:D – 2012-03-19 15:10:44