2012-01-04 2 views
0

Я пытаюсь сделать 2 викторину в asp.net. выбор mcq r, отображаемый с помощью переключателей. в коде позади, когда я попробую 2 проверить, проверен ли радиообзор, d код под этим оператором if не выполняется. Код ASPX:, когда я пытаюсь проверить, установлен ли переключатель, код не выполняет

<ItemTemplate> 
      <asp:Literal ID="Literal1" runat="server" Text='<%#Eval("ques") %>'></asp:Literal><br /> 
      <asp:RadioButton GroupName="a" ID="RadioButton1" Text='<%#Eval("ch1") %>' runat="server" /><br /> 
      <asp:RadioButton GroupName="a" ID="RadioButton2" Text='<%#Eval("ch2") %>' runat="server" /><br /> 
      <asp:RadioButton GroupName="a" ID="RadioButton3" Text='<%#Eval("ch3") %>' runat="server" /><br /> 
      <asp:RadioButton GroupName="a" ID="RadioButton4" Text='<%#Eval("ch4") %>' runat="server" /><br /> 

      <asp:Label ID="Label1" runat="server" Text='<%#Eval("ans") %>' Visible="false"></asp:Label><br /> 
      <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label><br /> 
     </ItemTemplate> 

код позади:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     int count = 0; 

     foreach(RepeaterItem Items in Repeater1.Items) 
     { 

      RadioButton r1 = (RadioButton)Items.FindControl("RadioButton1"); 
      RadioButton r2 = (RadioButton)Items.FindControl("RadioButton2"); 
      RadioButton r3 = (RadioButton)Items.FindControl("RadioButton3"); 
      RadioButton r4 = (RadioButton)Items.FindControl("RadioButton4"); 
      Label l3 = (Label)Items.FindControl("Label3"); 

      Label l=(Label)Items.FindControl("Label1"); 
      l3.Text = "hello?"; 
      if (r1.Checked) 
      { 
       if(r1.Text==l.Text) 
        count++; 
      } 
      else 
      { 
       if (r2.Checked) 
       { 
        if(r2.Text==l.Text) 
         count++; 
       } 
      } 
       // and so on for all 4 options 
     } 
     Label2.Visible = true; 
     Label2.Text = "your score is " + count;  //always zero! 

    } 

ответ

1

Если вы ступая через отладчик, и ваша линия

if(r1.Text==l.Text) 
    count++; 

не выполняется, то я бы предположил, что линия if (r1.Checked) оценивает ложь.

На вашем Page_Load() методе для этой страницы есть ли какие-либо привязки к данным или манипуляции с этими переключателями? Если это так, если вы не завернете их в if(!Page.IsPostBack){ ... } условном, тогда он уничтожит все, что пользователь сделал с помощью переключателя, следовательно r1.Checked будет false.

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

0

Вам нужно сделать следующее:

  1. Установите AutoPostBack на кнопки управления радио, чтобы верно ,
  2. Установите OnItemCommand на повторителе к «Button1_Click»
  3. Изменения подписи методы Button1_Click в protected void Button1_Click(object sender, RepeaterCommandEventArgs e)

Это будет по крайней мере, вызвать метод в коде позади.

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