Hi,
I have a problem when I use the ajaxmanager with user control. This generate a error on JavaScript and I don't understand why?
The first time everything is Ok, but when I press submit the page generate this issue:
Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: No se pudo analizar el mensaje recibido del servidor. Este error suele producirse cuando la respuesta resulta modificada por llamadas a Response.Write() o cuando los filtros de respuesta, los HttpModules o el seguimiento de servidor están habilitados.Detalles: Error de análisis cerca de ':"text/javascript"}|<!DOCTYPE html>'.
I have tried placing a radajaxmanagerproxy in the user control as shown in Demo. But I always get the same result.
Any ideas?
Code User Control.
<telerik:RadScriptBlock runat="server" ID="RadScriptBlock1"> <style> .rcInputCell { padding: 0 !important; width: 0 !important; } .HiddenTextBox { width: 1px !important; border: 0 !important; margin: 0 !important; background: none transparent !important; display: none; } </style> <script type="text/javascript"> function isValidDate(str) { var parts = str.split('/'); if (parts.length < 3) return false; else { var day = parseInt(parts[0]); var month = parseInt(parts[1]); var year = parseInt(parts[2]); if (isNaN(day) || isNaN(month) || isNaN(year)) { return false; } if (day < 1 || year < 1) return false; if (month > 12 || month < 1) return false; if ((month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) && day > 31) return false; if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) return false; if (month == 2) { if (((year % 4) == 0 && (year % 100) != 0) || ((year % 400) == 0 && (year % 100) == 0)) { if (day > 29) return false; } else { if (day > 28) return false; } } return true; } } function getPosition(element) { var xPosition = 0; var yPosition = 0; while (element) { xPosition += (element.offsetLeft - element.scrollLeft + element.clientLeft); yPosition += (element.offsetTop - element.scrollTop + element.clientTop); element = element.offsetParent; } return { x: xPosition, y: yPosition }; } </script></telerik:RadScriptBlock><telerik:RadMaskedTextBox ID="rmtbFechaInicial" runat="server" ClientIDMode="Static" Width="130px"></telerik:RadMaskedTextBox><telerik:RadDatePicker ID="rdpFechaInicial" runat="server" Culture="es-ES" ClientIDMode ="Static" Width="30px"> <DateInput CssClass="HiddenTextBox"></DateInput></telerik:RadDatePicker>Code behind User Control
public partial class ctrlFecha : System.Web.UI.UserControl { public enum TipoDeUso { Normal, Periodo } #region Propiedades public DateTime? FechaSeleccionada { get { return rdpFechaInicial.SelectedDate; } set { rdpFechaInicial.SelectedDate = Convert.ToDateTime(value); } } private string _nombreCtrlMascara = "rmtbFechaInicial"; public string NombreCtrlMascara { get { return _nombreCtrlMascara; } set { _nombreCtrlMascara = value; } } private string _nombreCtrlPicker = "rdpFechaInicial"; public string NombreCtrlPicker { get { return _nombreCtrlPicker; } set { _nombreCtrlPicker = value; } } private TipoDeUso _tipoDeUso = TipoDeUso.Normal; public TipoDeUso TipoUso { get { return _tipoDeUso; } set { _tipoDeUso = value; } } private string _mascaraUsar = "##/##/####"; public string MascaraUsar { get { return _mascaraUsar; } set { _mascaraUsar = value; } } private bool _usarValidacionJS = false; ] public bool UsarValidacionJS { get { return _usarValidacionJS; } set { _usarValidacionJS = value; } } public RadMaskedTextBox CtrolMaskedTextBox { get { return rmtbFechaInicial; } set { rmtbFechaInicial = value; } } public RadDatePicker CtrolDatePicker { get { return rdpFechaInicial; } set { rdpFechaInicial = value; } } #endregion protected void Page_Load(object sender, EventArgs e) { //if (!IsPostBack) //{ rmtbFechaInicial.ID = NombreCtrlMascara; rmtbFechaInicial.Mask = MascaraUsar; rmtbFechaInicial.ClientEvents.OnBlur = "UpdateCalendar_" + NombreCtrlPicker; rdpFechaInicial.DateInput.DateFormat = TipoUso == TipoDeUso.Normal ? "dd/MM/yyyy" : "MM/yyyy"; rdpFechaInicial.ID = NombreCtrlPicker; rdpFechaInicial.DatePopupButton.Attributes["OnClick"] = "Popup_" + NombreCtrlPicker + "(); return false;"; rdpFechaInicial.ClientEvents.OnDateSelected = "UpdateTextBox_" + NombreCtrlPicker; if (FechaSeleccionada != null) rmtbFechaInicial.TextWithLiterals = Convert.ToDateTime(FechaSeleccionada).ToString(rdpFechaInicial.DateInput.DateFormat); //rdpFechaInicial.SelectedDate = FechaSeleccionada; rdpFechaInicial.Calendar.FastNavigationSettings.TodayButtonCaption = "Hoy"; rdpFechaInicial.Calendar.FastNavigationSettings.OkButtonCaption = "Aceptar"; rdpFechaInicial.Calendar.FastNavigationSettings.CancelButtonCaption = "Cancelar"; rdpFechaInicial.DatePopupButton.ToolTip = "Abrir calendario"; StringBuilder sbJS = new StringBuilder(); sbJS.AppendLine(""); sbJS.AppendLine("function UpdateTextBox_" + rdpFechaInicial.ID + "(sender, args) { "); sbJS.AppendLine(" var maskedInput = $find('" + rmtbFechaInicial.ClientID + "');"); sbJS.AppendLine(" maskedInput.set_value(\"\");"); sbJS.AppendLine(" var fecha = args.get_newDate();"); sbJS.AppendLine(" var datePicker = $find('" + rdpFechaInicial.ClientID + "');"); sbJS.AppendLine(" var date = datePicker.get_dateInput().parseDate(args.get_newDate());"); sbJS.AppendLine(" var dateInput = datePicker.get_dateInput();"); sbJS.AppendLine(" var formattedDate = dateInput.get_dateFormatInfo().FormatDate(date, dateInput.get_displayDateFormat());"); sbJS.AppendLine(" maskedInput.set_value(formattedDate);"); sbJS.AppendLine("}"); sbJS.AppendLine(""); sbJS.AppendLine("function UpdateCalendar_" + rdpFechaInicial.ID + "() {"); sbJS.AppendLine(" var maskedInput = $find('" + rmtbFechaInicial.ClientID + "');"); sbJS.AppendLine(" var datePicker = $find(\'" + rdpFechaInicial.ClientID + "');"); sbJS.AppendLine(" //Determinando si viene vacio"); sbJS.AppendLine(" if (maskedInput.get_value()==\"\") { datePicker.set_selectedDate(null); return; }"); sbJS.AppendLine(" //Determinando si es una fecha validad"); if (TipoUso == TipoDeUso.Periodo) { sbJS.AppendLine(" var dateValid = isValidDate(\"01/\" + maskedInput.get_valueWithLiterals());"); } else if (TipoUso == TipoDeUso.Normal) { sbJS.AppendLine(" var dateValid = isValidDate(maskedInput.get_valueWithLiterals());"); } sbJS.AppendLine(" if (!dateValid) {"); if (UsarValidacionJS) { sbJS.AppendLine(" var oAlert = radalert(\"Debe de ingresar una fecha valida.\", 256, 47, \"Campo requerido\", null, \"../imagenes/error1.jpg\");"); sbJS.AppendLine(" oAlert.show();"); } //sbJS.AppendLine(" maskedInput.set_value(\"\");"); sbJS.AppendLine(" datePicker.set_selectedDate(null);"); sbJS.AppendLine(" return;"); sbJS.AppendLine(" }"); if (TipoUso == TipoDeUso.Periodo) { sbJS.AppendLine(" var fecha = \"01\" + maskedInput.get_value()"); sbJS.AppendLine(" var date = datePicker.get_dateInput().parseDate(fecha);"); } else if (TipoUso == TipoDeUso.Normal) { sbJS.AppendLine(" var date = datePicker.get_dateInput().parseDate(maskedInput.get_value());"); } sbJS.AppendLine(" var dateInput = datePicker.get_dateInput();"); sbJS.AppendLine(" if (date == null) {"); sbJS.AppendLine(" date = datePicker.get_selectedDate();"); sbJS.AppendLine(" }"); sbJS.AppendLine(" var formattedDate = dateInput.get_dateFormatInfo().FormatDate(date, dateInput.get_displayDateFormat()); "); sbJS.AppendLine(" datePicker.set_selectedDate(date);"); sbJS.AppendLine(" if (!isNaN(date) && date > datePicker.get_minDate() && date < datePicker.get_maxDate()) {"); sbJS.AppendLine(" datePicker.set_selectedDate(date);"); sbJS.AppendLine(" }"); sbJS.AppendLine(" else {"); sbJS.AppendLine(" var oldSelectedDate = datePicker.get_selectedDate();"); sbJS.AppendLine(" if (oldSelectedDate == null) return;"); sbJS.AppendLine(" if (oldSelectedDate.toString() == datePicker.get_minDate().toString()) {"); sbJS.AppendLine(" maskedInput.set_value(\"\");"); sbJS.AppendLine(" }"); sbJS.AppendLine(" else {"); sbJS.AppendLine(" maskedInput.set_value(DateToString(oldSelectedDate));"); sbJS.AppendLine(" }"); sbJS.AppendLine(" }"); sbJS.AppendLine("}"); sbJS.AppendLine(""); sbJS.AppendLine("function Popup_" + rdpFechaInicial.ID + "() {"); sbJS.AppendLine(" var datePicker = $find('" + rdpFechaInicial.ClientID + "');"); sbJS.AppendLine(" var maskedInput = $find('" + rmtbFechaInicial.ClientID + "');"); sbJS.AppendLine(" var textBox = datePicker.get_textBox();"); sbJS.AppendLine(" var position = getPosition(maskedInput._textBoxElement);"); sbJS.AppendLine(" var popupElement = datePicker.get_popupContainer();"); sbJS.AppendLine(" datePicker.showPopup(position.x, position.y + maskedInput._textBoxElement.offsetHeight);"); sbJS.AppendLine("}"); ScriptManager.RegisterStartupScript(Page, typeof(Page), rdpFechaInicial.ID.ToString(), sbJS.ToString(), true); //} } }Code page .aspx
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server"> <ClientEvents OnRequestStart="onRequestStart" /> <AjaxSettings> <telerik:AjaxSetting AjaxControlID="btnconsultar"> <UpdatedControls> <telerik:AjaxUpdatedControl ControlID="divContenido" LoadingPanelID="ralpCasos"></telerik:AjaxUpdatedControl> </UpdatedControls> </telerik:AjaxSetting> </AjaxSettings> </telerik:RadAjaxManager> <telerik:RadAjaxLoadingPanel ID="ralpCasos" runat="server"></telerik:RadAjaxLoadingPanel> <div class="row" id="divContenido" runat="server"> <div class="col-xs-12"> <div class="panel panel-info" style="margin-left: 10px; margin-right: 10px;"> <table class="table" border="0"> <tr> <td style="width: 60px;"></td> <td style="width: 100px; vertical-align: middle;"> <asp:Label ID="lblFechaInicial" runat="server" Font-Size="14px" Text="Desde"></asp:Label> </td> <td> <uc1:ctrlFecha runat="server" ID="ctrlFecha" MascaraUsar="##/##/####" NombreCtrlMascara="rmtbFechIni" NombreCtrlPicker="rdpFechIni" TipoUso="Normal" UsarValidacionJS="false" /> <asp:Label ID="lbErrorFechaIni" runat="server"></asp:Label> </td> <td></td> <td style="width: 100px; vertical-align: middle;"> <asp:Label ID="lblFechaFinal" runat="server" Font-Size="14px" Text="Hasta"></asp:Label> </td> <td> <uc1:ctrlFecha runat="server" ID="ctrlFecha1" MascaraUsar="##/##/####" NombreCtrlMascara="rmtbFechaFinCasos" NombreCtrlPicker="rdpFechaFinCasos" TipoUso="Normal" UsarValidacionJS="false" /> </td> </tr> <tr> <td style="width: 60px;"></td> <td style="width: 100px; vertical-align: middle;"> <asp:Label ID="Label1" runat="server" Text="Buscar por"></asp:Label> </td> <td colspan="2"> <telerik:RadTextBox runat="server" ID="txtBusqueda" Width="100%" EmptyMessage="No. Caso, Título, Solicitante, Usuario asignado o seguidor..."> </telerik:RadTextBox> </td> <td colspan="2" style="text-align: right; padding-right: 100px;"> <telerik:RadButton ID="btnconsultar" runat="server" OnClick="btnconsultar_Click" Style="display: inline-block !important;" Text="Consultar"> <Icon PrimaryIconUrl="../imagenes/buscar.png" /> </telerik:RadButton> </td> </tr> <tr> <td colspan="5"> <asp:Label runat="server" ID="lbMostrarErrores" ForeColor="Red"></asp:Label> </td> </tr> </table> </div> </div> </div>Thanks for your help.
