Thursday, 8 May 2014

online exam code behind

No comments
To check if radiobutton option selected or not and storing that value in database



   RadioButton rdo;
   string u_ans = "";
 public void store_choice()
    {
        try
        {
            Label llb = (Label)DetailsView1.FindControl("lblq");
            DetailsView f1 = (DetailsView)DetailsView1.FindControl("DetailsView2");
            if (((RadioButton)f1.FindControl("RadioButton1")).Checked == true)
            {
                rdo = (RadioButton)f1.FindControl("RadioButton1");
                u_ans = rdo.Text;
            }
            else if (((RadioButton)f1.FindControl("RadioButton2")).Checked == true)
            {
                rdo = (RadioButton)f1.FindControl("RadioButton2");
                u_ans = rdo.Text;
            }
            else if (((RadioButton)f1.FindControl("RadioButton3")).Checked == true)
            {
                rdo = (RadioButton)f1.FindControl("RadioButton3");
                u_ans = rdo.Text;
            }
            else if (((RadioButton)f1.FindControl("RadioButton4")).Checked == true)
            {
                rdo = (RadioButton)f1.FindControl("RadioButton4");
                u_ans = rdo.Text;
            }
            else
            {
                u_ans = "Not Attempt";
            }

            dl.question_no = Convert.ToInt16(llb.Text);
            dl.exam_id = Convert.ToInt16(lblid.Text);
            dl.stu_id = Convert.ToInt16(Session["Stu_id"]);
            dl.answer = u_ans;
            bl.stu_exams(dl);
        }
        catch (Exception)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(),
                     "ServerControlScript", "alert('Login First')", true);

        }

    }





keep radio button selected when page changes in detailsview


    protected void setQ()
    {
        Label llb = (Label)DetailsView1.FindControl("lblq");
        DetailsView f1 = (DetailsView)DetailsView1.FindControl("DetailsView2");
        RadioButton rd1 = (RadioButton)f1.FindControl("RadioButton1");
        RadioButton rd2 = (RadioButton)f1.FindControl("RadioButton2");
        RadioButton rd3 = (RadioButton)f1.FindControl("RadioButton3");
        RadioButton rd4 = (RadioButton)f1.FindControl("RadioButton4");
        dl.question_no = Convert.ToInt16(llb.Text);
        dl.stu_id = Convert.ToInt16(Session["Stu_id"]);
        string tmp = "";


        con.Open();
        cmd = new SqlCommand("user_ans", con);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@Question_no", dl.question_no);
        cmd.Parameters.AddWithValue("@Stu_id", dl.stu_id);
        SqlDataReader dr = cmd.ExecuteReader();
        // dr = bl.user_ans(dl);
        while (dr.Read())
        {
            tmp = dr[0].ToString();
        }
        dr.Close();
        if (tmp != "")
            ViewState["answer"] = tmp;

        if (rd1.Text == tmp)
        {
            rd1.Checked = true;
        }
        else if (rd2.Text == tmp)
        {
            rd2.Checked = true;
        }
        else if (rd3.Text == tmp)
        {
            rd3.Checked = true;
        }
        else if (rd4.Text == tmp)
        {
            rd4.Checked = true;
        }
        else { }
    }



bind detailsview within another detailsview


 public void bind_detailsview_within_detailsview()
    {
        for (int i = 0; i < DetailsView1.Rows.Count; i++)
        {
            Label l1 = (Label)DetailsView1.Rows[i].FindControl("lblq");
            DetailsView f1 = (DetailsView)DetailsView1.Rows[i].FindControl("DetailsView2");
            dl.question_no = Convert.ToInt16(l1.Text);
            f1.DataSource = bl.select_choice_stu(dl);
            f1.DataBind();
        }

    }



move to previous question in detailsview


    protected void btnprev_Click(object sender, EventArgs e)
    {
        store_choice();
        DetailsView1.PageIndex = DetailsView1.DataItemIndex - 1;
        ViewState["count"] = int.Parse(ViewState["count"].ToString()) - 1;
        bind_form();
        bind_form_choice();
        setQ();
    }


move to next question in detailsview
    protected void btnnext_Click(object sender, EventArgs e)
    {
        ViewState["count"] = int.Parse(ViewState["count"].ToString()) + 1;
        int itm = int.Parse(ViewState["count"].ToString());
        store_choice();
        bind_form();
        bind_form_choice();
        setQ();
        DetailsView1.PageIndex = DetailsView1.DataItemIndex + 1;
        //   Button btnNext = (Button)DetailsView1.FooterRow.FindControl("tnnext");
    }


ASPX to bind detailsview


<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
                        BorderStyle="Dashed" BorderWidth="2px" CellPadding="8" CellSpacing="8"
                        GridLines="None" Height="100%"
                        onpageindexchanging="DetailsView1_PageIndexChanging" style="margin-left:50px"
                        Width="70%">
                        <Fields>
                            <asp:BoundField DataField="Question_id" HeaderText="ID" Visible="False" />
                            <asp:TemplateField HeaderText="Question no">                              
                                <ItemTemplate>
                                    <asp:Label ID="Label3" runat="server" Text='<%# Bind("Question_no") %>'
                                        Visible="False"></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField>                              
                                <ItemTemplate>
                                    <br />
                                    <asp:Label ID="Label2" runat="server" Text='<%# Bind("Question_text") %>'></asp:Label>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField>                              
                                <ItemTemplate>
                                    <asp:DetailsView ID="DetailsView2" runat="server" AutoGenerateRows="False"
                                        GridLines="None" Height="100%" Width="100%">
                                        <Fields>
                                            <asp:TemplateField>                                              
                                                <ItemTemplate>
                                                    <br />
                                                    <asp:RadioButton ID="RadioButton1" runat="server"
                                                        GroupName='<%#Bind("Question_no") %>' Text='<%#Bind("Choice_1") %>' />
                                                    <asp:RadioButton ID="RadioButton2" runat="server" CssClass="qno"
                                                        GroupName='<%#Bind("Question_no") %>' Text='<%#Bind("Choice_2") %>' />
                                                    <br />
                                                    <br />
                                                    <br />
                                                    <asp:RadioButton ID="RadioButton3" runat="server"
                                                        GroupName='<%#Bind("Question_no") %>' Text='<%#Bind("Choice_3") %>' />
                                                    <asp:RadioButton ID="RadioButton4" runat="server" CssClass="qno"
                                                        GroupName='<%#Bind("Question_no") %>' Text='<%#Bind("Choice_4") %>' />
                                                </ItemTemplate>
                                            </asp:TemplateField>
                                        </Fields>
                                    </asp:DetailsView>
                                </ItemTemplate>
                            </asp:TemplateField>
                            <asp:TemplateField>                           
                                <HeaderTemplate>
                                    <br />
                                    <br />
                                    <br />
                                    <asp:Button ID="btnprev" runat="server" CssClass="padd" Height="28px"
                                        onclick="btnprev_Click" style="background-color:rgb(9, 16, 198);color:White"
                                        Text="Prev" Width="70px" />
                                </HeaderTemplate>                            
                                <ItemTemplate>
                                    <br />
                                    <br />
                                    <br />
                                    <asp:Button ID="tnnext" runat="server" CssClass="chkbtn" Height="28px"
                                        onclick="tnnext_Click" style="background-color:rgb(9, 16, 198);color:White"
                                        Text="Next" Width="70px" />
                                </ItemTemplate>
                            </asp:TemplateField>
                        </Fields>
                    </asp:DetailsView>