我正在开发一个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;
}
}
答案 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;"/>
我希望它会有所帮助。