> I am trying to create a page with table of many form elements.
> As you can see I have 840 form elements in the page.
> Q: Why so many form elements?
>
> A: I have 84 channels that I would like the user to configure while seeing
> the rest of the channels.
That still does not answer _why_ so many form elements. Your answer
indicates that you want the user to see all of the channel _information_
(which can be embedded in table cells), but realistically, the user can only
set one control value at a time. Why not create an 11th column, which
contains an "edit" hyperlink. Then, when you click the link it puts edit
controls in that row only.
Then the user can save the information, either with a button or some other
user interface element.
> My website is loaded only by IE 5.0 and above.
_If_ it is your intent to support only IE, you might consider using the
WebService HTC. This would allow you to post the changes you make to the
page without having to reload the entire page. (If you have multiple people
working on the page simultaneously, you still have a problem, as the page
must be refreshed frequently, to show the changes made by others).
> Can I use so many elopements in 1 page?,
Obviously. Your test page loads.
> Would I will have problem with submitting so many elements ?
"Problem" is relative. The main thing is, unless the standard way of working
is to configuration many of the channels in one session, most of the field
values will be exactly the same value as the one the server set. But you
have to write code to parse through all of those elements, check their
values, etc. That is a lot of code.
> Do you know where I can see the max elements per page for IE?
I am not sure that there is one, per se. If there is, it is probably far
greater than most average clients can bear.
> Any others ways how to handle so many elements?
Sure. Do not create them until the user indicates that they want to edit the
information displayed.
> Maybe other web technologies ?
Like what? Changing the server-side technology (ASP versus ASP.NET versus
JSP versus PHP versus whatever) will not likely help. Maybe you can get some
performance gain with ASP.NET because of its compiled nature, but if most of
the time server-side is spent making database calls, I doubt that there will
be a significant performance gain.
Changing the client-side technology really depends upon who your customers
are. Do they all have IE 5+? Do they all have Flash 6+? How do your
customers use this tool?
What you probably need to do is reduce the number of round-trips to the
server. This is what takes all of the time right now. Each time the page has
to reload, it is going to be painful, because the wait is so long. So, if
possible, you need to look into ways to reduce the number of round-trips.
There are a number of ways to send information from the client and receive
results from the server without refreshing the page.
_But_, if the page is being updated by several people at once, they would
need to see those changes, so you may still be stuck requiring a roundtrip.
I cannot tell you as I do not know your requirements.
Hope that helps. If not, post again.
Dale
If you really have to have so many drop-down controls, you will get much
better performance if you create them on the server and then send them to
the client instead of creating them in DHTML.
Brian
> Hello,
>
[quoted text clipped - 39 lines]
>
> Yaron
> I build a test page at http://www.lyciumnetworks.com/test.asp
Your function "selectHidden2Disp" uses eval when it does not need to:
function selectHidden2Disp(Elemname)
{
Disp = eval("document.forms[0]."+Elemname);
Hidden = eval("document.forms[0].H_"+Elemname);
Disp.options[Hidden.value].selected = true;
}
Instead, try:
function selectHidden2Disp(Elemname)
{
Disp = document.forms[0][Elemname];
Hidden = document.forms[0]["H_"+Elemname];
Disp.options[Hidden.value].selected = true;
}
This will speed up things a little. Although I figured that this code was
just to dummy up the page. You are not really intending to generate the
elements on the client side, are you. If so, document.write is not the right
way to go. (And I agree with the other responder -- you want to do that on
the server-side anyway.)