0

asp.net リピーター フッター テンプレートのコントロールに値を与えたいです。

Dim FooterTemplate As Control = TicketRepeater.Controls(TicketRepeater.Controls.Count - 1).Controls(0)
Dim lblFooter As Literal = TryCast(FooterTemplate.FindControl("TicketTotalNumberOfTickets"), Literal)
lblFooter.Text = TicketDataTable.Rows.Count.ToString()

エラーで戻ります:

Specified argument was out of the range of valid values.
Parameter name: index

AFAIU it cant find count of controls = no controls found?. 助言がありますか?

チェックポイント:

  • すべての ID が正しい
  • リピーターには、headertemplate、itemtemplate、footertemplate の 3 つの部分があります

ヘルプ!


アップデート

コードは実際に動作しdatabind()ます。データバインドイベントの前に機能させる方法はありますか?

4

1 に答える 1

1

データバインドの前に行うことはできません。そのリピーターを何かにバインドするまで、それは単なる空のシェルであり、コントロールはありません。バインディングは、ヘッダー、フッター、およびアイテムを作成するものです。

いずれにせよ、バインディングはフッターに関係するものをすべて消去してしまうので、そのリピーターにバインドするつもりなら (そして、それ以外の理由でそれを使用する必要はありません)、バインドする前にそれを操作しようとしても意味がありません。

ヘッダーとフッターを備えた空のリピーターが必要であり、後で (おそらくユーザーによる何らかのアクションの後) データが入力されたデータ ソースにバインドする必要がある場合は、空の (null ではない) データ ソースへのバインドを試すことができます。100%確信はありませんが、リピーターにヘッダーとフッターが生成されるはずですが、アイテムは生成されないと思います。

于 2012-09-12T21:44:28.880 に答える