- - PR -
複数のコントロールが見つかりました
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-03-09 17:36
カゴと申します。
VB.NETのWebフォーム構築において、 動的に作ったテーブルの扱いに悩んでいます。 どなたかご存知でしたら、ご教授願います。 Aドロップダウンリストで作成したいテーブルの行数を指定し、 Aボタンをクリックする事によりAテーブルを作成し、また、 Bドロップダウンリストで作成したいテーブルの行数を指定し、 Bボタンをクリックする事によりBテーブルを作成したいと考えています。 (列数は固定) 各テーブルは Dim i,j As Integer Dim intCells As Integer = 2 ' セルの数 Dim intRows As Integer = 10 ' 行の数 Dim conTextBox(20) As System.Web.UI.WebControls.TextBox ' TextBoxの数 '各セルはテキストボックスにて構成されています。 For j = 0 To intRows - 1 Dim tbRow As New TableRow For i = 0 To intCells - 1 ' セルの作成 Dim tbCell As New TableCell ' コントロール(TextBox)の作成 conTextBox(j) = New System.Web.UI.WebControls.TextBox Me.FindControl("Form1").Controls.Add(conTextBox(j)) tbCell.Controls.Add(conTextBox(j)) tbRow.Cells.Add(tbCell) Next Table1.Rows.Add(tbRow) というように動的に作成します。 Aテーブル作成後にBテーブルを作成してもAテーブルは画面上に そのまま残っていて欲しいのですが、最初にAテーブルを作成した後に、 Bボタンをクリックすると 「同じ ID '_ctl0' を持つ複数のコントロールが見つかりました。 FindControl を使うには、コントロールに一意の ID を指定する必要があります。 」 というエラーになってしまいます。 Bボタン以外のポストバック機能を持ったボタンを クリックしても同じ現象になります。 動的にテーブル内のセルを作るときにそのセルのIDが自動的に作成され、 Aテーブルを作成するときに使ったIDとBテーブルを作成しようとした時のIDが 重なってしまい上記のエラーになるように思われますが、 このような事象についての回避策、調査方法をご存知でしたら是非教えて下さい。 よろしくお願いします。 |
|
投稿日時: 2004-03-09 18:17
ControlクラスにはIDというプロパティがあります。
これに一意な値を設定してみてください。 |
|
投稿日時: 2004-03-09 18:55
早々のご回答ありがとうございます。
なるほど、IDを明示的に設定するのですね。 やってみます。 ホッとしました。 |
|
投稿日時: 2004-03-09 19:09
いや、そうすれば解決するのかどうか分からないのでホッとされると困るんですが・・・
実際やってみて結果を教えてください。 |
1