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

public partial class exam : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    public void function()
    {
        my e = new my();
        SqlConnection sqlcon = new SqlConnection(e.ImportantData);
        SqlCommand sqlcmd;
        sqlcmd = new SqlCommand("usp_exam1", sqlcon);
        sqlcmd.Parameters.AddWithValue("@rowno", '1');
        sqlcmd.CommandType = CommandType.StoredProcedure;
        sqlcon.Open();
        sqlcmd.ExecuteScalar();
        SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
        DataSet ds = new DataSet();
        da.Fill(ds);[CODE][/CODE]
        RadioButton[][] radioButtons = new RadioButton[3][];
        TableRow[] tr = new TableRow[3];
        TableCell[][] tc = new TableCell[3][];
        if (ds.Tables[0].Rows.Count > 0)
        {

            int j=0;
            int i = 0;
            Table tb = new Table();
            form1.Controls.Add(tb);

            for(i=0;i<4;i++)
            {
                for(j=0;j<4;j++)
                {
                    for(int k=1;k<5;k++)
                    {
                    DataRow dtr = ds.Tables[0].Rows[j];
                    tr[j] = new TableRow();
                    tb.Controls.Add(tr[j]);
                    tc[i][j] = new TableCell();
                    [COLOR="Red"]radioButtons[i][j] = new RadioButton();[/COLOR]
                    radioButtons[i][j].Text = dtr["Option"+"k"].ToString();
                    tr[j].Controls.Add(tc[i][j]);
                    tc[i][j].Controls.Add(radioButtons[i][j]);
                    }
                }
            }


        }
        else
        {

            Response.Write("wrong user id and password");
        }
        sqlcon.Close();

    }


    protected void Button2_Click(object sender, EventArgs e)
    {
        function();
        Response.Write("done");
    }
}

I am creatig dymaic 12 radio button in the series of 4(option) but I am getting error(red line).
as I am very new to asp.net I am not able to handle it

Edited 3 Years Ago by diafol: fixed formatting

I have faced same problem once and in my case the form.findControl was also useless.

So what I did was create a datatable and bind it to gridview, and on each (add) click, insert a new row in the datatable and rebind the grid, and when you want to get values of the controls, just use i.e.

Also names of your radiobuttons must be in a sequence like rbtn1, rbtn2

int count = 0;
foreach (gridViewRow grRbtn in gridView1.Rows)
{
   radiobutton rbtn = grRbtn.findControl("rbtn"+count) as radiobutton;
   // do what you have to do, youve got the object of radio button
   // i.e. store them in an array.
   count ++;
}

I think that your problem lies here.

RadioButton[][] radioButtons = new RadioButton[3][];
TableRow[] tr = new TableRow[3];
TableCell[][] tc = new TableCell[3][];

In your table creation loops you are creating 4 rows with 4 columns and adding 4 radiobutton to each cell. Yet you only have three rows in the arrays and no columns.

Also, I think that this DataRow dtr = ds.Tables[0].Rows[j]; would be better outside the k for loop.

Edited 6 Years Ago by nick.crane: n/a

Hello nick,
Thanks for the reply

But when I use the braekpoint the cursor is not going on to that line where I add the radio button to cells
the error is coming to that line so I dont think so the error is related to how many radio button is being added to cell.
any how change the row from 4 to 3 still getting the same error

Please see those two lines

RadioButton[][] radioButtons = new RadioButton[3][];
radioButtons[j] = new RadioButton();

these declaration may contain the error

Yes, that is what I was pointing out. You only initialise the primary array part here. RadioButton[][] radioButtons = new RadioButton[3][]; So when you try to execute radioButtons[i][j] = new RadioButton(); radioButtons[j] does not exist because radionButtons is null.

Put a breakpoint after RadioButton[][] radioButtons = new RadioButton[3][]; and examine the contents of radioButtons.

Edited 6 Years Ago by nick.crane: n/a

Ya , Its seems that your right, plz tell me what should I do to overcome this problem

means what change should be done in code

Option 1) Change the array to a two dimensional array.

RadioButton[,] radioButtons = new RadioButton[4, 4];

Option 2) initialise the second tier of arrays.

RadioButton[][] radioButtons = new RadioButton[4][];
for (int i = 0; i < radioButtons.Length; i++)
{
    radioButtons[i] = new RadioButton[4];
}

Option 3) If you don't know how many you need then use a list.

List<RadioButton> radioButtons = new List<RadioButton>();
...
RadioButton newRB = new RadioButton();
radionButtons.Add(newRB);

Edited 6 Years Ago by nick.crane: n/a

This article has been dead for over six months. Start a new discussion instead.