This is a migrated thread and some comments may be shown as answers.

PanelBar update from other control

5 Answers 99 Views
Ajax
This is a migrated thread and some comments may be shown as answers.
Gary
Top achievements
Rank 1
Gary asked on 22 Sep 2008, 10:28 PM
I have a layout with two seperate sections (based on a master page) and in one section (Left) I have a PanelBar insde of an AjaxPanel and in the other (Right) I have an another AjaxPanel with user controls.  When the user makes a particular change in the AjaxPanel on the right I want to update the PanelBar (via the AjaxPanel) on the left.

Using normal ASP Update Panels I would just to a LeftPanel.Update();.  How can I accomplish this?

In particular, I don't need the entire left panel to update, just the PanelBar. 

5 Answers, 1 is accepted

Sort by
0
Konstantin Petkov
Telerik team
answered on 24 Sep 2008, 05:18 AM
Hello Gary,

Generally, the AJAX Panel is designed to update its content only, but you can still achieve interactions between the AJAX Panels as explained in documentation here.

Greetings,
Konstantin Petkov
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Gary
Top achievements
Rank 1
answered on 28 Sep 2008, 06:21 PM
Konstantin,

I believe I understand what you are saying.  I'm tried a couple scenarios but I still can't get updates cross panels to work.

Here is the bigger scenario.  We have a master page that has two content panes on there.  We derive the two panes on the web page.  Pane1 is the left hand navigation (radtree) and Pane2 is the content area.

I have put the RadScriptManager onto the master page as per the FAQ.  I then created a proxy control in Pane1 and another in Pane2.  The proxy control on pane 1 is triggered by the radtree and updates Pane1PanelNav and Pane2PaneContent (as the controls have been named).    On the Pane2PaneContent controls, I set the proxy for that to update Pane1PanelNav and Pane2PanelContent.  This logically should update both panels when either side is updated.

But when I do this, only the triggered side is update.
0
Maria Ilieva
Telerik team
answered on 29 Sep 2008, 01:48 PM
Hi Gary,

Will it be convenient for you to send us sample runnable project which shows your scenario and replicates the described behaviour? Also the exact steps for replicating the problem will be helpful for easily isolate the source of the issue. As soon as we have runnable application we will do our best to provide accurate solution as soon as possible.

All the best,
Maria Ilieva
the Telerik team

Check out Telerik Trainer, the state of the art learning tool for Telerik products.
0
Dave Miller
Top achievements
Rank 2
answered on 29 Sep 2008, 02:02 PM
Gary,

I use this for similar scenarios

On the masterpage function to update controls
        protected void RadAjaxManager1_AjaxRequest(object sender, Telerik.Web.UI.AjaxRequestEventArgs e)  
        {  
 
            //   RadAjaxManager1.Alert("AjaxRequest raised from the " + e.Argument);        
            if (e.Argument == "RebindProdGrid")  
            {  
 
                UserControl customControl = (UserControl)Page.FindControl("customCntl");  
                RadGrid radGrid = (RadGrid)customControl.FindControl("RadGrid1");  
                radGrid.Rebind();  
 
            }  
        }  
 
 Javascript on masterpage to call function

function RefreshProdGrid()  
                {  
                    var ajaxManager = $find("<%=RadAjaxManager1.ClientID%>");  
                    ajaxManager.ajaxRequest("RebindProdGrid");  
                } 

On usercontrols

<telerik:RadAjaxManagerProxy ID="AjaxManagerProxy1" runat="server">  
    <AjaxSettings> 
        <telerik:AjaxSetting AjaxControlID="RadAjaxManager1">  
            <UpdatedControls> 
                <telerik:AjaxUpdatedControl ControlID="RadGrid1" /> 
            </UpdatedControls> 
        </telerik:AjaxSetting> 
    </AjaxSettings> 
</telerik:RadAjaxManagerProxy> 

"RadAjaxManager1" is on master page. Simple call the javascript function "RefreshProductGrid" from another control in an update function using something like this to update the control in the other usercontrol.

ScriptManager.RegisterClientScriptBlock(  
               this.Page,  
               this.GetType(),  
               "WebUserControlSript",  
               "RefreshProdGrid()",  
               true); 


Hope this helps

Regards,
Dave
0
Gary
Top achievements
Rank 1
answered on 29 Sep 2008, 04:23 PM

Okay, I started over.  Instead of trying to bring an existing project up to speed I create a new master page and new client page to validate.  I managed to get it to work at first but ran into some problems with controls on two seperate content panes.

But I did find a solution.  Since some of my test controls were dynamically generated I had a problem with the Ajax manager.  So I added the controls dynamically and then added the action to the ajax manager dynamically (right after loading the controls) and everything is working as expected on the test form.


