[CLOSED] not contain any records you can display a message centered on the grid

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    [CLOSED] not contain any records you can display a message centered on the grid

    If my grid does not contain any records you can display a message centered on the grid?
    As shown in the picture attached.
    Last edited by Daniil; Jun 04, 2011 at 9:20 AM. Reason: [CLOSED]
  2. #2
    Hi,

    Here you are.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void LoadData(object sender, DirectEventArgs e)
        {
            Store store = this.GridPanel1.GetStore();
            store.DataSource = new object[] 
            { 
                new object[] { "test11", "test12", "test13" },
                new object[] { "test12", "test22", "test23" },
                new object[] { "test13", "test32", "test33" }
            };
            store.DataBind();
        }
    
        protected void LoadNothing(object sender, DirectEventArgs e)
        {
            Store store = this.GridPanel1.GetStore();
            store.DataBind();
        }
    </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 runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var onLoad = function(store, records) {
                if (records.length === 0) {
                    GridPanel1.view.scroller.addClass("center");
                    GridPanel1.view.mainBody.update('Empty');
                } else {
                    GridPanel1.view.scroller.removeClass("center");
                }
            }
        </script>
    
        <style type="text/css">
            .center {
                vertical-align: middle;
                display: table-cell;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel 
            ID="GridPanel1" 
            runat="server" 
            Title="Grid" 
            Width="400" 
            Height="400">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test1" />
                                <ext:RecordField Name="test2" />
                                <ext:RecordField Name="test3" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                    <Listeners>
                        <Load Fn="onLoad" Delay="10" />
                    </Listeners>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test1" DataIndex="test1" />
                    <ext:Column Header="Test2" DataIndex="test2" />
                    <ext:Column Header="Test3" DataIndex="test3" />
                </Columns>
            </ColumnModel>
            <View>
                <ext:GridView runat="server"  ForceFit="true" ScrollOffset="0" />
            </View>
        </ext:GridPanel>
        <ext:Button runat="server" Text="Load data" OnDirectClick="LoadData" />
        <ext:Button runat="server" Text="Load nothing" OnDirectClick="LoadNothing" />
        </form>
    </body>
    </html>
  3. #3
    Quote Originally Posted by Daniil View Post
    Hi,

    Here you are.

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void LoadData(object sender, DirectEventArgs e)
            {
                Store1.DataSource = new object[] 
                { 
                    new object[] { "test11", "test12", "test13" },
                    new object[] { "test12", "test22", "test23" },
                    new object[] { "test13", "test32", "test33" }
                };
                Store1.DataBind();
            }
           
    
            protected void LoadNothing(object sender, DirectEventArgs e)
            {
                Store1.DataBind();
            }
    </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 runat="server">
        <title>Ext.Net Example</title>
    
        <script type="text/javascript">
            var onLoad = function(store, records) {
                if (records.length === 0) {
                    GridPanel1.view.scroller.addClass("center");
                    GridPanel1.view.mainBody.update('Empty');
                } else {
                    GridPanel1.view.scroller.removeClass("center");
                }
            }
        </script>
    
        <style type="text/css">
            .center {
                vertical-align: middle;
                display: table-cell;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel 
            ID="GridPanel1" 
            runat="server" 
            Title="Grid" 
            Width="400" 
            Height="400">
            <Store>
                <ext:Store runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test1" />
                                <ext:RecordField Name="test2" />
                                <ext:RecordField Name="test3" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                    <Listeners>
                        <Load Fn="onLoad" Delay="10" />
                    </Listeners>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test1" DataIndex="test1" />
                    <ext:Column Header="Test2" DataIndex="test2" />
                    <ext:Column Header="Test3" DataIndex="test3" />
                </Columns>
            </ColumnModel>
            <View>
                <ext:GridView runat="server"  ForceFit="true" ScrollOffset="0" />
            </View>
        </ext:GridPanel>
        <ext:Button runat="server" Text="Load data" OnDirectClick="LoadData" />
        <ext:Button runat="server" Text="Load nothing" OnDirectClick="LoadNothing" />
        </form>
    </body>
    </html>
    I would ride like the example I posted below.
    How can I pass the records on the function?

    <%@ Page Language="C#" %>
     
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
     
    <script runat="server">
    protected void LoadData(object sender, DirectEventArgs e)
            {
                Store1.DataSource = new object[] 
                { 
                    new object[] { "test11", "test12", "test13" },
                    new object[] { "test12", "test22", "test23" },
                    new object[] { "test13", "test32", "test33" }
                };
                Store1.DataBind();
            }
           
    
            protected void LoadNothing(object sender, DirectEventArgs e)
            {
                Store1.DataBind();
            }
    </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>Ext.Net Example</title>
     
        <script type="text/javascript">
            var onLoadGrid = function (store, records, grid) {
                if (records.length === 0) {
                    grid.view.scroller.addClass("center");
                    grid.view.mainBody.update('Sem registros para exibir');
                } else {
                    grid.view.scroller.removeClass("center");
                }
            }
        </script>
     
        <style type="text/css">
            .center {
                vertical-align: middle;
                display: table-cell;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ResourceManager ID="ResourceManager1" runat="server" />
        <ext:GridPanel
            ID="GridPanel1"
            runat="server"
            Title="Grid"
            Width="400"
            Height="400">
            <Store>
                <ext:Store ID="Store1" runat="server">
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test1" />
                                <ext:RecordField Name="test2" />
                                <ext:RecordField Name="test3" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                    <Listeners>
                        <Load Fn="onLoadGrid(#{Store1}, ???, #{GridPanel1})" Delay="10" />
                    </Listeners>
                </ext:Store>
            </Store>
            <ColumnModel ID="ColumnModel1" runat="server">
                <Columns>
                    <ext:Column Header="Test1" DataIndex="test1" />
                    <ext:Column Header="Test2" DataIndex="test2" />
                    <ext:Column Header="Test3" DataIndex="test3" />
                </Columns>
            </ColumnModel>
            <View>
                <ext:GridView ID="GridView1" runat="server"   />
            </View>
        </ext:GridPanel>
        <ext:Button ID="Button1" runat="server" Text="Load data" OnDirectClick="LoadData" />
        <ext:Button ID="Button2" runat="server" Text="Load nothing" OnDirectClick="LoadNothing" />
        </form>
    </body>
    </html>
  4. #4
    Quote Originally Posted by majunior View Post
    I would ride like the example I posted below.
    How can I pass the records on the function?
    Please use .Handler.
    <Load Handler="onLoadGrid(store, records, #{GridPanel1})" Delay="10" />
  5. #5
    Quote Originally Posted by Daniil View Post
    Please use .Handler.
    <Load Handler="onLoadGrid(store, records, #{GridPanel1})" Delay="10" />
    I have a grid in a tab segunta a tab panel.
    but while executing the page gives error that view.scroller is null or not an object.
    If I put the DeferredRender = "false" in the TabPanel, it works.
    But I can not use the DeferredRender = "False" because it interferes with the rendering of my custom controls.
    Any suggestions?
  6. #6
    Do you load a grid from another tab? Well, I'd suggest you to avoid this behavior.

    If you can't avoid, then you can try to attach a respective Viewready listener for the grid.
  7. #7
    Here is another solution which I like more.

    Example
    <%@ Page Language="C#" %>
     
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
     
    <script runat="server">
        protected void LoadData(object sender, DirectEventArgs e)
        {
            Store store = this.GridPanel1.GetStore();
            store.DataSource = new object[] 
            { 
                new object[] { "test11", "test12", "test13" },
                new object[] { "test12", "test22", "test23" },
                new object[] { "test13", "test32", "test33" }
            };
            store.DataBind();
        }
     
        protected void LoadNothing(object sender, DirectEventArgs e)
        {
            Store store = this.GridPanel1.GetStore();
            store.DataBind();
        }
    </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 runat="server">
        <title>Ext.Net Example</title>
     
        <script type="text/javascript">
            var onLoad = function(store, records) {
                if (records.length === 0) {
                    GridPanel1.body.mask('Empty');
                } else {
                    GridPanel1.body.unmask();
                }
            }
        </script>
    </head>
    <body>
        <form runat="server">
            <ext:ResourceManager runat="server" />
            <ext:GridPanel
                ID="GridPanel1"
                runat="server"
                Title="Grid"
                Width="400"
                Height="400">
                <Store>
                    <ext:Store runat="server">
                        <Reader>
                            <ext:ArrayReader>
                                <Fields>
                                    <ext:RecordField Name="test1" />
                                    <ext:RecordField Name="test2" />
                                    <ext:RecordField Name="test3" />
                                </Fields>
                            </ext:ArrayReader>
                        </Reader>
                        <Listeners>
                            <Load Fn="onLoad" Delay="10" />
                        </Listeners>
                    </ext:Store>
                </Store>
                <ColumnModel runat="server">
                    <Columns>
                        <ext:Column Header="Test1" DataIndex="test1" />
                        <ext:Column Header="Test2" DataIndex="test2" />
                        <ext:Column Header="Test3" DataIndex="test3" />
                    </Columns>
                </ColumnModel>
                <View>
                    <ext:GridView runat="server"  ForceFit="true" ScrollOffset="0" />
                </View>
            </ext:GridPanel>
            <ext:Button runat="server" Text="Load data" OnDirectClick="LoadData" />
            <ext:Button runat="server" Text="Load nothing" OnDirectClick="LoadNothing" />
        </form>
    </body>
    </html>

Similar Threads

  1. Replies: 3
    Last Post: Jun 22, 2011, 7:37 PM
  2. Replies: 10
    Last Post: May 13, 2011, 2:30 PM
  3. Replies: 0
    Last Post: Mar 21, 2011, 3:55 PM
  4. Replies: 1
    Last Post: Jul 07, 2010, 8:00 AM
  5. Replies: 6
    Last Post: Feb 22, 2010, 1:18 AM

Tags for this Thread

Posting Permissions