[CLOSED] GridPanel with CheckboxSelectionModel: select and deselect records

  1. #1

    [CLOSED] GridPanel with CheckboxSelectionModel: select and deselect records

    Hi,
    I'm using GridPanel with CheckboxSelectionModel and PagingToolbar. I need to select some records on different pages and deselect previously selected. But I have several issue. sm.select() function selects records on current and next pages, but doesn't select on third. When I go to next page and return back to first, selection disappears. sm.deselectAll() doesn't clear selection on second page. The workaround for 1.X is not working here. Could you please suggest how I can resolve this.
    Thank you.
    <script runat="server">
        public class Company
        {
            public int ID { get; set; }
            public string Name { get; set; }
            public double Price { get; set; }
            public double Change { get; set; }
            public double PctChange { get; set; }
            public DateTime LastChange { get; set; }
        }    
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                this.BindData();
            }
        }
    
        private void BindData()
        {
             this.Store1.DataSource = this.GetData();
             this.Store1.DataBind();
        }
    
        private List<Company> GetData()
        {
            return new List<Company> 
            {
                new Company { ID = 1, Name = "3m Co", Price = 71.72, Change = 0.02, PctChange = 0.03, LastChange = DateTime.Now },
                new Company { ID = 2, Name = "Alcoa Inc", Price = 29.01, Change = 0.42, PctChange = 1.47, LastChange = DateTime.Now },
                new Company { ID = 3, Name = "Altria Group Inc", Price = 83.81, Change = 0.28, PctChange = 0.34, LastChange = DateTime.Now },
                new Company { ID = 4, Name = "American Express Company", Price = 52.55, Change = 0.01, PctChange = 0.02, LastChange = DateTime.Now },
                new Company { ID = 5, Name = "American International Group, Inc.", Price = 64.13, Change = 0.31, PctChange = 0.49, LastChange = DateTime.Now },
                new Company { ID = 6, Name = "AT&T Inc.", Price = 31.61, Change = -0.48, PctChange = -1.54, LastChange = DateTime.Now },
                new Company { ID = 7, Name = "Boeing Co.", Price = 75.43, Change = 0.53, PctChange = 0.71, LastChange = DateTime.Now },
                new Company { ID = 8, Name = "Caterpillar Inc.", Price = 67.27, Change = 0.92, PctChange = 1.39, LastChange = DateTime.Now },
                new Company { ID = 9, Name = "Citigroup, Inc.", Price = 49.37, Change = 0.02, PctChange = 0.04, LastChange = DateTime.Now },
                new Company { ID = 10, Name = "E.I. du Pont de Nemours and Company", Price = 40.48, Change = 0.51, PctChange = 1.28, LastChange = DateTime.Now },
                new Company { ID = 11, Name = "Exxon Mobil Corp", Price = 68.1, Change = -0.43, PctChange = -0.64, LastChange = DateTime.Now },
                new Company { ID = 12, Name = "General Electric Company", Price = 34.14, Change = -0.08, PctChange = -0.23, LastChange = DateTime.Now },
                new Company { ID = 13, Name = "General Motors Corporation", Price = 30.27, Change = 1.09, PctChange = 3.74, LastChange = DateTime.Now },
                new Company { ID = 14, Name = "Hewlett-Packard Co.", Price = 36.53, Change = -0.03, PctChange = -0.08, LastChange = DateTime.Now },
                new Company { ID = 15, Name = "Honeywell Intl Inc", Price = 38.77, Change = 0.05, PctChange = 0.13, LastChange = DateTime.Now },
                new Company { ID = 16, Name = "Intel Corporation", Price = 19.88, Change = 0.31, PctChange = 1.58, LastChange = DateTime.Now }
            };
        }
    </script>
    
    <!DOCTYPE html>
    
    <html>
    <head id="Head1" runat="server">
        <title>GridPanel</title>
        
        <script type="text/javascript">
            var selectRecords = function (num, grid) {
                var sm = grid.getSelectionModel(),
                    ids1 = [1, 4, 7],
                    ids2 = [2, 5, 8],
                    arrayId, idsToSelect = [];
    
                if (num === 1)
                    arrayId = ids1;
                else
                    arrayId = ids2;
    
                var i = 0, 
                    store = grid.getStore(),
                    records = [];
                for (; i < 3; i++) {
                    record = store.getById(arrayId[i]);
                    records.push(record);
                }
                sm.deselectAll(); 
                sm.select(records);
            };
                
        </script>
    </head>
    <body>
        <form id="Form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
            
            <ext:Store ID="Store1" runat="server"  RemotePaging="false" PageSize="3" >
            <Model>
            <ext:Model runat="server" IDProperty="ID">
            <Fields>
                <ext:ModelField Name="ID"/>
                <ext:ModelField Name="Name"/>
                </Fields>
                </ext:Model>
            </Model>
            <AutoLoadParams>
                    <ext:Parameter Name="start" Value="0" Mode="Raw" />
                    <ext:Parameter Name="limit" Value="3" Mode="Raw" />
            </AutoLoadParams>
            </ext:Store>
    
            <ext:GridPanel 
                runat="server" 
                ID="GridPanel1"  StoreID="Store1"
                Title="Employees" 
                Frame="true"
                Height="300" Width="500">
              
                <ColumnModel ID="ColumnModel1" runat="server">
                    <Columns>
                        <ext:Column runat="server" Text="ID" Width="60" DataIndex="ID" >
                        
                        </ext:Column>
                        <ext:Column runat="server" Text="Full Name" Width="150" DataIndex="Name">
                        </ext:Column>
                    </Columns>
                </ColumnModel>
                <View>
                    <ext:GridView ID="GridView1" runat="server" >
                    </ext:GridView>
                </View>
                <SelectionModel>
                    <ext:CheckboxSelectionModel ID="SelectionModel1" runat="server"  />
                </SelectionModel>
                <BottomBar>
                    <ext:PagingToolbar ID="PagingToolbar1" runat="server" DisplayInfo="true"    />
                </BottomBar>
                 <Buttons>
                    <ext:Button ID="Button2" runat="server" Text="Select 1">
                        <Listeners>
                        <Click Handler="selectRecords(1,#{GridPanel1} );" />
                        </Listeners>
                    </ext:Button>
                    <ext:Button ID="Button3" runat="server" Text="Select 2">
                        <Listeners>
                        <Click Handler="selectRecords(2,#{GridPanel1});" />
                        </Listeners>
                    </ext:Button>
                </Buttons>
            </ext:GridPanel>
            
        </form>
    </body>
    </html>
    Last edited by Daniil; Oct 12, 2012 at 6:04 AM. Reason: [CLOSED]
  2. #2
    Hi,

    We will investigate how to achieve this functionality in v2.
  3. #3
    Here is an example for v2.

    You might need to update to get the Select Button working.

    Example
    <%@ Page Language="C#" %>
     
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
                Store store = this.GridPanel1.GetStore();
                store.DataSource = new object[] 
                { 
                    new object[] { "test1" },
                    new object[] { "test2" },
                    new object[] { "test3" },
                    new object[] { "test4" },
                    new object[] { "test5" },
                    new object[] { "test6" },
                    new object[] { "test7" },
                    new object[] { "test8" },
                    new object[] { "test9" }
                };
                store.DataBind();
            }
        }
    </script>
    
    <!DOCTYPE html>
    
    <html>
    <head runat="server">
        <title>Ext.NET v2 Example</title>
    
        <script type="text/javascript">
            var select = function () {
                var grid = App.GridPanel1;
                    sm = grid.getSelectionModel();
    
                sm.selectedData = [{
                    recordID: "test2"
                }, {
                    recordID: "test5"
                }, {
                    recordID: "test8"
                }];
    
                grid.initSelectionData();       
            };
    
            var deselect = function () {
                var grid = App.GridPanel1;
                    sm = grid.getSelectionModel();
    
                grid.clearMemory();
                sm.deselectAll();
            };
        </script>
    </head>
    <body>
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server">
            <Store>
                <ext:Store runat="server" PageSize="3">
                    <Model>
                        <ext:Model runat="server" IDProperty="test">
                            <Fields>
                                <ext:ModelField Name="test" />
                            </Fields>
                        </ext:Model>
                    </Model>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column runat="server" Text="Test" DataIndex="test" />
                </Columns>
            </ColumnModel>
            <BottomBar>
                <ext:PagingToolbar runat="server" />
            </BottomBar>
            <SelectionModel>
                <ext:RowSelectionModel ID="RowSelectionModel1" runat="server" Mode="Multi" />
            </SelectionModel>
        </ext:GridPanel>
    
        <ext:Button runat="server" Text="Select three rows from different pages">
            <Listeners>
                <Click Fn="select" />
            </Listeners>
        </ext:Button>
    
        <ext:Button runat="server" Text="Deselect all">
            <Listeners>
                <Click Fn="deselect" />
            </Listeners>
        </ext:Button>
    </body>
    </html>
    Last edited by Daniil; Mar 27, 2013 at 5:27 AM.

Similar Threads

  1. [CLOSED] GridPanel with CheckboxSelectionModel: select records
    By Leonid_Veriga in forum 1.x Legacy Premium Help
    Replies: 4
    Last Post: Oct 09, 2012, 11:41 AM
  2. [CLOSED] GridPanel with CheckboxSelectionModel getting selected records issue
    By Leonid_Veriga in forum 2.x Legacy Premium Help
    Replies: 2
    Last Post: Sep 14, 2012, 5:30 AM
  3. Replies: 3
    Last Post: Sep 13, 2012, 8:52 AM
  4. Replies: 3
    Last Post: Jun 29, 2010, 2:54 PM
  5. Multi Select select/deselect
    By Palash in forum 1.x Help
    Replies: 2
    Last Post: Sep 18, 2009, 3:49 AM

Tags for this Thread

Posting Permissions