//--click event handler for exam details--->


        private DataSet populate_score()
        {


            string UserId = class_Application.user_id;
            DataSet rpt_dataset = new rpt_student_result();
            DataSet dataset = new DataSet();
            string  s = "SELECT User_Exam_Dtl.User_ID, User_Exam_Dtl.Exam_code, User_Exam_Dtl.Test_code, User_Exam_Dtl.Sub_code," +
                    "User_Exam_Dtl.user_name, Exam_Master.Exam_Name, Test_Master.Test_Name, Subject_Master.Sub_Name, User_Exam_Dtl.Q_No," +
                    "User_Exam_Dtl.Option1, User_Exam_Dtl.Option2, User_Exam_Dtl.Option3, User_Exam_Dtl.Option4, User_Exam_Dtl.Option5," +
                    "User_Exam_Dtl.Correct_Option, User_Exam_Dtl.Is_Attempted FROM ((User_Exam_Dtl INNER JOIN Exam_Master ON" +
                    " User_Exam_Dtl.Exam_code = Exam_Master.Exam_Code) INNER JOIN Test_Master ON (Test_Master.Test_code = User_Exam_Dtl.Test_code)" +
                    " AND (Test_Master.Exam_code = User_Exam_Dtl.Exam_code) AND (Exam_Master.Exam_Code = Test_Master.Exam_code)) INNER JOIN Subject_Master" +
                    " ON (Subject_Master.Exam_code = User_Exam_Dtl.Exam_code) AND (Subject_Master.Sub_code = User_Exam_Dtl.Sub_code) AND" +
                    " (Exam_Master.Exam_Code = Subject_Master.Exam_code) WHERE User_Exam_Dtl.User_ID IN('" + UserId + "');";
            dataset = ob.fill_data_set(s);

            if (dataset.Tables.Count > 0)
            {
                dataset.Tables[0].Columns.Add("correct_ans", typeof(int));
                dataset.Tables[0].Columns.Add("wrong_ans", typeof(int));

                //--checking the corret and  the wrong answers per question-->
                foreach (DataRow dr in dataset.Tables[0].Rows)
                {
                    dr["correct_ans"] = 0;
                    dr["wrong_ans"] = 0;
                    string correct_option = Convert.ToString(dr["correct_option"]);
                    if (Convert.ToInt32(dr["option" + correct_option]) == 1 && Convert.ToInt32(dr["Is_Attempted"]) == 1)
                    {
                        dr["correct_ans"] = 1;
                        dr["wrong_ans"] = 0;
                    }
                    else if (Convert.ToInt32(dr["option" + correct_option]) == 0 && Convert.ToInt32(dr["Is_Attempted"]) == 1)
                    {
                        dr["correct_ans"] = 0;
                        dr["wrong_ans"] = 1;
                    }
                }


                var query = from p in dataset.Tables[0].AsEnumerable()
                            group p by new
                            {
                                user_id = p.Field<string>(0),
                                exam_no = p.Field<string>(1),
                                test_no = p.Field<string>(2),
                                user_name = p.Field<string>(4),
                                exam_name = p.Field<string>(5),
                                test_name = p.Field<string>(6)
                            } into grp
                            select new
                            {
                                no_of_ques = grp.Count(),
                                user_id = grp.Key.user_id,
                                exam_no = grp.Key.exam_no,
                                test_no = grp.Key.test_no,
                                user_name = grp.Key.user_name,
                                exam_name = grp.Key.exam_name,
                                test_name = grp.Key.test_name,
                                sum_correct_option = grp.Sum(r => r.Field<int>("correct_ans")),
                                sum_wrong_option = grp.Sum(r => r.Field<int>("wrong_ans"))
                            };


                DataRow rpt_row;
                foreach (var grp in query)
                {
                    rpt_row = rpt_dataset.Tables["dt_student_result"].NewRow();
                    rpt_row["no_of_ques"] = grp.no_of_ques;
                    rpt_row["user_id"] = grp.user_id;
                    rpt_row["user_name"] = grp.user_name;
                    rpt_row["exam_no"] = grp.exam_no;
                    rpt_row["test_no"] = grp.test_no;
                    rpt_row["test_name"] = grp.test_name;
                    rpt_row["exam_name"] = grp.exam_name;
                    rpt_row["sum_correct_ans"] = grp.sum_correct_option;
                    rpt_row["sum_wrong_ans"] = grp.sum_wrong_option;
                    rpt_dataset.Tables["dt_student_result"].Rows.Add(rpt_row);
                }

                var query2 = from p in dataset.Tables[0].AsEnumerable()
                             group p by new
                             {
                                 user_id = p.Field<string>(0),
                                 exam_no = p.Field<string>(1),
                                 test_no = p.Field<string>(2),
                                 sub_no = p.Field<string>(3),
                                 user_name = p.Field<string>(4),
                                 exam_name = p.Field<string>(5),
                                 test_name = p.Field<string>(6),
                                 sub_name = p.Field<string>(7)

                             } into grp
                             select new
                             {
                                 no_of_ques = grp.Count(),
                                 user_id = grp.Key.user_id,
                                 exam_no = grp.Key.exam_no,
                                 test_no = grp.Key.test_no,
                                 sub_no = grp.Key.sub_no,
                                 user_name = grp.Key.user_name,
                                 exam_name = grp.Key.exam_name,
                                 test_name = grp.Key.test_name,
                                 sub_name = grp.Key.sub_name,
                                 sum_correct_option = grp.Sum(r => r.Field<int>("correct_ans")),
                                 sum_wrong_option = grp.Sum(r => r.Field<int>("wrong_ans"))
                             };


                DataRow rpt_row2;
                foreach (var grp in query2)
                {
                    rpt_row2 = rpt_dataset.Tables["dt_student_result_details"].NewRow();
                    rpt_row2["no_of_ques"] = grp.no_of_ques;
                    rpt_row2["user_id"] = grp.user_id;
                    rpt_row2["user_name"] = grp.user_name;
                    rpt_row2["exam_no"] = grp.exam_no;
                    rpt_row2["test_no"] = grp.test_no;
                    rpt_row2["sub_no"] = grp.sub_no;
                    rpt_row2["test_name"] = grp.test_name;
                    rpt_row2["exam_name"] = grp.exam_name;
                    rpt_row2["sub_name"] = grp.sub_name;
                    rpt_row2["sum_correct_ans"] = grp.sum_correct_option;
                    rpt_row2["sum_wrong_ans"] = grp.sum_wrong_option;
                    rpt_dataset.Tables["dt_student_result_details"].Rows.Add(rpt_row2);
                }
            }
            return rpt_dataset;
        }
        private DataSet populate_score()
        {


            string UserId = class_Application.user_id;
            DataSet rpt_dataset = new rpt_student_result();
            DataSet dataset = new DataSet();
                       




       string s = "SELECT User_Exam_Dtl.User_ID, User_Exam_Dtl.Exam_code, User_Exam_Dtl.Test_code, User_Exam_Dtl.Sub_code, User_Exam_Dtl.User_name, "+
             "Exam_Master.Exam_Name, Test_Master.Test_Name, Subject_Master.Sub_Name, User_Exam_Dtl.Q_No, User_Exam_Dtl.Option1, User_Exam_Dtl.Option2, "+
             "User_Exam_Dtl.Option3, User_Exam_Dtl.Option4, User_Exam_Dtl.Option5, Questions_Master.Correct_Option, option1+option2+option3+option4+"+
             "option5+option6+option7+option8+option9+option10+option11+option12+option13+option14+option15+option16+option17+option18 AS Is_Attempted, "+
             "User_Exam_Dtl.Option6, User_Exam_Dtl.Option7, User_Exam_Dtl.Option8, User_Exam_Dtl.Option9, User_Exam_Dtl.Option10, User_Exam_Dtl.Option11, "+
             "User_Exam_Dtl.Option12, User_Exam_Dtl.Option13, User_Exam_Dtl.Option14, User_Exam_Dtl.Option15, User_Exam_Dtl.Option16, "+
             "User_Exam_Dtl.Option17, User_Exam_Dtl.Option18, User_Exam_Dtl.Essay_Answer, Questions_Master.Q_type, Exam_Master.Negetive_marking, "+
             "Group_Master.Group_Name, Group_Master.Group_Code FROM Questions_Master INNER JOIN (Group_Master INNER JOIN (((User_Exam_Dtl INNER JOIN "+
             "Exam_Master ON User_Exam_Dtl.Exam_code = Exam_Master.Exam_Code) INNER JOIN Test_Master ON (Exam_Master.Exam_Code = Test_Master.Exam_code) AND "+
             "(User_Exam_Dtl.Exam_code = Test_Master.Exam_code) AND (User_Exam_Dtl.Test_code = Test_Master.Test_code)) INNER JOIN Subject_Master ON "+
             "(Exam_Master.Exam_Code = Subject_Master.Exam_code) AND (User_Exam_Dtl.Sub_code = Subject_Master.Sub_code) AND (User_Exam_Dtl.Exam_code = "+
             "Subject_Master.Exam_code)) ON Group_Master.Group_Code = Subject_Master.sub_group) ON (Exam_Master.Exam_Code = Questions_Master.Exam_code) AND "+
             "(Test_Master.Test_code = Questions_Master.Test_code) AND (Test_Master.Exam_code = Questions_Master.Exam_code) AND "+
             "(Subject_Master.Exam_code = Questions_Master.Exam_code) AND (Subject_Master.Sub_code = Questions_Master.Sub_code) AND "+
             "(Questions_Master.Q_No = User_Exam_Dtl.Q_No) AND (Questions_Master.Test_code = User_Exam_Dtl.Test_code) AND (Questions_Master.Sub_code = "+
             "User_Exam_Dtl.Sub_code) AND (Questions_Master.Exam_code = User_Exam_Dtl.Exam_code) WHERE (((User_Exam_Dtl.User_ID) In ('"+ UserId +"')));";


            dataset = ob.fill_data_set(s);

            if (dataset.Tables.Count > 0)
            {
                dataset.Tables[0].Columns.Add("correct_ans", typeof(int));
                dataset.Tables[0].Columns.Add("wrong_ans", typeof(int));

                //--checking the corret and  the wrong answers per question-->
                foreach (DataRow dr in dataset.Tables[0].Rows)
                {

                    dr["correct_ans"] = 0;
                    dr["wrong_ans"] = 0;

                    int flag = 0;
                    if (Convert.ToInt32(dr["Q_type"]) == 1 || Convert.ToInt32(dr["Q_type"]) == 2 || 
                        Convert.ToInt32(dr["Q_type"]) == 4 || Convert.ToInt32(dr["Q_type"]) == 5)
                    {

                        ArrayList arr_list = new ArrayList();
                        for (int i = 1; i <= 18; i++)
                        {
                            if (Convert.ToInt32(dr["option" + i]) == 1)
                            {
                                arr_list.Add(Convert.ToString(i));
                            }
                        }
                        string[] ticked = (string[])arr_list.ToArray(typeof(string));
                        string[] new_array = Convert.ToString(dr["correct_option"]).Split(',');

                        if (ticked.Length == new_array.Length)
                        {
                            for (int i = 0; i < ticked.Length; i++)
                            {
                                if (ticked[i].Equals(new_array[i])) flag = 1;
                                else flag = 0; break;
                            }

                        }
                        else if(ticked.Length != new_array.Length)
                        {
                            flag = 0;
                        }
                    }
                    else if (Convert.ToInt32(dr["Q_type"]) == 3)
                    {
                        if (Convert.ToString(dr["correct_option"]).Equals(Convert.ToString(dr["Essay_Answer"]))) flag = 1;

                        else flag = 0;
                    }

                    if (flag == 1 && Convert.ToInt32(dr["Is_Attempted"]) >= 1)
                    {
                        dr["correct_ans"] = 1;
                        dr["wrong_ans"] = 0;
                    }
                    else if (flag == 0 && Convert.ToInt32(dr["Is_Attempted"]) >= 1)
                    {
                        dr["correct_ans"] = 0;
                        dr["wrong_ans"] = 1;
                    }
                }


                var query = from p in dataset.Tables[0].AsEnumerable()
                            group p by new
                            {
                                user_id = p.Field<string>(0),
                                exam_no = p.Field<string>(1),
                                test_no = p.Field<string>(2),
                                user_name = p.Field<string>(4),
                                exam_name = p.Field<string>(5),
                                test_name = p.Field<string>(6),
                                group_name=p.Field<string>(32),
                                group_code=p.Field<string>(33),
                                has_negetive_marking = p.Field<int>(31)
                            } into grp
                            select new
                            {
                                no_of_ques = grp.Count(),
                                user_id = grp.Key.user_id,
                                exam_no = grp.Key.exam_no,
                                test_no = grp.Key.test_no,
                                user_name = grp.Key.user_name,
                                exam_name = grp.Key.exam_name,
                                test_name = grp.Key.test_name,
                                has_negetive_marking = grp.Key.has_negetive_marking, 
                                group_name=grp.Key.group_name,
                                group_code=grp.Key.group_code,
                                sum_correct_option = grp.Sum(r => r.Field<int>("correct_ans")),
                                sum_wrong_option = grp.Sum(r => r.Field<int>("wrong_ans"))
                            };


                DataRow rpt_row;
                foreach (var grp in query)
                {
                    rpt_row = rpt_dataset.Tables["dt_student_result_summery"].NewRow();
                    rpt_row["no_of_ques"] = grp.no_of_ques;
                    rpt_row["user_id"] = grp.user_id;
                    rpt_row["user_name"] = grp.user_name;
                    rpt_row["exam_no"] = grp.exam_no;
                    rpt_row["test_no"] = grp.test_no;
                    rpt_row["test_name"] = grp.test_name;
                    rpt_row["exam_name"] = grp.exam_name;
                    rpt_row["sum_correct_ans"] = grp.sum_correct_option;
                    rpt_row["sum_wrong_ans"] = grp.sum_wrong_option;
                    rpt_row["has_negetive_marking"] = Convert.ToBoolean(grp.has_negetive_marking);
                    rpt_row["group_code"] = grp.group_code;
                    rpt_row["group_name"] = grp.group_name;
                    rpt_dataset.Tables["dt_student_result_summery"].Rows.Add(rpt_row);
                }

                var query2 = from p in dataset.Tables[0].AsEnumerable()
                             group p by new
                             {
                                 user_id = p.Field<string>(0),
                                 exam_no = p.Field<string>(1),
                                 test_no = p.Field<string>(2),
                                 sub_no = p.Field<string>(3),
                                 user_name = p.Field<string>(4),
                                 exam_name = p.Field<string>(5),
                                 test_name = p.Field<string>(6),
                                 sub_name = p.Field<string>(7),
                                  group_name=p.Field<string>(32),
                                group_code=p.Field<string>(33),
                                 has_negetive_marking = p.Field<int>(31)
                             } into grp
                             select new
                             {
                                 no_of_ques = grp.Count(),
                                 user_id = grp.Key.user_id,
                                 exam_no = grp.Key.exam_no,
                                 test_no = grp.Key.test_no,
                                 sub_no = grp.Key.sub_no,
                                 user_name = grp.Key.user_name,
                                 exam_name = grp.Key.exam_name,
                                 test_name = grp.Key.test_name,
                                 sub_name = grp.Key.sub_name,
                                 has_negetive_marking = grp.Key.has_negetive_marking,
                                 group_name = grp.Key.group_name,
                                 group_code = grp.Key.group_code,
                                 sum_correct_option = grp.Sum(r => r.Field<int>("correct_ans")),
                                 sum_wrong_option = grp.Sum(r => r.Field<int>("wrong_ans"))
                             };


                DataRow rpt_row2;
                foreach (var grp in query2)
                {
                    rpt_row2 = rpt_dataset.Tables["dt_student_result_details"].NewRow();
                    rpt_row2["no_of_ques"] = grp.no_of_ques;
                    rpt_row2["user_id"] = grp.user_id;
                    rpt_row2["user_name"] = grp.user_name;
                    rpt_row2["exam_no"] = grp.exam_no;
                    rpt_row2["test_no"] = grp.test_no;
                    rpt_row2["sub_no"] = grp.sub_no;
                    rpt_row2["test_name"] = grp.test_name;
                    rpt_row2["exam_name"] = grp.exam_name;
                    rpt_row2["sub_name"] = grp.sub_name;
                    rpt_row2["sum_correct_ans"] = grp.sum_correct_option;
                    rpt_row2["sum_wrong_ans"] = grp.sum_wrong_option;
                    rpt_row2["group_code"] = grp.group_code;
                    rpt_row2["group_name"] = grp.group_name;
                    rpt_row2["has_negetive_marking"] = Convert.ToBoolean(grp.has_negetive_marking);
                    rpt_dataset.Tables["dt_student_result_details"].Rows.Add(rpt_row2);
                }
            }
            return rpt_dataset;
        }