Hi,
in few words the problem is:
when i am trying to use $.event.trigger after an ajax request made with RadAjaxManager I am not able to catch the fired event in user controls.
If i put the event handler in default.aspx there is no problem and the event is "catch" but in user control the hndler is never fired...
Here my code, any suggestions? Thank you in advance...
Default.aspx
Default.aspx.cs
WebControl.ascx --- Here function myEventHandler is never Fired!!!
in few words the problem is:
when i am trying to use $.event.trigger after an ajax request made with RadAjaxManager I am not able to catch the fired event in user controls.
If i put the event handler in default.aspx there is no problem and the event is "catch" but in user control the hndler is never fired...
Here my code, any suggestions? Thank you in advance...
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Default" %>
<%@ Register Src="~/WebUserControl1.ascx" TagPrefix="uc1" TagName="WebUserControl1" %>
<!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
>
<
telerik:RadStyleSheetManager
id
=
"RadStyleSheetManager1"
runat
=
"server"
/>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
<
Scripts
>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.Core.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQuery.js"
/>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQueryInclude.js"
/>
</
Scripts
>
</
telerik:RadScriptManager
>
<
script
type
=
"text/javascript"
>
//Put your JavaScript code here.
function onResponseEnd(sender, eventArgs) {
console.log("response end");
$.event.trigger({
type: "myEvent",
message: "event",
time: new Date()
});
}
</
script
>
<
telerik:RadAjaxLoadingPanel
runat
=
"server"
ID
=
"RadAjaxLoadingPanel1"
></
telerik:RadAjaxLoadingPanel
>
<
telerik:RadAjaxManager
ID
=
"RadAjaxManager1"
runat
=
"server"
>
<
ClientEvents
OnResponseEnd
=
"onResponseEnd"
></
ClientEvents
>
<
AjaxSettings
>
<
telerik:AjaxSetting
AjaxControlID
=
"ButtonAddItem"
>
<
UpdatedControls
>
<
telerik:AjaxUpdatedControl
ControlID
=
"RadListViewClips"
LoadingPanelID
=
"RadAjaxLoadingPanel1"
></
telerik:AjaxUpdatedControl
>
</
UpdatedControls
>
</
telerik:AjaxSetting
>
</
AjaxSettings
>
</
telerik:RadAjaxManager
>
<
div
>
<
telerik:RadButton
ID
=
"ButtonAddItem"
runat
=
"server"
Text
=
"Add item"
OnClick
=
"OnRadButtonClick"
></
telerik:RadButton
>
<
telerik:RadListView
ID
=
"RadListViewClips"
AllowPaging
=
"True"
runat
=
"server"
Visible
=
"True"
OnNeedDataSource
=
"RadListViewClipsOnNeedDataSource"
allowsorting
=
"true"
ItemPlaceholderID
=
"placeHolder"
DataKeyNames
=
"Id"
>
<%-- <
ClientSettings
>
<
ClientEvents
OnListViewCreated
=
"test"
></
ClientEvents
>
</
ClientSettings
>--%>
<
LayoutTemplate
>
<
div
id
=
"placeHolder"
runat
=
"server"
>
<
ul
></
ul
>
</
div
>
</
LayoutTemplate
>
<
ItemTemplate
>
<
li
>
<%# Eval("Name") %><
uc1:WebUserControl1
runat
=
"server"
id
=
"WebUserControl1"
/>
</
li
>
</
ItemTemplate
>
</
telerik:RadListView
>
</
div
>
</
form
>
</
body
>
</
html
>
Default.aspx.cs
using
System;
using
System.Collections.Generic;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data;
using
System.Configuration;
using
System.Web.Security;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
Telerik.Web.UI;
public
partial
class
Default : System.Web.UI.Page
{
private
List<ItemState> CurrentDockStates
{
get
{
//Store the info about the added docks in the session. For real life
// applications we recommend using database or other storage medium
// for persisting this information.
List<ItemState> currentDockStates = (List<ItemState>)Session[
"CurrentDockStatesMyPortal"
];
if
(Equals(currentDockStates,
null
))
{
currentDockStates =
new
List<ItemState>();
Session[
"CurrentDockStatesMyPortal"
] = currentDockStates;
}
return
currentDockStates;
}
set
{ Session[
"CurrentDockStatesMyPortal"
] = value; }
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!Page.IsPostBack)
{
RadListViewClips.DataSource = CurrentDockStates;
RadListViewClips.DataBind();
}
}
protected
void
RadListViewClipsOnNeedDataSource(
object
sender, RadListViewNeedDataSourceEventArgs e)
{
RecreateItems();
}
private
void
RecreateItems()
{
var source = CurrentDockStates;
RadListViewClips.DataSource = source;
}
protected
void
OnRadButtonClick(
object
sender, EventArgs e)
{
CurrentDockStates.Add(
new
ItemState
{
Name =
"Prova"
,
Id = CurrentDockStates.Count
});
RadListViewClips.Rebind();
}
}
internal
class
ItemState
{
public
string
Name {
get
;
set
; }
public
int
Id {
get
;
set
; }
}
WebControl.ascx --- Here function myEventHandler is never Fired!!!
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="TelerikWebApp1.WebUserControl1" %>
<
script
>
$(document).on("myEvent", myEventHandler);
function myEventHandler(e) {
console.log("myEvent on: usercontrol");
}
</
script
>