首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态创建的动态RadioButtonsList

动态创建的动态RadioButtonsList
EN

Stack Overflow用户
提问于 2009-09-16 16:08:43
回答 1查看 3.5K关注 0票数 2

我正在做一个有趣的“调查”表单,并试图通过使过程过于复杂来打破单调乏味的状态。我有一组单选按钮列表,我想从一个名称字符串和一个值字符串中动态创建它们。值不是问题。它创建了所有我都搞不懂的单选按钮列表。

例如,我可以继续这样做:

代码语言:javascript
复制
    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我不想这么做。我想做更多这样的事情:

代码语言:javascript
复制
    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;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-16 16:19:32

您需要一种方法来引用与语言对应的RadioButtonList控件。您有一个字符串数组,所以一种方法是使用FindControl,但这不是我的首选。

另一种方法是:

代码语言:javascript
复制
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可用)

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1433943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档