2012-01-04 49 views
0

我正在嘗試2在asp.net中進行測驗。 使用單選按鈕顯示mcq選項。在後面的代碼中,當我嘗試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)被評估爲false。

對於此頁面的Page_Load()方法,是否有任何數據綁定或對這些單選按鈕的操作?如果是這樣,除非你將它們包裝在if(!Page.IsPostBack){ ... }條件下,否則它將消除用戶對單選按鈕的任何操作,因此r1.Checked將爲false

我希望這可以幫助:)祝你好運。

0

你需要做到以下幾點:

  1. 設置單選按鈕控制的AutoPostBack爲真。
  2. 中繼器上控制「的button1_Click」
  3. 變化Button1_Click的方法來protected void Button1_Click(object sender, RepeaterCommandEventArgs e)

簽名至少會觸發該方法在後面的代碼設置OnItemCommand

相關問題