Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / November 2007

Tip: Looking for answers? Try searching our database.

Creating controls dynamically based on user input

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
mohaaron@gmail.com - 31 Oct 2007 00:43 GMT
I can think of a lot of reasons why this might need to be done but as
far as I can tell it's not possible. I've been looking for a way to
add HtmlTableRows to a table using a button click for a while and it
seems it's not possible because the row that gets added with each
click won't get recreated after a post back. After all the reading it
seems that any dynamically created controls must be created in the
Init event to be recreated after postback. This I think is very
unfortionate as it makes it impossible to change the display
interactively. Can someone please verify that this really is
impossible to do?
Dave Bush - 31 Oct 2007 03:12 GMT
OK, I'll verify that you are on the right track.  You will need to
recreate the number of rows you dynamically created during init.  But,
once you've done that view state should be able to recreate everything
else.

"Any dynamically created controls must be created in Init to be
recreated after postback."  Would be better stated, "Any dynamically
created control must be recreated in Init to have its state reset after
postback."  Viewstate assumes the control object has been created, it is
just resetting the state of that object.  Not, recreating the object AND
setting the state.

All you really need is a way to keep track of what you created
dynamically so that you can recreate it during init.  You could do this
with a hidden field which you could get from
Request.Form["hiddenFieldName"] during Init.

-----Original Message-----
From: mohaaron@gmail.com [mailto:mohaaron@gmail.com]
Posted At: Tuesday, October 30, 2007 7:44 PM
Posted To: microsoft.public.dotnet.framework.aspnet
Conversation: Creating controls dynamically based on user input
Subject: Creating controls dynamically based on user input

I can think of a lot of reasons why this might need to be done but as
far as I can tell it's not possible. I've been looking for a way to
add HtmlTableRows to a table using a button click for a while and it
seems it's not possible because the row that gets added with each
click won't get recreated after a post back. After all the reading it
seems that any dynamically created controls must be created in the
Init event to be recreated after postback. This I think is very
unfortionate as it makes it impossible to change the display
interactively. Can someone please verify that this really is
impossible to do?
Eliyahu Goldin - 31 Oct 2007 09:15 GMT
I don't think you are on the right track. You shouldn't need to build any
table dynamically. Instead, you should use one of the databound controls
that produce tables, like GridView, DataList or Repeater. You need to define
a datasource that will contain items (rows) holding data that will go to the
resulting table rows. When you databind the control to the datasource, it
will build the table for you automatically. The datasource doesn't have to
be a database table. It can be any collection object, like an array etc.
Based on user input, modify the datasource object, re-bind the control and
you are done.

Signature

Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net

>I can think of a lot of reasons why this might need to be done but as
> far as I can tell it's not possible. I've been looking for a way to
[quoted text clipped - 6 lines]
> interactively. Can someone please verify that this really is
> impossible to do?
mohaaron@gmail.com - 31 Oct 2007 17:55 GMT
If I shouldn't need to create a table dynamically then how would you
create a table which will have a undetermined number of rows? Meaning
the number of rows needs to change based on what the user needs. In my
case I have to allow the user the ability to create a new row of
information based on a button click. I keep trying to think of ways
around this problem and am now thinking maybe it's possible to pre-
create my table in the Init event with more rows then will be needed,
then set all the rows except the first one to Visible=False. Then as
the user needs another row I will just make it visible. This might
work. It's a hack as it will be a problem if the user needs more rows
then were provided.

I'm also thinking maybe I can do this using pure html and the
Request.Form method to custom build what I need.

There must be some way to do this.

On Oct 31, 1:15 am, "Eliyahu Goldin"
<REMOVEALLCAPITALSeEgGoldD...@mMvVpPsS.org> wrote:
> I don't think you are on the right track. You shouldn't need to build any
> table dynamically. Instead, you should use one of the databound controls
[quoted text clipped - 27 lines]
>
> - Show quoted text -
Eliyahu Goldin - 01 Nov 2007 09:21 GMT
> If I shouldn't need to create a table dynamically then how would you
> create a table which will have a undetermined number of rows?

The point is that you add rows to the datasource which could be as simple as
just an array or an ArrayList. Than you do something like myGrid.DataBind()
and you get a table with as many rows as the number of items in your
datasource.

Signature

Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.