2014-10-31 3 views
0

Я разрабатываю приложение asp.net.динамически использовать радиокнопки в приложениях asp.net

Когда пользователь нажимает на страницу, некоторые переключатели динамически добавляются на страницу.

Затем, когда он нажимает на другую кнопку «Обновить», я должен был бы проверить, какие из переключателей отмечены, и отправить их обратно на сервер.

Проблема заключается в следующем:

добавить динамически радиокнопок в методе page_load.

Но когда я нахожусь на кнопке onclick кнопки обновления, я не могу использовать их, чтобы проверить, не проверены ли они.

Я пробовал несколько методов, таких как использование статического словаря для радиообмена, но я не могу хранить ссылку на них, когда я нахожусь на моем методе обновления.

Это мой метод, когда страница загрузки:

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); 
    } 
} 

И это мой метод, когда пользователь нажимает на кнопку обновления, где я хотел бы получить доступ к каждому из моих радиокнопки в зависимости их идентификатору или их текст, но я не могу: Например, если я хочу, чтобы все кнопки от 1 до 3, чтобы проверить:

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

Не используйте статический словарь, поскольку веб-приложение предназначено для одновременного использования несколькими пользователями. Если вы хотите вернуть свои кнопки после обратной передачи, вам необходимо выполнить контрольную коллекцию панели Panel1.Controls. –

+0

ok, но с этим я получаю только элемент управления, у меня нет доступа к свойству «checked». Кроме того, какой метод мне нужно заключить в (! If postback), page_load или также в button1_click? – user2443476

ответ

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;"/> 

Я надеюсь, что это поможет.

Смежные вопросы