control not found on postback

  • Thread starter Thread starter Igor Belagorudsky
  • Start date Start date
I

Igor Belagorudsky

Hi,

i am trying to analyze data submitted in a form but the problem is that when
i try to create the controls in code (which is what i want to do), it throws
an obect not found exception on postback when i try to Page.FindControl:

private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack)
{

Debug.WriteLine(((WebControl)Page.FindControl("testBox_1")).Attributes["hell
o"]);
}
else
{
TextBox txt = new TextBox();
txt.ID = "testBox_1";
txt.Attributes.Add("hello", "hi");
Page.FindControl("test").Controls.Add(txt);
}
}

where control "test" is the form that i am submitting and all im trying to
do is to debug.writeline "hi" on postback.
on the other hand, if i manually put a text box in the aspx page and give it
a hello=hi attribute, everything works like it should.
can someone please tell me what the problem is?

thanks,
igor
 
you have to create the dynamic control on postback also. also for it to have
access to its postback data, you should create it during onint, as form load
is too late, the datapostback event has already fired.

-- bruce (sqlwork.com)
 
hi,

thanks for your response, but i have a more complicated structure
unfortunately...

i dont need to display the same page on postback. i have a sort of
questionnaire setup where my page checks what questions to ask in the db,
creates appropriate form elements and waits for submission. then it writes
down answers and displays the next questions in the same page. so i really
need the data from my dynamic control without having to recreate it on the
page.. is this possible and if so at which point would i be able to check
its data? oninit?

thank you,
igor

bruce barker said:
you have to create the dynamic control on postback also. also for it to have
access to its postback data, you should create it during onint, as form load
is too late, the datapostback event has already fired.

-- bruce (sqlwork.com)


Igor Belagorudsky said:
Hi,

i am trying to analyze data submitted in a form but the problem is that when
i try to create the controls in code (which is what i want to do), it throws
an obect not found exception on postback when i try to Page.FindControl:

private void Page_Load(object sender, System.EventArgs e)
{
if (Page.IsPostBack)
{
Debug.WriteLine(((WebControl)Page.FindControl("testBox_1")).Attributes["hell
o"]);
}
else
{
TextBox txt = new TextBox();
txt.ID = "testBox_1";
txt.Attributes.Add("hello", "hi");
Page.FindControl("test").Controls.Add(txt);
}
}

where control "test" is the form that i am submitting and all im trying to
do is to debug.writeline "hi" on postback.
on the other hand, if i manually put a text box in the aspx page and
give
it
a hello=hi attribute, everything works like it should.
can someone please tell me what the problem is?

thanks,
igor
 
Igor,

I am having the same problem here.
I am going to Try this:
on Page postback recreate the same dynamic controls first
Process the results
then create the new questions
response

I know this is inefficient but what else to do other than some java script??

Let us know if this works


Igor Belagorudsky said:
hi,

thanks for your response, but i have a more complicated structure
unfortunately...

i dont need to display the same page on postback. i have a sort of
questionnaire setup where my page checks what questions to ask in the db,
creates appropriate form elements and waits for submission. then it writes
down answers and displays the next questions in the same page. so i really
need the data from my dynamic control without having to recreate it on the
page.. is this possible and if so at which point would i be able to check
its data? oninit?

thank you,
igor

bruce barker said:
you have to create the dynamic control on postback also. also for it to have
access to its postback data, you should create it during onint, as form load
is too late, the datapostback event has already fired.

-- bruce (sqlwork.com)


that
when
Debug.WriteLine(((WebControl)Page.FindControl("testBox_1")).Attributes["hell
o"]);
}
else
{
TextBox txt = new TextBox();
txt.ID = "testBox_1";
txt.Attributes.Add("hello", "hi");
Page.FindControl("test").Controls.Add(txt);
}
}

where control "test" is the form that i am submitting and all im
trying
 
Back
Top