2011-01-06 10 views
0

でLayoutTemplateを実装する方法を、私はListViewに似たものを実装したいと思います、私はITemplate.InstantiateIn(myControl)をやっています。私自身のサーバーコントロールのプレースホルダ

しかし、プレースホルダにコントロールを挿入する方法を理解できません。私はそれがMyTemplate.FindControl("itemPlaceholder").Controls.Add(myControl)のようなものになると推測しています。私は私のITemplateの型にキャストしようとしたが、私はエラーを取得:

Unable to cast object of type 'System.Web.UI.CompiledTemplateBuilder' to type 'MyNamespace.MyLayoutTemplate' 

は、私が何をしないのですか?

編集:私はちょうどこれを見つけました:http://www.nikhilk.net/SingleInstanceTemplates.aspxControl developers can define templates to be single instance using metadata which causes the ID'd controls within the template contents to be promoted to the page level... The parser and code-generator together work behind the scenes to add member fields, and initialize them at the right time.。それはユーザーコントロールのためだけだと思われる?私はこの後にPage.FindControl()を試しましたが、何も見つかりませんでした。

答えて

1

でこのライブラリを使用していた過去には[OK]を、これは単にユーザーエラーの問題でした。私はITemplatePanelにインスタンス化しました。明らかにPage.FindControl()(これは再帰的ではありません)は動作しません。私がPanel.FindControl()をやったら、すべてがうまくいった。

0
+0

ポストバックのプレースホルダにコントロールを永続させるためのようです。私もコントロールを追加することはできません...私は '私は' Controls.Add() 'を行うことができるように、何とか私の' ITemplate'の 'PlaceHolder'への参照を取得する必要があります。 –