|
Rank: Member Groups: Member
Joined: 8/29/2007 Posts: 20
|
I have a UserControl which implements an AJAXUploader. When I test the UserControl on a Page object, it works as expected.
However, I have a page that dynamically loads "widgets" which are UserControls onto a page, and these widgets use ASP.NET AJAX, static html, or EO objects. The surface they are loaded to is an ASP.NET AJAX UpdatePanel because the drag-and-drog interface is implemented in that technology.
If my AJAXUploader widget is loaded onto the page, it displays, but is disabled. Further, no other buttons rendered on the UserControl are active, and any other widget that attempts to perform a partial page update is blocked. Basically, it shuts down / breaks the rest of the page.
If the AJAXUploader UserControl can function fine on Page, is there a way to insulate its logic to prevent it from breaking other UserControls in the UpdatePanel it is loaded into?
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi,
The reason is because when the page initially rendered without the AJAXUploader, it did not load any javascript modules that the AJAXUploader requires to run. When later you added AJAXUploader to the page via UpdatePanel, the page still does not have the javascript files our AJAXUploader needed because ASP.NET UpdatePanel does not dynamically loads javascript files.
Try using our CallbackPanel instead of ASP.NET UpdatePanel and it should work. One of the major advantage our CallbackPanel over UpdatePanel is that our CallbackPanel dynamically loads javascript modules when necessary. You can still continue to use ASP.NET AJAX for all other features that it offers, such as the drag drop that you were using.
Another way that would require less change, but is also less efficient, is to render AJAXUploader at the very begining, but put it inside a hidden DIV so that it is not visible so that user won't be able to see it.
Thanks
|
|
Rank: Member Groups: Member
Joined: 8/29/2007 Posts: 20
|
Hello,
First I switched the UpdatePanel to a CallbackPanel and indeed the ASP.NET AJAX code still functioned, though it is slightly slower than using the native ASP.NET UpdatePanel. So far so good.
However, loading the UserControl dynamically with the AJAXUploader within still does not function correctly. The drag and drop script still functions for other modules, but AJAXUploader is locked and disabled as before. Also, postbacks for all other modules continue to get blocked by the presence of the AJAXUploader on the page.
If the AJAXUpload requires javascript and CallbackPanel loads them dynamically, then what else would need to occur for them to work correctly together?
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi,
I can't think of anything else. Can you post your code so that we can take a look?
Thanks
|
|
Rank: Member Groups: Member
Joined: 8/29/2007 Posts: 20
|
I can't show the code explicitly but I will try to work up a repro example soon and post it here.
I am thinking that it has more to do with it residing in a UserControl than the CallbackPanel not loading scripts, because I even dropped a visible functional AJAXUpload control onto to the CallbackPanel surface so that all scripts would have loaded to make that control functional, and the presence of the UserControl w/ AJAXUpload still produces the same issues.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
UglyDuckling wrote:I can't show the code explicitly but I will try to work up a repro example soon and post it here.
I am thinking that it has more to do with it residing in a UserControl than the CallbackPanel not loading scripts, because I even dropped a visible functional AJAXUpload control onto to the CallbackPanel surface so that all scripts would have loaded to make that control functional, and the presence of the UserControl w/ AJAXUpload still produces the same issues. That makes perfect sense. We will be looking into it as soon as we have the repro code. Thanks
|
|
Rank: Member Groups: Member
Joined: 8/29/2007 Posts: 20
|
Hello,
Thank you for your quick and knowledgeable responses so far.
While creating the repro I had difficulty reproducing the error and the basic case for this works correctly. So after a lot of debugging using two side-by-side cases I found a seemingly innocuous difference that breaks the code and produces the issue.
The chain of loading goes UpdatePanel --(dynamically loads)--> UserControl(host) ---(dynamically loads)--> UserControl (instance) ----(which has)---> EO.Web controls...
Now my code changes the UserControl(host).ID to a formalized identifier i.e. the name of the type and the instance guid and again when the host loads the instance containing the EO controls. If I do not change the IDs and allow them to load freely, everything on the page renders perfectly. If I change them to anything, it breaks.
Now my issue is that I was using the modified IDs to identify the correct modules to update through web service calls. I'll continue to look for a workaround for requiring the IDs, but I thought you'd like to know the issue.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Hi,
Thanks for the update. What's the exact format of the ID that you use? Can you give an example?
Thanks
|
|
Rank: Member Groups: Member
Joined: 8/29/2007 Posts: 20
|
I use the database guid to differentiate between modules of the same type, so a typical id could be ID = "mod9089634e-373c-49f8-8d1e-0d66-99eb-fe3d"
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
Thanks for the information!
|
|
Rank: Member Groups: Member
Joined: 8/29/2007 Posts: 20
|
It turns out that my drag-and-drop functionality is dependent on the ID distinction in order to sort out which div is affected, though I can't sort out why "ctl_ContentPlaceHolder_Moduleefgh-abcd-0123-etc_Module" (renamed in code) is any different than the default "ctl_ContentPlaceHolder_ctl05_Module" (default naming), unfortunately I cannot use EO controls in this scenario unless changing the module no longer affects its operation.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,194
|
We've made a new build for you that should address this problem. Please see your private message for download location.
|
|