さまざまな異なるコントロールを動的に作成する必要があるアプリケーションがあります。複数のチェックボックス(またはそれ以外のもの)に対しては正常に機能します。
まず、ASPX ページに「PlaceHolder」コントロールを配置します。
<asp:PlaceHolder runat="server" id="CtrlCanvas" />
次に、コード ビハインドで、コントロールを動的に作成します。
Label aLbl = new Label {Text = "Prompt: ", ID = ("WSLabel" + counter++)};
CtrlCanvas.Controls.Add(aLbl);
これはラベルでした。ここに TextBox があります。
TextBox aBox = new TextBox {ID = "XTest1", Columns = 5, Text = " ", Width = 50};
CtrlCanvas.Controls.Add(aBox);
aBox.Focus();
ラジオボックスのリストは次のとおりです。
RadioButtonList WRRadio = new RadioButtonList { ID = "XTestRadioList1" };
WRRadio.Items.Add("Walking ");
WRRadio.Items.Add("Running");
WRRadio.SelectedIndex = WalkRun;
WRRadio.RepeatColumns = 2;
CtrlCanvas.Controls.Add(WRRadio);
コントロールの作成はこれですべてです。値を取得するには、ASP.NET がコントロールに付けるプレフィックスを識別できる命名規則が必要です。「XTest」を使用しています。以下に例を示します。
foreach (string aStr in Form.AllKeys)
{
int position = aStr.IndexOf("XTest"); // XTest is used in my controls
if (position > 0)
{
// Get the *prefix* added by ASP.NET
CtlPrefix = aStr.Substring(0, position);
break;
}
}
特定のコントロールに格納されている値を取得するのは簡単です。
string result = Form.Get(CtlPrefix + "XTest1")
ラジオ ボックスの場合、少なくとも、Get は選択されたインデックスを返します。0 または 1 をチェックできるように、各チェック ボックスに個別に名前を付けると思います。
お役に立てれば!