0
私は次のコードで初期化されたユーザーコントロールの内部に配置されたのObjectDataSourceにバインドFormViewコントロール、持っている:私は有効にした場合しかし、私のASP.NET FormViewは常にEmptyTemplateをレンダリングしますか?
// 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;
}
}
:私のコードが背後にある次のようになります
<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>
を例外として、適切な件名のテキストが例外メッセージとして渡されます。しかし、私のFormViewは常にEmptyTemplateをレンダリングします。私は本当にここで間違いを見ない。誰もがこれで私を助けることができますか?
ありがとうございます!
この場合のキャンペーンは、CampaignCallsのリストとして定義されています。 Campaign-Object自体には、これらの呼び出しのためのある種のメタ情報が記述されています。 FormViewでは、1つのキャンペーンインスタンスに対してこれらの情報を表示したいと考えています。これがDataObjectTypeNameがcode.model.Campaignである理由です。しかし、FormViewはIEnumerable <>から直接的または間接的に継承するオブジェクトをレンダリングできない可能性があります。私はこれをチェックします! :-) – Carsten
いいえ、 IEnumerable <>を継承階層から削除すると問題が解決しました。いくつかのコーディングの後、私はCampaignとCampaignCallCollectionの関係を変更しました。そのため、CampaignはCampaignCallCollectionから継承せず、このオブジェクトのインスタンスの参照を保持します。 ありがとう:-) ありがとうございます! – Carsten
うれしいニュースはあなたがそれを整理してうれしいです:D –