我正在做一个有趣的“调查”表单,并试图通过使过程过于复杂来打破单调乏味的状态。我有一组单选按钮列表,我想从一个名称字符串和一个值字符串中动态创建它们。值不是问题。它创建了所有我都搞不懂的单选按钮列表。
例如,我可以继续这样做:
string[] level = {"Expert", "Proficient", "Limited Experience", "No Experience"};
this.rblCSharp.Items.Clear();
for (int i = 0; i < level.GetLength(0); i++) {
this.rblCSharp.Items.Add(level[i]);
}
this.rblCSharp.RepeatDirection = RepeatDirection.Horizontal;
this.rblVbNet.Items.Clear();
for (int i = 0; i < level.GetLength(0); i++)
{
this.rblVbNet.Items.Add(level[i]);
}
this.rblVbNet.RepeatDirection = RepeatDirection.Horizontal;...but我不想这么做。我想做更多这样的事情:
string[] level = {"Expert", "Proficient", "Limited Experience", "No Experience"};
string[] language = { "CSharp", "VbNet", "VbClassic", "Crystal", "Ssrs", "Sql2005", "UiWeb" };
for (int j = 0; j < language.GetLength(0); j++) {
this.rbl[j].Items.Clear();
for (int i = 0; i < level.GetLength(0); i++) {
this.rbl[j].Items.Add(level[i]);
}
this.rbl[j].RepeatDirection = RepeatDirection.Horizontal;
}发布于 2009-09-16 16:19:32
您需要一种方法来引用与语言对应的RadioButtonList控件。您有一个字符串数组,所以一种方法是使用FindControl,但这不是我的首选。
另一种方法是:
var languageControls = new List<RadioButtonList> { rblCSharp, rblVbNet, rblVbClassic, rblCrystal, rblSsrs, rblSql2005, rblUiWeb };
foreach(var rbl in languageControls)
{
rbl.Items.Clear();
// this could be a foreach instead, but I kept your original code
for (int i = 0; i < level.GetLength(0); i++)
{
rbl.Items.Add(level[i]);
}
rbl.RepeatDirection = RepeatDirection.Horizontal;
}FindControl方法(这只有在动态创建和添加RadioButtonList控件时才有意义,而不是在标记中和通过IntelliSense可用)
string[] level = {"Expert", "Proficient", "Limited Experience", "No Experience"};
string[] language = { "CSharp", "VbNet", "VbClassic", "Crystal", "Ssrs", "Sql2005", "UiWeb" };
foreach (string lang in language)
{
RadioButtonList rbl = (RadioButtonList)FindControl("rbl" + lang);
if (rbl == null)
continue; // keep going through the rest, or throw exception
rbl.Items.Clear();
// this could be a foreach instead, but I kept your original code
for (int i = 0; i < level.GetLength(0); i++)
{
rbl.Items.Add(level[i]);
}
rbl.RepeatDirection = RepeatDirection.Horizontal;
}https://stackoverflow.com/questions/1433943
复制相似问题