2008-09-07 36 views
12

ユーザーコントロールのプロパティをListViewLayoutTemplateにコードビハインドから設定するにはどうすればよいですか?listviewのlayouttemplateでコントロールにアクセスするには?

<asp:ListView ...> 
<LayoutTemplate> 
<myprefix:MyControl id="myControl" ... /> 
</LayoutTemplate> 
... 
</asp:ListView> 

私はこれをしたい:

myControl.SomeProperty = somevalue; 

私のコントロールがItemTemplateではない、それはLayoutTemplateであるので、それはすべてのアイテムに存在していない、それは一度だけ存在することに注意してください。だから、データにバインドされたすべてのアイテムではなく、一度アクセスできるはずです。

答えて

12

LayoutTemplate内にあるコントロールのプロパティを設定するには、ListViewコントロールでFindControlメソッドを使用します。

var control = (MyControl)myListView.FindControl("myControlId"); 
1

各ListViewItemでFindControlメソッドを使用します。

var control = (MyControl)Item.FindControl("yourControlId"); 
1

これは、このスタックオーバーフローの質問に回答されています
Access a control inside a the LayoutTemplate of a ListView

はtanathosによって受け入れ答えにコメントを参照してください。

これは1年以上前に尋ねられましたが、私がここまで来た検索用語の最初の結果の1つで、私はそれに遭遇した誰かのために答えを残したかったのです。

0

レイアウトが作成され、レイアウトがシステムで作成されたことを示すLayoutCreatedイベントが発生します。

次に、listview.FindControlを使用して、そのコントロールへの参照を取得できます。

18
var control = (MyControl)myListView.FindControl("myControlId"); 

これは動作しますが、データバインドまたはLayoutTemplateはエラーをスローこのようにして作成されていませんした後、あなたがそれを行うことを確認します。

関連する問題