0

更新パネルで 5 つのラジオボタンを使用していますが、最初にラジオボタンをチェックしたときに、チェックが変更されません。その後、2回目のチェックは正常に機能していることを意味するので、何が問題なのか教えてください。ここに私のコードがあります

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
       <asp:RadioButton ID="rbtn_A" runat="server" GroupName="rbt" 
            AutoPostBack="true" OnCheckedChanged="rbtn_A_CheckedChanged" />
       <asp:RadioButton ID="rbtn_B" runat="server" GroupName="rbt" AutoPostBack="true"
            OnCheckedChanged="rbtn_B_CheckedChanged" />
       <asp:RadioButton ID="rbtn_C" runat="server" GroupName="rbt" AutoPostBack="true" 
            OnCheckedChanged="rbtn_C_CheckedChanged" />
       <asp:RadioButton ID="rbtn_D" runat="server" GroupName="rbt" AutoPostBack="true" 
            OnCheckedChanged="rbtn_D_CheckedChanged" />
   </ContentTemplate>

ここに私の最初のラジオ ボタンがあります。

        foreach (GridViewRow gv in dl_ques.Rows)
        {
            Label lblTest = (Label)gv.FindControl("lbltest");
            Label lbl = (Label)gv.FindControl("lbl_qno");
            RadioButton rbtn_A = (RadioButton)gv.FindControl("rbtn_A");
            DataSet ds = new DataSet();
            ds = getAnswer();
            SqlCommand cmd1 = DataManager.getCommandSp("spGetIBPSTestQues");
            cmd1.Parameters.AddWithValue("@Test_id", Convert.ToInt32(lblTest.Text));
            DataSet dsorg = DataManager.getDataSet(cmd1);
            if (ds.Tables[0].Rows.Count > 0)
            {
                SqlCommand cmd = new SqlCommand();
                cmd = DataManager.getCommandSp("SpUpdateIBPSTestSolved");
                cmd.Parameters.AddWithValue("@user_id", Convert.ToInt32(ht["UId"]));

                cmd.Parameters.AddWithValue("@Ans", "A");
                foreach (DataRow dr in dsorg.Tables[0].Rows)
                {
                    if (Convert.ToInt32(lbl.Text) == Convert.ToInt32(dr["actual_que"]))
                    {
                        if (dr["actual_ans"].ToString() == "A")
                        {
                            cmd.Parameters.AddWithValue("@Ans_correct", "Yes");
                        }
                        else
                        {
                            cmd.Parameters.AddWithValue("@Ans_correct", "No");
                        }
                    }
                }
                cmd.Parameters.AddWithValue("@test_id", Convert.ToInt32(lblTest.Text));
                cmd.Parameters.AddWithValue("@Test_dt", DateTime.Now);
                cmd.Parameters.AddWithValue("@Ques_id", lbl.Text);
                cmd.Parameters.AddWithValue("@LastTimeMin", timehdnmin.Value);
                cmd.Parameters.AddWithValue("@LastTimeSec", timehdnsec.Value);

                DataManager.WriteToDb(cmd);

            }
            else
            {
                SqlCommand cmd = new SqlCommand();
                cmd = DataManager.getCommandSp("SpInsertIBPSTestSolved");
                cmd.Parameters.AddWithValue("@user_id", Convert.ToInt32(ht["UId"]));

                cmd.Parameters.AddWithValue("@Ans", "A");
                foreach (DataRow dr in dsorg.Tables[0].Rows)
                {
                    if (Convert.ToInt32(lbl.Text) == Convert.ToInt32(dr["actual_que"]))
                    {
                        if (dr["actual_ans"].ToString() == "A")
                        {
                            cmd.Parameters.AddWithValue("@Ans_correct", "Yes");
                        }
                        else
                        {
                            cmd.Parameters.AddWithValue("@Ans_correct", "No");
                        }
                    }
                }

                cmd.Parameters.AddWithValue("@test_id", Convert.ToInt32(lblTest.Text));
                cmd.Parameters.AddWithValue("@Test_dt", DateTime.Now);
                cmd.Parameters.AddWithValue("@Ques_id", lbl.Text);
                cmd.Parameters.AddWithValue("@LastTimeMin", timehdnmin.Value);
                cmd.Parameters.AddWithValue("@LastTimeSec", timehdnsec.Value);

                DataManager.WriteToDb(cmd);
            }
        }
    }
4

3 に答える 3

1

checkedデフォルトでは、ページの読み込み時にラジオ ボタンの 1 つを true にする必要があります

<asp:RadioButton ID="rbtn_A" runat="server" AutoPostBack="True" GroupName="rbt"
OnCheckedChanged="rbtn_A_CheckedChanged" Checked="True" />

あなたが言ったことに基づいて、これで試してください

if(!Page.IsPostback)
{
  rbtn_A.Checked = true;
}
于 2013-02-25T06:20:51.320 に答える
0

すべてのラジオボタンをに設定しChecked=False;てください

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
 <ContentTemplate>
   <asp:RadioButton ID="rbtn_A" runat="server" GroupName="rbt" 
        AutoPostBack="true" OnCheckedChanged="rbtn_A_CheckedChanged" Checked="False" />
   <asp:RadioButton ID="rbtn_B" runat="server" GroupName="rbt" AutoPostBack="true"
        OnCheckedChanged="rbtn_B_CheckedChanged" Checked="False"/>
   <asp:RadioButton ID="rbtn_C" runat="server" GroupName="rbt" AutoPostBack="true" 
        OnCheckedChanged="rbtn_C_CheckedChanged" Checked="False"/>
   <asp:RadioButton ID="rbtn_D" runat="server" GroupName="rbt" AutoPostBack="true" 
        OnCheckedChanged="rbtn_D_CheckedChanged" Checked="False"/>
 </ContentTemplate>
于 2013-02-25T12:06:27.237 に答える