Hello,
I've been using telerik/ajax for a couple of months, and I have recently hit a proplem with regards to displaying a loading panel. When the user click a button, I want to display a loading panel while the server process the data. However, I also want to run a javascript method before the post is made to the server. See my example:
The code above works, but if you un-comment the in the Ajax manager to enable the loading panel, the btnOK_Click on the server is never called. If you remove the OnClientClick methods from the OK button the loading panel appears, but page does not work how it was designed!.
I would like my javascript to run, the loading panel to appear, and the server to process the post back. Does anybody know what I'm doing wrong? P.S Our version of Telerik is Q2 2008.
Many thanks,
Matt
I've been using telerik/ajax for a couple of months, and I have recently hit a proplem with regards to displaying a loading panel. When the user click a button, I want to display a loading panel while the server process the data. However, I also want to run a javascript method before the post is made to the server. See my example:
<head runat="server"> <title></title> <script type="text/javascript"> <!-- function addItem() { var textBoxData = document.getElementById("txtData"); if (textBoxData.value.length > 0) { var listBoxData= document.getElementById("lsbSelectedData"); var newLength = listBoxData.length; listBoxData[newLength] = document.createElement("option"); listBoxData[newLength].text = textBoxData.value; } else { alert("Enter data"); } textBoxData.value = ""; textBoxData.focus(); return false; } function submitData() { var listBoxData = document.getElementById("lsbSelectedData"); // Ensure that barcodes have been entered if (listBoxData.options.length > 0) { // Store data in a hidden field as the contexts of a listbox // do not get posted back to the server var hiddenData = document.getElementById("hdnSelectedData"); var pipedData = ""; var index; for (var index = 0; index < listBoxData.options.length; index++) { pipedData += listBoxData.options[index].text + "|"; } hiddenData.value = pipedData; return true; } else { alert("Enter data"); var textBoxData = document.getElementById("txtData"); textBoxData.focus(); return false; } } // --> </script> </head> <body> <form id="form1" runat="server"> <telerik:RadScriptManager ID="ScriptManager1" runat="server" /> <telerik:RadAjaxManager ID="AjaxManager" runat="server" DefaultLoadingPanelID="AjaxLoadingPanel"> <AjaxSettings> <%--<telerik:AjaxSetting AjaxControlID="btnOK" > <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="pnlDataEntry" LoadingPanelID="AjaxLoadingPanel" /> <telerik:AjaxUpdatedControl ControlID="lblResults" /> </UpdatedControls> </telerik:AjaxSetting>--%> </AjaxSettings> </telerik:RadAjaxManager> <asp:Panel ID="pnlDataEntry" runat="server"> <asp:TextBox ID="txtData" runat="server"></asp:TextBox> <asp:Button ID="btnAdd" runat="server" Text="Add" OnClientClick=" return addItem()" /> </asp:Panel> <asp:ListBox ID="lsbSelectedData" runat="server" Width="300" Height="200"></asp:ListBox> <asp:HiddenField ID="hdnSelectedData" runat="server" /> <br /> <asp:Button ID="btnOK" runat="server" Text="OK" onclick="btnOK_Click" OnClientClick="return submitData()"/> <%--<asp:Button ID="btnOK" runat="server" Text="OK" onclick="btnOK_Click"/>--%> <br /> <asp:Label ID="lblResults" runat="server"></asp:Label> <telerik:RadAjaxLoadingPanel ID="AjaxLoadingPanel" runat="server" Height="75px" Width="75px" BackColor="WhiteSmoke" CssClass="loadingImage" HorizontalAlign="Center"> <asp:Image ID="Image1" runat="server" AlternateText="Loading..." ImageUrl="loading5.gif" /> </telerik:RadAjaxLoadingPanel> </form> </body>C# code:
public partial class TestPage: System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void btnOK_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(2000); StringBuilder results = new StringBuilder(); // Get the formatted data from the hidden field string pipedData = hdnSelectedData.Value; if (!string.IsNullOrEmpty(pipedData)) { results.Append("Results:<BR />"); string[] enteredData = pipedData.Remove(pipedData.Length - 1).Split('|'); foreach (string data in enteredData) { results.AppendFormat("{0}<BR />", data); } } else { results.Append("Results: Nothing entered!"); } lblResults.Text = results.ToString(); } }I would like my javascript to run, the loading panel to appear, and the server to process the post back. Does anybody know what I'm doing wrong? P.S Our version of Telerik is Q2 2008.
Many thanks,
Matt