Interacting Between RadAjaxPanels
This help article features a code example that shows how to interact between two RadAjaxPanel controls without using a RadAjaxManager. Telerik recommends using a RadAjaxManager and the technique discussed in this article, while possible, is not supported.
Telerik designed the RadAjaxPanel control to update only its content controls, so Telerik Support always recommends that you use RadAjaxManager when you need to update external controls.
However, you can achieve interaction between panels without the use of RadAjaxManager . The example bellow demonstrate a technique using the ResponseScripts property, together with the client-side ajaxRequest() function. Note the use of Page_PreRender event as well as the property persisted in ViewState.
The following example demonstrates how to handle an AJAX request from one RadAjaxPanel and how to initiate AJAX request from the RadAjaxPanel we want to update.
<telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<h3>Panel1</h3>
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server">
<asp:Button ID="btnIncrease" OnClick="btnIncrease_Click" Text="Increase" runat="server">
</asp:Button>
<asp:Label ID="Label1" runat="server">0</asp:Label>
<asp:TextBox ID="TextBox1" Text="0" runat="server"></asp:TextBox>
</telerik:RadAjaxPanel>
<h3>Panel2</h3>
<telerik:RadAjaxPanel ID="RadAjaxPanel2" runat="server">
<asp:Button ID="btnDecrease" OnClick="btnDecrease_Click" Text="Decrease" runat="server">
</asp:Button>
<asp:Label ID="Label2" runat="server">0</asp:Label>
<asp:TextBox ID="TextBox2" Text="0" runat="server"></asp:TextBox>
</telerik:RadAjaxPanel>
And in the code-behind:
protected void Page_PreRender(object sender, EventArgs e)
{
if (RadAjaxPanel1.IsAjaxRequest || RadAjaxPanel2.IsAjaxRequest)
{
TextBox1.Text = Label1.Text = TextBox2.Text = Label2.Text = Count.ToString();
}
}
public int Count
{
get
{
return this.ViewState["Count"] == null ? 0 : (int)this.ViewState["Count"];
}
set
{
this.ViewState["Count"] = value;
}
}
protected void btnIncrease_Click(object sender, System.EventArgs e)
{
Count++;
RadAjaxPanel1.ResponseScripts.Add(String.Format("$find('{0}').ajaxRequest();", RadAjaxPanel2.ClientID));
}
protected void btnDecrease_Click(object sender, System.EventArgs e)
{
Count--;
RadAjaxPanel2.ResponseScripts.Add(String.Format("$find('{0}').ajaxRequest();", RadAjaxPanel1.ClientID));
}
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs) Handles Me.PreRender
If RadAjaxPanel1.IsAjaxRequest Or RadAjaxPanel2.IsAjaxRequest Then
Dim countValue As String = Count.ToString()
TextBox1.Text = countValue
Label1.Text = countValue
TextBox2.Text = countValue
Label2.Text = countValue
End If
End Sub 'Page_PreRender
Public Property Count() As Integer
Get
If Me.ViewState("Count") Is Nothing Then
Return 0
Else
Return CInt(Me.ViewState("Count"))
End If
End Get
Set(ByVal value As Integer)
Me.ViewState("Count") = value
End Set
End Property
Protected Sub btnIncrease_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Count += 1
RadAjaxPanel1.ResponseScripts.Add(String.Format("$find('{0}').ajaxRequest();", RadAjaxPanel2.ClientID))
End Sub 'btnIncrease_Click
Protected Sub btnDecrease_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Count -= 1
RadAjaxPanel2.ResponseScripts.Add(String.Format("$find('{0}').ajaxRequest();", RadAjaxPanel1.ClientID))
End Sub 'btnDecrease_Click