[CLOSED] GridPanel inside TabPanel - any alternative to DeferredRender="false" to get Grid to render?

  1. #1

    [CLOSED] GridPanel inside TabPanel - any alternative to DeferredRender="false" to get Grid to render?

    Hi,

    If I have a simple array grid in an inactive tab, when that tab is activated, the grid renders okay, except its pager is empty (not initialized correctly).

    I find that on the containing TabPanel, I have to set DeferredRender="false". While this works, I suppose if you have a TabPanel with lots of items in it it might be a bit inefficient as I think it renders ALL items.

    Just wanted to ask if there is an alternative I may have missed?

    Here is a working example (add DeferredRender="false" to the TabPanel for the paging on the GridPanel to work)

    <%@ Page Language="C#" %>
    <%@ Import Namespace="Ext.Net" %>
    
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Store1.DataSource = this.Data;
            this.Store1.DataBind();
        }
    
    
        private object[] Data
        {
            get
            {
                return new object[]
                {
                    new object[] { "3m Co", 71.72, 0.02, 0.03, "9/1 12:00am" },
                    new object[] { "Alcoa Inc", 29.01, 0.42, 1.47, "9/1 12:00am" },
                    new object[] { "Altria Group Inc", 83.81, 0.28, 0.34, "9/1 12:00am" },
                    new object[] { "American Express Company", 52.55, 0.01, 0.02, "9/1 12:00am" },
                    new object[] { "American International Group, Inc.", 64.13, 0.31, 0.49, "9/1 12:00am" },
                    new object[] { "AT&T Inc.", 31.61, -0.48, -1.54, "9/1 12:00am" },
                    new object[] { "Boeing Co.", 75.43, 0.53, 0.71, "9/1 12:00am" },
                    new object[] { "Caterpillar Inc.", 67.27, 0.92, 1.39, "9/1 12:00am" },
                    new object[] { "Citigroup, Inc.", 49.37, 0.02, 0.04, "9/1 12:00am" },
                    new object[] { "E.I. du Pont de Nemours and Company", 40.48, 0.51, 1.28, "9/1 12:00am" },
                    new object[] { "Exxon Mobil Corp", 68.1, -0.43, -0.64, "9/1 12:00am" },
                    new object[] { "General Electric Company", 34.14, -0.08, -0.23, "9/1 12:00am" },
                    new object[] { "General Motors Corporation", 30.27, 1.09, 3.74, "9/1 12:00am" },
                    new object[] { "Hewlett-Packard Co.", 36.53, -0.03, -0.08, "9/1 12:00am" },
                    new object[] { "Honeywell Intl Inc", 38.77, 0.05, 0.13, "9/1 12:00am" },
                    new object[] { "Intel Corporation", 19.88, 0.31, 1.58, "9/1 12:00am" },
                    new object[] { "International Business Machines", 81.41, 0.44, 0.54, "9/1 12:00am" },
                    new object[] { "Johnson & Johnson", 64.72, 0.06, 0.09, "9/1 12:00am" },
                    new object[] { "JP Morgan & Chase & Co", 45.73, 0.07, 0.15, "9/1 12:00am" },
                    new object[] { "McDonald\"s Corporation", 36.76, 0.86, 2.40, "9/1 12:00am" },
                    new object[] { "Merck & Co., Inc.", 40.96, 0.41, 1.01, "9/1 12:00am" },
                    new object[] { "Microsoft Corporation", 25.84, 0.14, 0.54, "9/1 12:00am" },
                    new object[] { "Pfizer Inc", 27.96, 0.4, 1.45, "9/1 12:00am" },
                    new object[] { "The Coca-Cola Company", 45.07, 0.26, 0.58, "9/1 12:00am" },
                    new object[] { "The Home Depot, Inc.", 34.64, 0.35, 1.02, "9/1 12:00am" },
                    new object[] { "The Procter & Gamble Company", 61.91, 0.01, 0.02, "9/1 12:00am" },
                    new object[] { "United Technologies Corporation", 63.26, 0.55, 0.88, "9/1 12:00am" },
                    new object[] { "Verizon Communications", 35.57, 0.39, 1.11, "9/1 12:00am" },
                    new object[] { "Wal-Mart Stores, Inc.", 45.45, 0.73, 1.63, "9/1 12:00am" }
                };
            }
        }
    </script>
    
    
    <!DOCTYPE html>
    <html>
        <head runat="server">
            <title>Title</title>
        </head>
        <body>
            <ext:ResourceManager runat="server" />
            <ext:TabPanel runat="server" Width="400" Height="300">
                <Defaults>
                    <ext:Parameter Name="border" value="false" Mode="Raw" />
                </Defaults>
                <Items>
                    <ext:Panel runat="server" Html="<p>First tab</p>" Title="Panel as tab" Icon="Application" BodyPadding="5" />
                    <ext:GridPanel runat="server" Title="Array Grid">
                        <Store>
                            <ext:Store ID="Store1" runat="server" PageSize="10">
                                <Model>
                                    <ext:Model runat="server">
                                        <Fields>
                                            <ext:ModelField Name="company" />
                                            <ext:ModelField Name="price" Type="Float" />
                                        </Fields>
                                    </ext:Model>
                                </Model>
                            </ext:Store>
                        </Store>
                        <ColumnModel>
                            <Columns>
                                <ext:Column runat="server" Text="Company" DataIndex="company" Flex="1" />
                                <ext:Column runat="server" Text="Price" DataIndex="price" />
                            </Columns>            
                        </ColumnModel>       
                        <BottomBar>
                            <ext:PagingToolbar runat="server" />
                        </BottomBar>
                    </ext:GridPanel>
                </Items>
            </ext:TabPanel>
        </body>
    </html>
    Thanks!
    Last edited by Daniil; Jul 04, 2012 at 11:04 AM. Reason: [CLOSED]
  2. #2
    Hi,

    I would set up
    AutoLoad="false"
    for the Store and
    <Activate Handler="this.getStore().load();" />
    listener for the GridPanel.

    Generally, it looks a bug. We don't update the PagingToolbar fields if that PagingToolbar is not rendered. Though, I think, they should be updated to be rendered correctly in your case. I will discuss it with Vladimir.

    Anyways, I think, it's a good practice to load Stores only when it needs.
    Last edited by Daniil; Jul 04, 2012 at 11:03 AM.
  3. #3
    Actually, now that you mention it that was dead obvious :) Sorry to waste your time!

    You can mark this as closed.
  4. #4
    Quote Originally Posted by anup View Post
    Actually, now that you mention it that was dead obvious :) Sorry to waste your time!

    You can mark this as closed.
    Actually, I feel this is a defect. You shouldn't have to manually make the call to .load(). It's something we need to investigate and hopefully fix.
    Geoffrey McGill
    Founder
  5. #5
    It is fixed in Ext.Net 2.1
  6. #6
    Great stuff. One question though. You mention it is fixed in 2.1 - in a book chapter on tabs I am using a very similar example to this. Can I assume 2.1 (or later) will actually be the first release of 2.x so that I can use this in the chapter accordingly?

    Thanks!
  7. #7
    Quote Originally Posted by anup View Post
    Great stuff. One question though. You mention it is fixed in 2.1 - in a book chapter on tabs I am using a very similar example to this. Can I assume 2.1 (or later) will actually be the first release of 2.x so that I can use this in the chapter accordingly?

    Thanks!
    The 2.0.0.final will be the first official release of the 2.x code-base, which is scheduled to occur in approximately three (3) weeks. The 2.1.0 release will follow the 2.0.0 release.

    I'll discuss with Vladimir about promoting this fix into the /2.0 branch, which will then make it into the upcoming 2.0.0.rc2 release (and henceforth 2.0.0.final). It's a relatively simple fix, but we've been in a basic lock-down mode of the /2.0 branch awaiting the final release.

    The 2.1.0 release will follow shortly after the 2.0.0.final release. There's lots of new ASP.NET MVC support being added to 2.1.0, so we don't want that to be stashed away for long.

    Either way, this fix will make it into production code long before you publish. You will not have to rely on the <Activate> fix/work-around posted above.

    Hope this helps.
    Geoffrey McGill
    Founder
  8. #8
    Ok. Thanks for clarification.

Similar Threads

  1. Replies: 10
    Last Post: Jul 27, 2012, 2:05 PM
  2. Replies: 1
    Last Post: Jun 26, 2012, 11:29 AM
  3. [CLOSED] Hidden="true" behaves as Visible="false"
    By marco.morreale in forum 2.x Legacy Premium Help
    Replies: 5
    Last Post: May 28, 2012, 3:17 PM
  4. Replies: 1
    Last Post: Apr 09, 2012, 11:42 AM
  5. Replies: 0
    Last Post: Jan 18, 2011, 3:53 AM

Posting Permissions