adding controls at runtime

K

kalaivanan

hi,
i am trying to add a datagrid control to a web page dynamically.
i am able to do it while i used the following code in the page load
event of the form in which i am going to add the control.

DataGrid dG = new DataGrid();
Control frm = FindControl("frmSnAInformation");
frm.Controls.Add(dG);
DataSet ds = nam_Db.dbFunctions.funFetchDataSet("fetchSuInfo_all");
dG.DataSource = ds.Tables[0];
dG.DataBind();


since i need to do the same process for many forms i have written the
code in a class file and call the function when needed. also i am
passing the form name as parameter. the class file function is as
follows:

public void funGrid(string frmNam)
{
DataGrid dG = new DataGrid();
Control frm = FindControl(frmANam);
frm.Controls.Add(dG);
DataSet ds = nam_Db.dbFunctions.funFetchDataSet("fetchSuInfo_all");
dG.DataSource = ds.Tables[0];
dG.DataBind();
}
but when i try to add control i am getting the following error:

System.NullReferenceException: Object reference not set to an instance
of an object.

at the line: frm.Controls.Add(dG);


what could be the reason and the work around for this problem.

regards,
kalaivanan
 
M

Morten Wennevik [C# MVP]

Hi kalaivanan,
System.NullReferenceException: Object reference not set to an instance
of an object.

at the line: frm.Controls.Add(dG);


what could be the reason and the work around for this problem.

The error could indicate dG is null, frm is null or frm.Controls is null..
Since dG = new DataGrid() it won't be null, nor will a valid frm have null
Controls property so frm is null (undefined).

Control frm = FindControl(frmANam);

Since frm is null FindControl did not find the form defined in frmANam.
You need to doublecheck frmANam contains a valid form or handle the null
reference that can occur.

public void funGrid(string frmNam)
{
DataGrid dG = new DataGrid();
Control frm = FindControl(frmANam);
if(frm != null)
{
frm.Controls.Add(dG);
DataSet ds = nam_Db.dbFunctions.funFetchDataSet("fetchSuInfo_all");
dG.DataSource = ds.Tables[0];
dG.DataBind();
}
}
 
K

kalaivanan

Hi kalaivanan,
System.NullReferenceException: Object reference not set to an instance
of an object.
at the line: frm.Controls.Add(dG);
what could be the reason and the work around for this problem.

The error could indicate dG is null, frm is null or frm.Controls is null.
Since dG = new DataGrid() it won't be null, nor will a valid frm have null
Controls property so frm is null (undefined).

Control frm = FindControl(frmANam);

Since frm is null FindControl did not find the form defined in frmANam.
You need to doublecheck frmANam contains a valid form or handle the null
reference that can occur.

public void funGrid(string frmNam)
{
DataGrid dG = new DataGrid();
Control frm = FindControl(frmANam);
if(frm != null)
{
frm.Controls.Add(dG);
DataSet ds = nam_Db.dbFunctions.funFetchDataSet("fetchSuInfo_all");
dG.DataSource = ds.Tables[0];
dG.DataBind();
}

}

thanks man. u are absolutely right.
since the code is executed in the class file the frm is assigned null.

Control frm = FindControl(frmANam);

hence i added one more parameter to the function.

public void funGrid(string frmANam, System.Web.UI.Page pg)
{
DataGrid dG = new DataGrid();
Control frm = pg.FindControl(frmANam);
frm.Controls.Add(dG);

DataSet ds = nam_Db.dbFunctions.funFetchDataSet("fetchSuInfo_all");
dG.DataSource = ds.Tables[0];
dG.DataBind();
}

I passed 'this' keyword as the second argument from the form in which
i call this funtion.
now 'frm' is not null and working too.

thankyou once again.

regards,
kalaivanan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top