We have created a User Control for ASP.Net. At any one time, a user’s profile page could contain between one and infinity of these controls. The Control.ascx file contains quite a bit of javascript. When the control is rendered by .Net to HTML, you notice that it prints the javascript for each control.
This was expected. I’d like to reduce the amount of HTML output by the server to increase page load times. Normally, you could just move the javascript to an external file and then you only need one extra HTTP request which will serve for all controls.
But what about instances in the javascript where we have something like
document.getElementById('<%= txtTextBox.ClientID %>');
How would the javascript know which user control work with? Has anyone done something like this, or is the solution staring me in the face?
Here was the solution:
My actual full-on solution was a little different. Each usercontrol contained a telerik radgrid. The client-side event handlers for the radgrid are of the form
radGrid_eventOccurred(sender, args) {where sender is the grid object.
So instead of using the usercontrols ID as the key in my code, I used the grid.
Say I need to update a textbox inside the usercontrol whenever I click on a row in the grid. I can now do something like this:
function radGrid_rowClick(sender, args) { var text = /*Get the text of the clicked row*/; var textBox = textBoxesObject[sender]; textBox.set_value(text); }