ASP.NET ユーザー コントロールの組み合わせを動的に生成するにはどうすればよいですか?
-
01-07-2019 - |
質問
いくつかのユーザー コントロールがあるとします。 A
, B
, C
そして D
. 。ランダムな入力に基づいて、これらの組み合わせを生成する必要があります。たとえば、入力が 2a3d1a2c
A を 2 つ、その後に D を 3 つ、もう一度 A を表示する必要があります。
clientid が正しく動作するためには、clientid を安定させる必要もあります。これらのコントロールはそれぞれ独自のコントロールを使用するため、 ClientID
自身に関する入力を収集するプロパティ。たとえば、ユーザー コントロール A は、という名前の入力を内部的に生成します。 this.ClientID + "$input1"
, 、次のようなリクエストから入力を収集します Request[this.ClientID + "$input1"]
. 。A は複数存在する可能性があるため、各 A は同じである必要があります。 (unique) ClientID
リクエストから正しい入力を取得するためにポストバック後に。
解決
コントロールを動的に追加するには、パネルをプレースホルダーとして使用できます。
<asp:Panel ID="ControlPlaceholder" runat="server" />
次に、サーバー側で次のようにオブジェクトを追加できます。
int controlCount = 0;
...
TextBox newTextBox = TextBox();
newTextBox.ID = "ctl_" + controlCount++;
ControlPlaceholder.Controls.Add(newTextBox);
Page_Load イベント中にコントロールを追加し、コントロールの ID を生成する一貫した方法 (上記の単純なカウントなど) を使用すると、ビューステートまたはイベント バインディングはポストバックで適切なオブジェクトに再バインドされます。
所属していません StackOverflow