2009-03-30 9 views
0

私は次の問題を解決する良い記事が見つからないので、誰かが答えを持っているか、答えにリンクしていれば私は満足しています。ASP.NET UserControls - コンテンツフィールドをaspxコードからアクセス可能にするにはどうすればよいですか?

のは、私は、ユーザーコントロールを作成したとしましょう、私は、私は、ユーザーコントロールを作成するために、どのようにプロパティやイベントを追加する方法を知っているプレフィックスUC

<uc:MyUserControl runat="server" id="uc_test" SomeProperty="true"> 
<InnerContent> 
    ... 
    Controls added in here.... 
    <asp:Button runat="server" id="btn_test" Text="Test"> 
    ... 
<InnerContent> 
</uc:MyUserControl> 

とascxファイルでそれををreg MyUserControl.ascx

と呼ばれます。

私のUserControlで "InnerContent"フィールドを作成するにはどうすればよいですか?

私は見当がつかないので、少し具体的な:)

乾杯

答えて

2

あなたは通常、ユーザーコントロール(.ascx)とそれをしないてください。それは完全に可能です。これは、コードファイルを使用して構築するカスタムコントロールで行われます。それを達成するために、あなたはあなたのコントロールクラスのような宣言:.ascxファイルの場合

[ParseChildren(true), PersistChildren(false)] 
public class MyControl : Control, INamingContainer { 

    [PersistenceMode(PersistenceMode.InnerProperty), 
    TemplateContainer(InnerContentTemplate)] 
    public ITemplate InnerContent { get; set; } 

    void CreateChildControls() { 
     InnerContentTemplate temp = new InnerContentTemplate(); 
     InnerContent.InstantiateIn(temp); 
     Controls.Add(temp); 
    } 
} 

public class InnerContentTemplate : Control, INamingContainer { 

} 

あなたの代わりにUserControlからそれを継承することができます。

ASP.NETでのテンプレート作成はかなり複雑です。答えのすべてを説明することは実際には不可能です。いくつかのサンプルとドキュメントを参照する必要があります。

+0

これは正確に私が達成しようとしているようですが、あなたはセッター機能の例を挙げることができますか? UserControlのPanelにデータをロードしていますか? –

+0

ありがとうと私はあなたが言っていることを取得し、それを読み上げます。ご協力いただきありがとうございます。 –

+0

これは私のためのworkignですが、テンプレートに追加したコントロールをもう一度戻す方法を見つけることができないようです。 私にはこのヒントがありますか? –

0

リピータのようにテンプレートコントロールを作成する必要があります(つまり、ItemTemplate領域にヘッダーとwotnotがあります)。 Hereがその一例です。

+0

このリンクをお寄せいただきありがとうございます! –

0

Merhdadさんの返信に加えて、 これは私にとってはうまくいっていますが、テンプレートに追加したコントロールをもう一度取り戻す方法が見つけられないようです。これについて私に何かヒントはありますか? - 本物のナプスター(14分前) 試しましたControl.FindControl方法? - のようなMehrdad(8分前)

..................

私はそれが追加パネルにアクセスして、テンプレートを見つけることができます。..サムシングこの:

pnl_content.Controls[index] 

が、私は、テンプレートからコントロールを取得する方法が分からない...

これは私のコードは次のようになります。

<uc:PopupOKCancel ClientInstanceName="pop_createCompany" runat="server" ID="pop_createCompany" OKButtonText="opret" HeaderText="Opret nyt firma"> 
    <ContentTemplate> 
      <uc:CompanyDetails runat="server" id="uc_companyDetails"></uc:CompanyDetails> 
    </ContentTemplate> 
</uc:PopupOKCancel> 

CompanyDetails UserControlは実際には存在していないようです。テンプレートのみが存在するようです。テンプレートクラスにいくつかのプロパティを追加しようとしましたので、それらを設定して取得できますが、 。

関連する問題