【问题标题】:Accessing value of dynamically created controls c# asp.net访问动态创建的控件的值 c# asp.net
【发布时间】:2010-12-02 00:54:20
【问题描述】:

我正在尝试访问选定单选按钮的值。我有一个由子标题分隔的单选按钮列表(因此我没有使用 radioList)

我不知道如何访问选定的值,因为我不确定它的动态名称是什么。

以下代码位于 for 循环中并输出单选选项。所有选项均用于一个所需的用户选择。

//add list to radio button list
RadioButton button1 = new RadioButton { 
GroupName = "myGroup", 
Text = singleType.appTypeName, 
ID = singleType.appTypeID.ToString() 
};
radioArea.Controls.Add(button1);
myLabel = new Label();
myLabel.Text = "<br />";
radioArea.Controls.Add(myLabel);

这就是我尝试访问它的方式:

RadioButton myButton = (RadioButton) radioArea.FindControl("myGroup");

我意识到这应该很简单,但我仍然非常喜欢 PHP,感谢任何帮助。

谢谢

【问题讨论】:

    标签: c# asp.net controls dynamic


    【解决方案1】:

    您好,听起来您对单选按钮控件的各种属性的作用以及如何正确生成单选按钮有点困惑。

    ID 属性是这里的关键。

    您应该将 ID 属性设置为一个唯一的字符串,然后您可以使用该字符串在回发时访问该控件。

    GroupName 只是单选按钮的标准名称属性的别名,因此当用户单击组中的单选按钮时,只能选择一个单选按钮。

    例如:

    //add list to radio button list
    RadioButton radioButton = new RadioButton();
    radioButton.GroupName = "radioGroup";
    radioButton.Text = singleType.appTypeID.ToString();
    radioButton.ID = singleType.appTypeName;
    
    radioArea.Controls.Add(radioButton);
    
    Label label = new Label();
    label.Text = "<br />";
    radioArea.Controls.Add(label);
    

    在上面的示例中,我指定了 singleType.appTypeName 作为 ID,假设它是唯一的。

    然后在回发时检索值,假设 singleType.appTypeName = "mySuperApp":

    RadioButton radioButton = (RadioButton) radioArea.FindControl("mySuperApp");
    

    现在您可以访问 radioButton 变量来检查它有哪个 GroupName,获取它的值并检查它是否被选中。

    您将需要遍历单选按钮以找出选中的单选按钮。一种简单的方法是遍历 radioArea 的子控件并检查 eack 控件以查看它是否是单选按钮以及是否已选中。另一种选择是给每个 ID 一个前缀,即 ID="RAD_"+singleType.appTypeName 并遍历 Request 对象并将每个 ID 与正确的后缀匹配。

    【讨论】:

    • 'System.Web.UI.WebControls.RadioButton' 不包含 'Value' 的定义
    • 确定如果同一组的所有部分我都可以检索检查的值,而不必遍历大量无线电控件?
    • 恐怕不行。 GroupName 属性只是单选按钮上普通名称属性的别名。做你想做的唯一方法是使用 RadioButtonList 控件。否则,这只是通过控件循环查找选中的控件的情况。
    • ok 并没有真正解决我的问题,所以我回到了一个下拉菜单并使用 jquery 对其进行了主题化。 +1 并回答都一样:)
    【解决方案2】:

    您使用的FindControl 方法希望您将ID 传递给它,该ID 在您创建它时分配给控制。

    因此,对于您的示例,RadioButton.ID 应该等于 singleType.appTypeID.ToString()

    希望这会有所帮助。

    【讨论】:

    • 当我查看生成的代码的源代码时,singleType.appTypeID.ToString() 是每个选项的值而不是 ID。有什么想法吗?
    • 您的代码将单选按钮的 ID 分配为 singleType.appTypeID.ToString()。您需要在 FindControl() 调用中搜索该确切 ID。
    • @SocialAddict 当您查看以 HTML 呈现的 RadioButtons 时,ID 设置为什么?
    • 页面上的所有单选按钮都是一个选择。所以我只需要选择的值。如果所有用户控件都有不同的 ID,我该如何从组 myGroup 中返回一个?
    • @rocka
    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多