在asp.net应用程序中动态使用单选按钮

时间:2014-10-31 10:50:27

标签: c# asp.net

我正在开发一个asp.net应用程序。

当用户点击页面时,会动态地将一些单选按钮添加到页面中。

然后当他点击另一个"更新"按钮,我会检查,检查哪个单选按钮并将它们发回服务器。

问题如下:

我在page_load方法中动态添加单选按钮。

但是当我使用更新按钮onclick方法时,我无法使用它们来检查它们是否被检查。

我尝试了几种方法,例如使用radiobuttons的静态字典,但是当我使用更新方法时,我无法对它们进行引用。

这是我加载页面时的方法:

private static Dictionary<string,RadioButton> buttons;

protected void Page_Load(object sender, EventArgs e)
{
    for (int i=0;i<5;i++)
    {
        RadioButton r = new RadioButton();
        r.Text = i.ToString();
        r.ID = i.ToString();;
        Panel1.Controls.Add(r);
        buttons.Add(i.ToString(), r);
    }
}

这是我的方法,当用户点击更新按钮,我想根据他们的ID或文本访问我的每个radiobutton,但我不能: 例如,如果我想要检查1到3的所有按钮:

protected void Button1_Click(object sender, EventArgs e)
{
    for (int i=1;i<4;i++)
    {
        buttons[i].checked=true;
    }
}

1 个答案:

答案 0 :(得分:0)

Asp.net将在每次回发时清除动态添加的控件。如果你想获得他们的选择,你必须在客户端点击JS中的按钮。 C#代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            for (int i = 0; i < 5; i++)
            {
                RadioButton r = new RadioButton();
                r.Text = i.ToString();
                r.ID = i.ToString();
                r.ClientIDMode = System.Web.UI.ClientIDMode.Static;
                Panel1.Controls.Add(r);

            }
        }
    }

和JS代码:

<script type="text/javascript">
    function getCheckedRadios() {
        alert(document.getElementById('1').checked);
    }
</script>

按钮的aspx代码为:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="getCheckedRadios(); return false;"/>

我希望它会有所帮助。