Hello.
I have a case:
1) User pastes a semicolon-separated list of entries into RadAutoCompleteBox;
2) Code must refine entries according to some logic and only add valid entries to Entries collection.
But it seems that the only case when I can modify RadAutoCompleteBox.Entries collection and my modifications are shown after postback is the initial load of a page. When I process 'paste' event on client via JavaScript and use __doPostBack(), any modifications to RadAutoCompleteBox.Entries are missed.
Here's a project reproducing the problem. When I paste, for example, "Most;are" (without quotes, assuming to paste two tokens: 'Most' and 'are'), nothing is added. If I comment out UpdatePanel it works as expected, but full page postback occurs.
MainPage.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MainPage.aspx.cs" Inherits="RC.ITRequest.UI.MainPage" %><%@ Register Assembly="Telerik.Web.UI, Version=2012.2.1002.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4" Namespace="Telerik.Web.UI" TagPrefix="telerik" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <script type="text/javascript" src="jquery-1.8.2.min.js" ></script> <placeholder runat="server" > <script type="text/javascript"> $(document).ready(function () { $(document).on('paste', 'input[name="' + '<%=RACB.ClientID %>'.replace('_', '$') + '"]', function (e) { var el = $(this); /* Just a small timeout till value can get populated */ setTimeout(function () { // replace semicolon surrounded by sequences of space chars with single semicolon var text = $(el).val().replace(/ *; */g, ';'); __doPostBack('<%=RACB.ClientID %>', text); }, 100); }); }); </script> </placeholder></head><body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <asp:UpdatePanel runat="server" ChildrenAsTriggers="false" UpdateMode="Conditional" > <ContentTemplate> <telerik:RadAutoCompleteBox runat="server" ID="RACB" InputType="Token" /> </ContentTemplate> </asp:UpdatePanel> <asp:Label runat="server" ID="lblLog" /><br/> <asp:Button Text="Press me to post back!" runat="server" /> </div> </form></body></html>
MainPage.aspx.cs
using System;using System.Collections.Generic;using Telerik.Web.UI;namespace RC.ITRequest.UI{ public partial class MainPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { List<string> adObjects = new List<string> { "Most", "of", "these", "pages", "are", "in", "the", "Afrikaans", "language", "spoken", "in", "South", "Africa" }; RACB.DataSource = adObjects; if (Page.IsPostBack) { lblLog.Text += "<br/>__EVENTARGUMENT: '" + Request.Form["__EVENTARGUMENT"] + "'"; var newEntries = Request.Form["__EVENTARGUMENT"].Split(';'); foreach (string newEntry in newEntries) { RACB.Entries.Add(new AutoCompleteBoxEntry(newEntry, "")); } } } }}
function
GetRadWindow() {
var oWindow = null;
if (window.radWindow) oWindow = window.radWindow; //Will work in Moz in all cases, including clasic dialog
else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow; //IE (and Moz as well)
return oWindow;
}
function CloseWnd() {
GetRadWindow().close();
}
This is turn calls the
$find("<%= RadAjaxManager1.ClientID %>").ajaxRequest();
on the Orgchart - and refreshes the chart.
However if I am only left with 2 nodes and I try to remove the child node, ajaxrequest() is not called!
If I refresh the Panel using some other mechanism, I can see that the child node is removed.
Can anyone suggest what could be causing this problem? Why is ajaxRequest() not called in some situations.
<telerik:RadButton ID="btnFind" runat="server" Text="Find Visits" style="margin:7px;" UseSubmitBehavior="false" OnClientClicked="FindClickedHandler_VFC"> <Icon PrimaryIconUrl="~/global/images/icons/search.png" /> </telerik:RadButton>function FindClickedHandler_VFC(sender, eventArgs) { var validated = Page_ClientValidate('val'); if (!validated) { return; } else { sender.set_enabled(false); if (sender.get_text() == "Search") sender.set_text("Searching..."); } }Problem Event Name: CLR20r3
Problem Signature 01: devenv.exe
Problem Signature 02: 11.0.50727.1
Problem Signature 03: 5011ecaa
Problem Signature 04: PresentationFramework
Problem Signature 05: 4.0.30319.17929
Problem Signature 06: 4ffa7956
Problem Signature 07: 959
Problem Signature 08: 165
Problem Signature 09: System.Exception
OS Version: 6.1.7601.2.1.0.256.4
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Telerik, do you have any suggestions?
Community, have any of you run into this?
If I can track down exactly which installation is causing the problem, I'll update this thread.
Thanks, Greg
function warnIfTooLong(start, end, sender, args) { var appointment = args.get_appointment(); var finalTime = new Date(start); var maxDuration = 90; finalTime.setMinutes(finalTime.getMinutes() + maxDuration); if (end > finalTime) { alert("You cannot reserve a court for that duration."); args.set_cancel(true); } } function onAppointmentResizeEnd(sender, args) { var start = args.get_appointment().get_start(); var end = args.get_newTime(); warnIfTooLong(start, end, sender, args);}