Sorry for the wordy title, but it seemed the best way to describe the issue.
Basically, we have a WebDropDown inside an update panel, whose current value we want to change depending on what WebTab is loaded. We've tried handling the WebTab SelectedIndexChanged event to modify this value, but the update panel doesn't get an Async postback triggered. This is after adding the WebTab as an async postback trigger inside the UpdatePanel too.
I finally got it to work by calling __doPostBack via clicking a button on the ClientEvents-SelectedIndexChanged event, but now I'm presented with this error everytime I change a tab:
Error: Sys.ArgumentUndefinedException: Value cannot be undefined.Parameter name: type
Any ideas as to what is causing this issue?
Hello Alex,
Thank you for posting in our community.
I followed the described scenario but I was unable to reproduce the behavior that you are describing. I am attaching the sample project I used to test this. Could you please try running it on your side; whether or not it works correctly may help indicate the nature of this issue.
If this sample is not an accurate demonstration of what you are trying to achieve please feel free to modify it and send it back to me in order to reproduce the issue.
Please let me know if you have any additional questions regarding this matter.
Hi again,
Thanks for the example file. However, the WebTab has AutoPostBackFlags set to on, as opposed to Async. Setting it to Async stops it from working. I suspect this is because the updatepanel requires a proper post back to be triggered?
This is why we used JS in our scenario, to trigger an Async postback on the client event SelectedIndexChanged, but this is the point where we run into errors. Looking online suggests we might have incorrexy AJAX assemblies, but all looks in place from what I can see
To help further, we have the following update panel:
<asp:UpdatePanel ID="updatepanel1" runat="server"> <ContentTemplate> <div id="AsAtCtlContainer"> <jims:AsAt runat="server" ID="AsAtCtl" ExportClientClick = "exportClick();"/><br /><br /> </div> <button onclick="BLOCKED SCRIPT__doPostBack('masterContentBody_updatepanel1', '');" runat="server" id="button1"></button> </ContentTemplate> </asp:UpdatePanel>
The 'AsAtCtl' contains a webdropdown that we access through a property to change it. By manually clicking the button, everything works as we want, only the updatepanel is updated, and the date is changed correctly.
However, if we have ClientEvents-SelectedIndexChanged="doPostBack" in the WebTab, and the following BLOCKED SCRIPT
<script type="text/javascript"> function doPostBack() { document.getElementById("<%:button1.ClientID%>").click(); } </script>
We get the error. This seems to only happen when EnableLoadOnDemand is set to true as well.
Hope that helps!
Just in case anyone else is struggling with a similar issue, it appears to be a problem with WHEN you call the javascript function. Moving it from the client side SelectedIndexLoaded to client side AJAXResponse runs it properly (albeit slowly). Just testing now to see what the best client side event is to trigger the function
Thanks for the example file.
I am glad that you've managed to resolve this issue.
Thank you for using our controls.
Ended up having a fiddle around and got it to work how I wanted (looks like it was a combination of incorrect properties and controls, but what they were I'm not too sure!). The posts here regarding updating a webdropdown from a webtab helped immensely however!
Thank you for the detailed replies. About your question related to newly added WebDataGrid, it should not be related to the mentioned issue, especially if it is empty and haven't set anything to it. Can I ask you, do you use any 3rd party software components like Ajax Control Toolkit? Sometimes this is messing up with our controls and cause issues similar to this one.
There are some existing methods that can overcome this issue, like:
- Set debug=false in web.config (http://bjornstad.ws/2010/10/sys-argumentundefinedexception-value-cannot-be-undefined/)
- Avoid using Clear() function, this is related mostly for WebHierarchicalDataGrid and cannot be related to your issue (http://codecorner.galanter.net/category/javascript/page/4/)
- Check your ScriptManager/WebScriptManager definition (http://stackoverflow.com/questions/14793415/ajax-toolkit-not-working)
- Clear your browser cache
Looking forward to hearing from you.
Just to add further to this, I've noticed that the WebDataGrid is always null when I'm debugging. For instance, in the Page_Load event, the WebDataGrid is null.
EDIT: Looks like the WebDataGrid only loads if it is in the initial selected tab. Any other tabs with a webdatagrid that aren't selected on start up don't seem to get instantiated (using the above WebTab properties). Is the proper behaviour? If it is, is there a way I can force them to be loaded so that I can keep in place the WebTab options we have?