次のように、プレースホルダーにコントロールを動的に追加したいと思います。
int fileCount = Convert.ToInt32(lblCount.Text);
for (int i = 0; i<fileCount ; i++)
{
FileUpload fu = new FileUpload();
if(PlaceHolder1.HasControls())
PlaceHolder1.Controls.AddAt(i,fu);
else
PlaceHolder1.Controls.Add(fu);
PlaceHolder1.Controls[i].ID = "123456abcdef" + i;
}
しかし、私はエラーを受け取ります
同じID「123456abcdef0」の複数のコントロールが見つかりました。FindControlでは、コントロールに一意のIDが必要です。
なんで?ループの各反復で、1つのコントロールのみがそのIDを取得する必要があります。
編集:私は実際にループをテストすることができなかったことに言及する必要があります、fileCountが1の場合でもエラーが発生します。
解決策:この関数は、ページの読み込みの「foreach」ループの外にあると思ったときに呼び出しました。それでも、clear()メソッドを念頭に置くと、関数のaddat部分が不要になります。