Hello,I've a gridview control and inside a cell, i've put 3 radiobuttons under a same group. I'm not able to get which radio button is selected through checked property. As checked property is giving false always, when i check it with breakpoint. How can i get a the selected value from a group of radiobuttons. Thank You

Recommended Answers

All 4 Replies

Can you provide the code for the GridView, where you're databinding it, and the code where you're trying to get the radio button values?

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
using _database;

public partial class takequiz : System.Web.UI.Page
{
    string str;
    string jobtitle;
    string[] choice = new string[200];
    int score=0,index=0,jobid;
    database db = new database();
    SqlDataReader reader;
    protected void Page_Load(object sender, EventArgs e)
    {
        jobtitle = Session["title"].ToString();
        str = "select jobid from job where jobtitle='" + jobtitle + "'";
        reader = db.data_read(str);
        if (reader.Read())
        {
            jobid = int.Parse(reader.GetSqlValue(0).ToString());
        }
        DataSet ds = new DataSet();
        str = "select slno,question,choice1,choice2,choice3 from questions where jobid=" + jobid + "";

        grdquestions.DataSource = db.data_set(str);
        grdquestions.DataBind();
    }

    protected void btnsubmit_Click(object sender, EventArgs e)
    {
        jobtitle = Session["title"].ToString();
        str = "select jobid from job where jobtitle='" + jobtitle + "'";
        reader = db.data_read(str);
        if (reader.Read())
        {
             jobid = int.Parse(reader.GetSqlValue(0).ToString());
        }

        foreach (GridViewRow r in grdquestions.Rows)

        {
            string opt;

            RadioButton radio1;
            RadioButton radio2;
            RadioButton radio3;

            radio1 = (RadioButton)r.FindControl("rdb1");
            radio2 = (RadioButton)r.FindControl("rdb2");
            radio3 = (RadioButton)r.FindControl("rdb3");

            if ( (radio1.Checked == true || radio2.Checked == true) || radio3.Checked == true) 
            {
                if (radio1.Checked == true)
                {
                   // choice[index++] = radio1.FindControl("rdb1").ToString();
                    opt = "choice1";
                    str = "select choice1 from questions where jobid="+jobid+"";
                    reader = db.data_read(str);
                    if (reader.Read())
                    {
                        choice[index++] = reader.GetSqlValue(0).ToString();
                        Label1.Text = reader.GetSqlValue(0).ToString();
                    }


                }
                else if (radio2.Checked == true)
                {
                    //choice[index++] = radio2.FindControl("rdb2").ToString();
                    opt = "choice2";
                    str = "select choice2 from questions where jobid=" + jobid + "";
                    reader = db.data_read(str);
                    if (reader.Read())
                    {
                        choice[index++] = reader.GetSqlValue(0).ToString();
                    }

                }
                else
                {
                    opt = "choice3";
                    str = "select choice3 from questions where jobid=" + jobid + "";
                    reader = db.data_read(str);
                    if (reader.Read())
                    {
                        choice[index++] = reader.GetSqlValue(0).ToString();
                    }
                    choice[index++] = radio2.FindControl("rdb3").ToString();
                }
            }
        }
        index=0;
        str="select answer from questions where jobid="+jobid+"";
        reader = db.data_read(str);
        while (reader.Read())
        {
            if (choice[index++] == reader.GetSqlValue(0).ToString())
                score++;
        }
        str = "insert into score (total) values (" + score + ")";
        db.database_command(str);
        Session["total"] = score;
        Response.Redirect("score.aspx");               
    }
}

Be sure that in the page load event you put the databinding of the gridview in a !IsPostBack block. Right now the values in the gridview are getting reset before the button's click event is executed because the page load event occurs before the click event during a postback.

commented: Thank You. This helped +0

no i m getting the same error. I have put the binding code in !IsPostBack but when i clicked on the radio button and while debugging it gives OBJECT REFERENCE NOT SET TO AN INSTANCE OF OBJECT.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.