我有一个应用程序,我需要在其中动态创建各种不同的控件。它适用于多个复选框(或其他任何东西)。
首先,在您的 ASPX 页面上,放置“PlaceHolder”控件:
<asp:PlaceHolder runat="server" id="CtrlCanvas" />
现在,在您的代码中,动态创建您的控件:
Label aLbl = new Label {Text = "Prompt: ", ID = ("WSLabel" + counter++)};
CtrlCanvas.Controls.Add(aLbl);
那是一个标签,这是一个文本框:
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。
希望这可以帮助!