public partial class GaryPage : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
            if (!IsPostBack)  
            {  
                RadTreeView1.LoadContentFile("~/MenuData/Menu1.xml");  
            }  
 
            AjaxSetting ajax;  
 
            RadAjaxManagerProxy1.AjaxSettings.Clear();  
 
            ajax = new AjaxSetting();  
            ajax.AjaxControlID = "RadTreeView1";  
            ajax.UpdatedControls.Add(new AjaxUpdatedControl("Label1", ""));  
            ajax.UpdatedControls.Add(new AjaxUpdatedControl("Button1", ""));  
            ajax.UpdatedControls.Add(new AjaxUpdatedControl("panelBob", ""));  
            RadAjaxManagerProxy1.AjaxSettings.Add(ajax);  
 
 
            ajax = new AjaxSetting();  
            ajax.AjaxControlID = "Button1";  
            ajax.UpdatedControls.Add(new AjaxUpdatedControl("Label1", ""));  
            ajax.UpdatedControls.Add(new AjaxUpdatedControl("RadTreeView1", ""));  
            ajax.UpdatedControls.Add(new AjaxUpdatedControl("panelBob", ""));  
            RadAjaxManagerProxy1.AjaxSettings.Add(ajax);  
        }  
 
        protected void Button1_Click(object sender, EventArgs e)  
        {  
            RadTreeView1.LoadContentFile("~/MenuData/Menu2.xml");  
 
        }  
 
        protected void RadTreeView1_NodeClick(object sender, Telerik.Web.UI.RadTreeNodeEventArgs e)  
        {  
            Label1.Text = e.Node.Text;  
            panelBob.Controls.Clear();  
            Label l = new Label();  
            l.Text = DateTime.Now.Ticks.ToString();  
            panelBob.Controls.Add(l);  
        }  
    } 

<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">  
</asp:Content> 
<%--<AjaxSettings> 
            <telerik:AjaxSetting AjaxControlID="RadTreeView1">  
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="RadTreeView1" /> 
                    <telerik:AjaxUpdatedControl ControlID="Label1" /> 
                    <telerik:AjaxUpdatedControl ControlID="panelBob" /> 
                </UpdatedControls> 
            </telerik:AjaxSetting> 
            <telerik:AjaxSetting AjaxControlID="Button1">  
                <UpdatedControls> 
                    <telerik:AjaxUpdatedControl ControlID="RadTreeView1" /> 
                    <telerik:AjaxUpdatedControl ControlID="Label1" /> 
                    <telerik:AjaxUpdatedControl ControlID="panelBob" /> 
                </UpdatedControls> 
            </telerik:AjaxSetting> 
        </AjaxSettings>--%> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">  
    <telerik:RadAjaxManagerProxy ID="RadAjaxManagerProxy1" runat="server">  
          
    </telerik:RadAjaxManagerProxy> 
    <telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server" Height="200px" HorizontalAlign="NotSet" 
        LoadingPanelID="RadAjaxLoadingPanel1" Width="300px">  
        <telerik:RadTreeView ID="RadTreeView1" runat="server" OnNodeClick="RadTreeView1_NodeClick">  
        </telerik:RadTreeView> 
    </telerik:RadAjaxPanel> 
</asp:Content> 
<asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">  
    <telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server" Height="75px" 
        Width="75px">  
        <img alt="Loading..." src='<%= RadAjaxLoadingPanel.GetWebResourceUrl(Page, "Telerik.Web.UI.Skins.Default.Ajax.loading.gif") %>' 
            style="border: 0px;" /> 
    </telerik:RadAjaxLoadingPanel> 
    <telerik:RadAjaxPanel ID="RadAjaxPanel2" runat="server" Height="200px" HorizontalAlign="NotSet" 
        LoadingPanelID="RadAjaxLoadingPanel1" Width="300px">  
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> 
        <br /> 
        <asp:Panel ID="panelBob" runat="server" /> 
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /> 
    </telerik:RadAjaxPanel> 
</asp:Content> 
 

Master page:

<%@ Register Assembly="Telerik.Web.UI" 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>Untitled Page</title> 
    <asp:ContentPlaceHolder ID="head" runat="server">  
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form1" runat="server">  
    <asp:ScriptManager ID="scriptmanagerGlobal" runat="server">  
    </asp:ScriptManager> 
    <telerik:RadAjaxManager ID="radajaxmanagerGlobal" runat="server">  
    </telerik:RadAjaxManager> 
    <div> 
        <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">  
          
        </asp:ContentPlaceHolder> 
        <asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server">  
          
        </asp:ContentPlaceHolder> 
    </div> 
    </form> 
</body> 
</html> 
 
Tags
Ajax
Asked by
Gary
Top achievements
Rank 1
Answers by
Konstantin Petkov
Telerik team
Gary
Top achievements
Rank 1
Maria Ilieva
Telerik team
Dave Miller
Top achievements
Rank 2
Share this question
or