[CLOSED] GridPanel DataSourceProxy

Page 1 of 2 12 LastLast
  1. #1

    [CLOSED] GridPanel DataSourceProxy

    Hello,

    The below example demonstrates an issue I'm currently experiencing with binding a list to a GridPanel using a DataSourceProxy.

    Example.aspx:
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
        protected void Users_RefreshData(object sender, StoreRefreshDataEventArgs e)
        {
            List<object[]> result = new List<object[]>();
    
            result.Add(new object[] { "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com" });
            result.Add(new object[] { "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com" });
            result.Add(new object[] { "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com" });
            result.Add(new object[] { "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com" });
            result.Add(new object[] { "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com" });
    
            Users.DataSource = result;
            Users.DataBind();
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Example Page</title>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ScriptManager runat="server" />
    
                    <ext:Store ID="Users"
                        runat="server"
                        AutoLoad="true"
                        OnRefreshData="Users_RefreshData"
                        RemoteSort="true">
                        <AutoLoadParams>
                            <ext:Parameter Name="start" Value="={0}" />
                            <ext:Parameter Name="limit" Value="={3}" />
                        </AutoLoadParams>
                        <Proxy>
                            <ext:DataSourceProxy />
                        </Proxy>
                        <Reader>
                            <ext:JsonReader ReaderID="Username">
                                <Fields>
                                    <ext:RecordField Name="LastName" />
                                    <ext:RecordField Name="FirstName" />
                                    <ext:RecordField Name="Username" />
                                    <ext:RecordField Name="Email" />
                                </Fields>
                            </ext:JsonReader>
                        </Reader>
                    </ext:Store>
                    <ext:Panel ID="Panel1" runat="server"
                        Title="Administration Users">
                        <Body>
                            <ext:FitLayout runat="server">
                                <ext:GridPanel ID="dgUsers"
                                    runat="server"
                                    StoreID="Users"
                                    AutoExpandColumn="Email"
                                    AutoHeight="true"
                                    AutoWidth="true"
                                    Border="false">
                                    <ColumnModel>
                                        <Columns>
                                            <ext:Column ColumnID="LastName" Header="Last Name" Width="200" />
                                            <ext:Column ColumnID="Username" Header="Username" Width="200" />
                                            <ext:Column ColumnID="Email" Header="Email" />
                                        </Columns>
                                    </ColumnModel>
                                    <BottomBar>
                                        <ext:PagingToolbar ID="PagingUsers"
                                            runat="server"
                                            StoreID="Users"
                                            PageSize="25" />
                                    </BottomBar>
                                </ext:GridPanel>
                            </ext:FitLayout>
                        </Body>
                    </ext:Panel>
        </form>
    </body>
    </html>
    Replication steps:

    1. Load page
    2. Notice no results?

    Cheers,
    Timothy
  2. #2

    RE: [CLOSED] GridPanel DataSourceProxy

    Hi,


    You can't bind List<object[]>

    Each element List<object[]> is object[]
    object[] doesn't contain properties LastName, FirstName and etc


    Use ArrayReader and bind object[][] or List must contains elements with properties defined as reader fields


  3. #3

    RE: [CLOSED] GridPanel DataSourceProxy

    Thanks vlad,

    I used your suggestion and made the following changes which still fail:

    Example.aspx:
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
        public class User
        {
            public User(string lastName, string firstName, string username, string email)
            {
                LastName = lastName;
                FirstName = firstName;
                Username = username;
                Email = email;
            }
            public string LastName { get; set; }
            public string FirstName { get; set; }
            public string Username { get; set; }
            public string Email { get; set; }
        }
        
        protected void Users_RefreshData(object sender, StoreRefreshDataEventArgs e)
        {
            List<User> result = new List<User>();
    
            result.Add(new User("Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User("Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User("Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User("Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User("Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
    
            Users.DataSource = result;
            Users.DataBind();
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Example Page</title>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ScriptManager runat="server" />
    
                    <ext:Store ID="Users"
                        runat="server"
                        AutoLoad="true"
                        OnRefreshData="Users_RefreshData"
                        RemoteSort="true">
                        <AutoLoadParams>
                            <ext:Parameter Name="start" Value="={0}" />
                            <ext:Parameter Name="limit" Value="={3}" />
                        </AutoLoadParams>
                        <Proxy>
                            <ext:DataSourceProxy />
                        </Proxy>
                        <Reader>
                            <ext:ArrayReader ReaderID="Username">
                                <Fields>
                                    <ext:RecordField Name="LastName" />
                                    <ext:RecordField Name="FirstName" />
                                    <ext:RecordField Name="Username" />
                                    <ext:RecordField Name="Email" />
                                </Fields>
                            </ext:ArrayReader>
                        </Reader>
                    </ext:Store>
                    <ext:Panel ID="Panel1" runat="server"
                        Title="Administration Users">
                        <Body>
                            <ext:FitLayout runat="server">
                                <ext:GridPanel ID="dgUsers"
                                    runat="server"
                                    StoreID="Users"
                                    AutoExpandColumn="Email"
                                    AutoHeight="true"
                                    AutoWidth="true"
                                    Border="false">
                                    <ColumnModel>
                                        <Columns>
                                            <ext:Column ColumnID="LastName" Header="Last Name" Width="200" />
                                            <ext:Column ColumnID="Username" Header="Username" Width="200" />
                                            <ext:Column ColumnID="Email" Header="Email" />
                                        </Columns>
                                    </ColumnModel>
                                    <BottomBar>
                                        <ext:PagingToolbar ID="PagingUsers"
                                            runat="server"
                                            StoreID="Users"
                                            PageSize="25" />
                                    </BottomBar>
                                </ext:GridPanel>
                            </ext:FitLayout>
                        </Body>
                    </ext:Panel>
        </form>
    </body>
    </html>
    Cheers,
    Timothy
  4. #4

    RE: [CLOSED] GridPanel DataSourceProxy

    Hi Timothy,

    May be I uncleared understood.


    If you set ArrayReader then you need use obect[][], string[][] and etc
    If you use collection with type as enumeration element which contains properties which defined as fields then use JsonReader



    Use ArrayReader only if you bind object[][]
    For your last example you need use JsonReader*



  5. #5

    RE: [CLOSED] GridPanel DataSourceProxy

    Thanks vlad, if you use the JsonReader on my last example it still doesn't work.

    Cheers,
    Timothy
  6. #6

    RE: [CLOSED] GridPanel DataSourceProxy

    The ReaderID property must have unique valuesFor example add number to user name


    ** * * *result.Add(new User("Vogelsang", "Timothy", "tvogelsang1", "tvogelsang@gmail.com"));
    ** * * *result.Add(new User("Vogelsang", "Timothy", "tvogelsang2", "tvogelsang@gmail.com"));
    ** * * *result.Add(new User("Vogelsang", "Timothy", "tvogelsang3", "tvogelsang@gmail.com"));
    ** * * *result.Add(new User("Vogelsang", "Timothy", "tvogelsang4", "tvogelsang@gmail.com"));
    ** * * *result.Add(new User("Vogelsang", "Timothy", "tvogelsang5", "tvogelsang@gmail.com"));*




  7. #7

    RE: [CLOSED] GridPanel DataSourceProxy

    Thanks vlad, that still doesn't appear to work?

    Example.aspx:
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Collections.Generic" %>
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
        public class User
        {
            public User(int id, string lastName, string firstName, string username, string email)
            {
                Id = id;
                LastName = lastName;
                FirstName = firstName;
                Username = username;
                Email = email;
            }
            public int Id { get; set; }
            public string LastName { get; set; }
            public string FirstName { get; set; }
            public string Username { get; set; }
            public string Email { get; set; }
        }
        
        protected void Users_RefreshData(object sender, StoreRefreshDataEventArgs e)
        {
            List<User> result = new List<User>();
    
            result.Add(new User(1, "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User(2, "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User(3, "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User(4, "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
            result.Add(new User(5, "Vogelsang", "Timothy", "tvogelsang", "tvogelsang@gmail.com"));
    
            Users.DataSource = result;
            Users.DataBind();
        }
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Example Page</title>
    </head>
    <body>
        <form id="Form1" runat="server">
        <ext:ScriptManager runat="server" />
    
                    <ext:Store ID="Users"
                        runat="server"
                        AutoLoad="true"
                        OnRefreshData="Users_RefreshData"
                        RemoteSort="true">
                        <AutoLoadParams>
                            <ext:Parameter Name="start" Value="={0}" />
                            <ext:Parameter Name="limit" Value="={3}" />
                        </AutoLoadParams>
                        <Proxy>
                            <ext:DataSourceProxy />
                        </Proxy>
                        <Reader>
                            <ext:JsonReader ReaderID="Id">
                                <Fields>
                                    <ext:RecordField Name="Id" />
                                    <ext:RecordField Name="LastName" />
                                    <ext:RecordField Name="FirstName" />
                                    <ext:RecordField Name="Username" />
                                    <ext:RecordField Name="Email" />
                                </Fields>
                            </ext:JsonReader>
                        </Reader>
                    </ext:Store>
                        <ext:GridPanel ID="dgUsers"
                            runat="server"
                            StoreID="Users"
                            AutoExpandColumn="Email"
                            AutoHeight="true"
                            AutoWidth="true"
                            Border="false">
                            <ColumnModel>
                                <Columns>
                                    <ext:Column ColumnID="LastName" Header="Last Name" Width="200" />
                                    <ext:Column ColumnID="Username" Header="Username" Width="200" />
                                    <ext:Column ColumnID="Email" Header="Email" />
                                </Columns>
                            </ColumnModel>
                            <BottomBar>
                                <ext:PagingToolbar ID="PagingUsers"
                                    runat="server"
                                    StoreID="Users"
                                    PageSize="25" />
                            </BottomBar>
                        </ext:GridPanel>
    
        </form>
    </body>
    </html>
    Cheers,
    Timothy
  8. #8

    RE: [CLOSED] GridPanel DataSourceProxy

    Hi,

    Define DataIndex for each Column
    *
  9. #9

    RE: [CLOSED] GridPanel DataSourceProxy

    Hello vladimir, I defined a DataIndex for each column and its still not working

    Example.aspx:
                            <ColumnModel>
                                <Columns>
                                    <ext:Column DataIndex="LastName" ColumnID="LastName" Header="Last Name" Width="200" />
                                    <ext:Column DataIndex="Username" ColumnID="Username" Header="Username" Width="200" />
                                    <ext:Column DataIndex="Email" ColumnID="Email" Header="Email" />
                                </Columns>
                            </ColumnModel>
    Hope you're not sick of me yet.

    Cheers,
    Timothy
  10. #10

    RE: [CLOSED] GridPanel DataSourceProxy

    Do you have any exception?For me your example works fine
    *
Page 1 of 2 12 LastLast

Similar Threads

  1. DataSourceProxy Export
    By simonmicheal in forum 1.x Help
    Replies: 3
    Last Post: Oct 21, 2009, 11:26 AM
  2. can not get DataSourceProxy to work
    By styx in forum 1.x Help
    Replies: 2
    Last Post: Jan 31, 2009, 12:19 PM

Posting Permissions