[CLOSED] Get a Value from a Store Control

  1. #1

    [CLOSED] Get a Value from a Store Control

    Hi Community !

    I want to know if is feasible, get the value from a Store Control linked to GridPanel

    I implemented the following example to illustrate my problem

    
    <%@ Page Language="C#" AutoEventWireup="true" %>
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!X.IsAjaxRequest)
            {
            }
        }
    
        protected void Button1_Click(object sender, DirectEventArgs e)
        {
            object theObject = new
            {
                Column1 = TextField1.Text,
                Column2 = TextField2.Text,
                Column3 = TextField3.Text,
            };
    
            Store1.Add(theObject);
    
            FormPanel1.Reset();
        }
    
        protected void Button2_Click(object sender, DirectEventArgs e)
        {
            int intIndice = int.Parse(Hidden1.Text);
    
            Store1.GetAt(intIndice).BeginEdit();
    
            Store1.GetAt(intIndice).Set("Column1", (object)TextField1.Text);
            Store1.GetAt(intIndice).Set("Column2", (object)TextField2.Text);
            Store1.GetAt(intIndice).Set("Column3", (object)TextField3.Text);
    
            Store1.GetAt(intIndice).Commit();
            
            Store1.GetAt(intIndice).EndEdit();
    
            FormPanel1.Reset();
        }
        
        protected void RowSelectionModel1_OnCellSelect(object sender, DirectEventArgs e)
        {
            try
            {
                FormPanel1.Reset();
    
                Hidden1.Text = e.ExtraParams["Indice"].ToString();
                
                var recordData = JSON.Deserialize<Dictionary<string, object>>(e.ExtraParams["recordData"]);
    
                object theobject = new
                {
                    Column1 = recordData["Column1"],
                    Column2 = recordData["Column2"],
                    Column3 = recordData["Column3"]
                };
    
                FormPanel1.SetValues(theobject);
            }
            catch (Exception)
            {
            }
        }    
    </script>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
    
            <ext:Viewport ID="Viewport1" runat="server" Layout="BorderLayout" DefaultAnchor="90%">
                <Items>
                    <ext:FormPanel ID="FormPanel1" runat="server" 
                            Region="North"
                            Margins="5 5 5 5"
                            BodyPadding="5"
                            Frame="true">
                        <Listeners>
                            <ValidityChange Handler="#{Button1}.setDisabled(!valid);" />
                        </Listeners>
                        <Items>
                            <ext:Hidden ID="Hidden1" runat="server" />
                            <ext:TextField ID="TextField1" runat="server" FieldLabel="Column1" AllowBlank="false" Name="Column1" />
                            <ext:TextField ID="TextField2" runat="server" FieldLabel="Column2" AllowBlank="false" Name="Column2" />
                            <ext:TextField ID="TextField3" runat="server" FieldLabel="Column3" AllowBlank="false" Name="Column3" />
                        </Items>
                        <DockedItems>
                            <ext:Toolbar ID="Toolbar1" runat="server" Dock="Top" >
                                <Items>
                                    <ext:ToolbarFill />                                
                                    <ext:Button ID="Button1" runat="server" Text="Add" Icon="Add" Disabled="true">
                                        <DirectEvents>
                                            <Click OnEvent="Button1_Click"></Click>
                                        </DirectEvents>
                                    </ext:Button>
                                    <ext:Button ID="Button2" runat="server" Text="Save" Icon="Disk" Disabled="true" >
                                        <DirectEvents>
                                            <Click OnEvent="Button2_Click"></Click>
                                        </DirectEvents>
                                    </ext:Button>
                                </Items>
                            </ext:Toolbar>
    
                        </DockedItems>
                    </ext:FormPanel>
                    
                    <ext:GridPanel ID="GridPanel1" runat="server"
                                    Height="250" 
                                    Width="400"
                                    Title="GridPanel1"
                                    ForceFit="true"
                                    Border="false"
                                    Margins="0 5 5 5"
                                    Frame="true">
                                <Store>
                                    <ext:Store ID="Store1" runat="server">
                                        <Model>
                                            <ext:Model ID="Model1" runat="server">
                                                <Fields>
                                                    <ext:ModelField Name="Column1" Type="String"></ext:ModelField>
                                                    <ext:ModelField Name="Column2" Type="String"></ext:ModelField>
                                                    <ext:ModelField Name="Column3" Type="String"></ext:ModelField>
                                                </Fields>
                                            </ext:Model>                                            
                                        </Model>
                                        <Listeners>
                                            <DataChanged Handler="#{Button2}.setDisabled(#{GridPanel1}.getStore().getCount() > 0 ? false : true);" />
                                        </Listeners>
                                    </ext:Store>
                                </Store>
                                      
                                <ColumnModel ID="ColumnModel1" runat="server">
                                    <Columns>
                                        <ext:Column ID="Column1" runat="server" Text="Column1" DataIndex="Column1"></ext:Column>
                                        <ext:Column ID="Column2" runat="server" Text="Column2" DataIndex="Column2" ></ext:Column>
                                        <ext:Column ID="Column3" runat="server" Text="Column3" DataIndex="Column3" ></ext:Column>
                                    </Columns>
                                </ColumnModel>
    
                                <SelectionModel>
                                    <ext:RowSelectionModel ID="RowSelectionModel1" runat="server">
                                        <DirectEvents>                                
                                            <Select OnEvent="RowSelectionModel1_OnCellSelect">
                                                <ExtraParams>
                                                    <ext:Parameter Name="Indice" Value="index" Mode="Raw"></ext:Parameter>
                                                     <ext:Parameter Name="recordData" Value="record.data" Mode="Raw" />
                                                </ExtraParams>
                                                <EventMask ShowMask="true" Msg="Displaying ..." MinDelay="1000" />
                                            </Select>                             
                                        </DirectEvents>
                                    </ext:RowSelectionModel>
                                </SelectionModel>
                            </ext:GridPanel>
                </Items>
            </ext:Viewport>
    
        </form>
    </body>
    </html>
    I accept suggestions ideas or comments

    Regards.
    Last edited by Daniil; Sep 11, 2015 at 7:58 PM. Reason: [CLOSED]
  2. #2
    Hi @opendat2000,

    A Store's data is not sent to server automatically. Here is an explanation why.

    You can send a record's data via ExtraParams
    <ext:RowSelectionModel ID="RowSelectionModel1" runat="server">
        <DirectEvents>                                
            <Select OnEvent="RowSelectionModel1_OnCellSelect">
                <ExtraParams>
                    <ext:Parameter Name="recordData" Value="record.data" Mode="Raw" />
                </ExtraParams>
            </Select>                             
        </DirectEvents>
    </ext:RowSelectionModel>
    and handle it on server in this way
    protected void RowSelectionModel1_OnCellSelect(object sender, DirectEventArgs e)
    {
        var recordData = JSON.Deserialize<Dictionary<string, object>>(e.ExtraParams["recordData"]);
    
        object theobject = new
        {
            Column1 = recordData["Column1"],
            Column2 = recordData["Column2"],
            Column3 = recordData["Column3"]
        };
    
        FormPanel1.SetValues(theobject);
    }
    By the way, do you really need a server request for this functionality? It looks to be an overhead and could be done on client side without a server request.
    <ext:RowSelectionModel runat="server">
        <Listeners>
            <Select Handler="App.FormPanel1.getForm().loadRecord(record);" />
        </Listeners>
    </ext:RowSelectionModel>
    The example with using .loadRecord() and also a useful .updateRecord() you can look at here:
    https://examples3.ext.net/#/GridPanel/Update/AutoSave
  3. #3
    Hi Daniil,

    Thanks a lot for your reply, the code line you proposed worked perfectly.

    Please, look the code

    
         protected void Button2_Click(object sender, DirectEventArgs e)
        {
            int intIndice = int.Parse(Hidden1.Text);
    
            Store1.GetAt(intIndice).BeginEdit();
    
            Store1.GetAt(intIndice).Set("Column1", (object)TextField1.Text);
            Store1.GetAt(intIndice).Set("Column2", (object)TextField2.Text);
            Store1.GetAt(intIndice).Set("Column3", (object)TextField3.Text);
    
            Store1.GetAt(intIndice).Commit();
            Store1.GetAt(intIndice).EndEdit();
    
            FormPanel1.Reset();
        }
    Please close the thread.

    Note: I modified the code, to provide in the community.

    Saludos
    Mauricio.

Similar Threads

  1. [CLOSED] How can i set the timeout to a store in a user control?
    By JCarlosF in forum 2.x Legacy Premium Help
    Replies: 19
    Last Post: May 14, 2013, 2:24 AM
  2. Replies: 1
    Last Post: Nov 01, 2010, 9:00 PM
  3. Problem with store and user control
    By pierusch in forum 1.x Help
    Replies: 0
    Last Post: Jun 04, 2010, 10:14 PM
  4. load control without store
    By Kaido in forum 1.x Help
    Replies: 1
    Last Post: May 05, 2009, 3:56 PM
  5. [CLOSED] Abstract objects in a Store control. Is this possible?
    By conman in forum 1.x Legacy Premium Help
    Replies: 4
    Last Post: Feb 04, 2009, 9:05 AM

Posting Permissions