Updating Portlet content in DirectMethod

  1. #1

    Updating Portlet content in DirectMethod

    Hi, I have a portlet on a page and I have a user control inside the portlet.

    I hooked up the click event of Gear tool of portlet with a DirectMethod.
    In direct method I am changing the content of UserControl and I want the updates to show up in the browser without refreshing the whole page.

    I tried Render(), Update() and UpdateContent() methods on the portlet. None of them is working.

    Any idea how I can achieve this. Please see the attached code:

    ASPX Page:

    <%@ Page Language="C#" %>
    <%@ Import Namespace="Ext.Net.Utilities" %>
    <%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            string text = @"Testing to see if portal content can be changed during a DirectMethod";
            this.ResourceManager1.RegisterClientScriptBlock("text", string.Format("var text=\"{0}\";", text));
    
            UserControl uc = (UserControl)LoadControl("TestControl.ascx");
            uc.ID = "myUC";
            Portlet p = new Portlet();
            p.ContentControls.Add(uc);
            p.Padding = 5;
            p.Header = true;
            portalColumn1.ContentControls.Add(p);
            p.Tools.Add(new Tool(ToolType.Gear, "handleEdit();", "Edit"));
        }
    
        [DirectMethod]
        public void editPortlet()
        {
            Portlet p = ControlUtils.FindControls<Portlet>(this)[0];
            TestControl tc = (TestControl)p.ContentControls[0];
            tc.setName("Test Name");
            p.Update();
            p.Render();
            p.UpdateContent();
        }
        protected void Portlet_Hide(object sender, DirectEventArgs e)
        {
           X.Msg.Alert("Status", e.ExtraParams["ID"] + " Hidden").Show();
        }
    </script>
    
    <!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 id="Head1" runat="server">
        <title>Portal in TabPanel - Ext.NET Examples</title>
        <script type="text/javascript">
            function handleEdit() 
            {
                Ext.net.DirectMethods.editPortlet();
            }
        </script>
    
    </head>
    <body>
       <ext:ResourceManager ID="ResourceManager1" runat="server" />
    
        <form id="form1" runat="server">
            
        <asp:ScriptManager ID="Scriptmanager1" runat="server" />   
            <ext:Viewport ID="Viewport1" runat="server">
                <Items>
                    <ext:BorderLayout ID="BorderLayout1" runat="server">
                        <Center MarginsSummary="5 5 5 0">
                            <ext:Portal ID="Portal1" runat="server" Border="false" Layout="Column">
                                <Items>
                                    <ext:PortalColumn ID="portalColumn1" 
                                        runat="server" 
                                        Cls="x-column-padding"
                                        ColumnWidth=".33"
                                        Layout="Anchor">
                                        <Items>
                                        </Items>
                                    </ext:PortalColumn>
                                    <ext:PortalColumn ID="portalColumn2" 
                                        runat="server" 
                                        Cls="x-column-padding"
                                        ColumnWidth=".33"
                                        Layout="Anchor">
                                        <Items>
                                        </Items>
                                    </ext:PortalColumn>
                                    <ext:PortalColumn ID="portalColumn3" 
                                        runat="server" 
                                        Cls="x-column-padding1"
                                        ColumnWidth=".33"
                                        Layout="Anchor">
                                        <Items>
                                        </Items>
                                    </ext:PortalColumn>
                                </Items>
                            </ext:Portal>
                        </Center>
                    </ext:BorderLayout>
                </Items>
            </ext:Viewport>
           </form>
    </body>
    </html>
    User Control:

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="TestControl.ascx.cs" Inherits="TestControl" %>
    
    <table>
    <tr>
        <td>
            <asp:Label ID="Label1" runat="server" Text="Name"></asp:Label></td>
            <td><asp:TextBox ID="txtName" runat="server"></asp:TextBox></td>
    </tr>
    </table>
    User control code behind page:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
        public partial class TestControl : System.Web.UI.UserControl
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            public void setName(String name)
            {
                this.txtName.Text = name;
            }
        }

    Thanks,
    Rao
    Last edited by geoffrey.mcgill; Aug 23, 2011 at 3:46 PM. Reason: please use [CODE] tags
  2. #2

    Updating Portlet in DirectMethod

    I tried calling UpdateContent method on portal instead of portlet and it is working. I am still looking for a way to just update the portlet.

    I modified editPortlet method as follows:

    [DirectMethod]
    public void editPortlet()
    {
    Portlet p = ControlUtils.FindControls<Portlet>(this)[0];
    TestControl tc = (TestControl)p.ContentControls[0];
    tc.setName("Test Name");
    Portal1.UpdateContent();
    }
    Now I can see the updated user control in the browser. I am still curious why I can't update just the portlet.
    I would appreciate any response.

    Thanks,
    Rao
    Last edited by geoffrey.mcgill; Aug 23, 2011 at 3:45 PM. Reason: please use [CODE] tags
  3. #3

    Ext.Net Portlet toolbox Not working in Content page.

    Hi Rao,

    I am using a sample ext.net portlet. Where I need to show some updated content asynchronously. The directmethod for updating the gridpanel is not working. Is there anything I need to apply in the child page. By d way. I am using a content page and a master page. My Portlet control is in child page. It is working in HTML pages. But when I am taking it in content page it is not working.

    =========Sample code for html pages==============================
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
     
    <script runat="server">
        [DirectMethod()]
        public void ShowWindow(string portletID)
        {
        //Do some server work
     
        }
         
    </script>
    <!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 id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
    <ext:ResourceManager ID="ResourceManager1" runat="server" Theme="Slate" />
        <ext:Viewport ID="Viewport1" runat="server">
            <Items>
                <ext:BorderLayout ID="BorderLayout1" runat="server">
                    <Center MarginsSummary="5 5 5 5">
                        <ext:TabPanel ID="TabPanel1" runat="server" ActiveTabIndex="0" Title="Layout Example">
                            <Items>
                                <ext:Panel ID="Panel1" runat="server" Title="My Portal" Layout="Fit">
                                    <Items>
                                        <ext:Portal ID="Portal1" runat="server" Border="false" Layout="Column">
                                            <Items>
                                                <ext:PortalColumn ID="portalColumn1" runat="server" StyleSpec="padding:10px 10px 10px 10px"
                                                    ColumnWidth="1" Layout="Anchor">
                                                    <Items>
                                                        <ext:Portlet ID="portlet1" runat="server" Title="" Height="150" Closable="true">
                                                             
                                                            <Tools>
                                                                <ext:Tool Type="Gear" Handler="Ext.net.DirectMethods.ShowWindow(portlet1.id);">
                                                                </ext:Tool>
                                                            </Tools>
                                                        </ext:Portlet>
                                                        <ext:Portlet ID="portlet2" runat="server" Title="" Height="150" Closable="true">
                                                            <Tools>
                                                                <ext:Tool Type="Gear" Handler="Ext.net.DirectMethods.ShowWindow(portlet2.id);">
                                                                </ext:Tool>
                                                            </Tools>
                                                        </ext:Portlet>
                                                    </Items>
                                                </ext:PortalColumn>
                                            </Items>
                                        </ext:Portal>
                                    </Items>
                                </ext:Panel>
                            </Items>
                        </ext:TabPanel>
                    </Center>
                </ext:BorderLayout>
            </Items>
        </ext:Viewport>
        </form>
    </body>
    </html>


    ============Sample Code Not Working in Content Pages ===================

    <%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/LoginMain.Master" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="PoleWeb.RnD.WebForm2" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
     
    <script runat="server">
        [DirectMethod()]
        public void ShowWindow(string portletID)
        {
           //Some server operation
     
        }
     
     
    </script>
     
     
     
    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
    <ext:ResourceManager ID="ResourceManager1" runat="server" Theme="Slate" />
        <ext:Viewport ID="Viewport1" runat="server">
            <Items>
                <ext:BorderLayout ID="BorderLayout1" runat="server">
                    <Center MarginsSummary="5 5 5 5">
                        <ext:TabPanel ID="TabPanel1" runat="server" ActiveTabIndex="0" Title="Layout Example">
                            <Items>
                                <ext:Panel ID="Panel1" runat="server" Title="My Portal" Layout="Fit">
                                    <Items>
                                        <ext:Portal ID="Portal1" runat="server" Border="false" Layout="Column">
                                            <Items>
                                                <ext:PortalColumn ID="portalColumn1" runat="server" StyleSpec="padding:10px 10px 10px 10px"
                                                    ColumnWidth="1" Layout="Anchor">
                                                    <Items>
                                                        <ext:Portlet ID="portlet1" runat="server" Title="" Height="150" Closable="true">
                                                             
                                                            <Tools>
                                                                <ext:Tool Type="Gear" Handler="Ext.net.DirectMethods.ShowWindow(portlet1.id);">
                                                                </ext:Tool>
                                                            </Tools>
                                                        </ext:Portlet>
                                                        <ext:Portlet ID="portlet2" runat="server" Title="" Height="150" Closable="true">
                                                            <Tools>
                                                                <ext:Tool Type="Gear" Handler="Ext.net.DirectMethods.ShowWindow(portlet2.id);">
                                                                </ext:Tool>
                                                            </Tools>
                                                        </ext:Portlet>
                                                    </Items>
                                                </ext:PortalColumn>
                                            </Items>
                                        </ext:Portal>
                                    </Items>
                                </ext:Panel>
                            </Items>
                        </ext:TabPanel>
                    </Center>
                </ext:BorderLayout>
            </Items>
        </ext:Viewport>
    </asp:Content>
     
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    </asp:Content>
    =====================

    Thanks In Advance


    Regards
    Ashish

Similar Threads

  1. [CLOSED] Call directMethod in ext:window Content
    By supera in forum 2.x Legacy Premium Help
    Replies: 2
    Last Post: Feb 20, 2012, 6:51 PM
  2. [CLOSED] Updating window content
    By borja_cic in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Dec 15, 2011, 6:04 PM
  3. Replies: 0
    Last Post: Aug 21, 2011, 12:19 PM
  4. Replies: 1
    Last Post: Jul 23, 2009, 3:57 AM
  5. [CLOSED] Wrong Portlet's content after expanding
    By acrossdev in forum 1.x Legacy Premium Help
    Replies: 4
    Last Post: May 21, 2009, 12:18 PM

Tags for this Thread

Posting Permissions