[CLOSED] Field in GridPanel's field loses its value after change and click in another field

  1. #1

    [CLOSED] Field in GridPanel's field loses its value after change and click in another field

    I have an editable GridPanel, I can change the value of an editable field and update it in the database correctly but
    after I change the value and click in another field the old value is shown again until I refresh the GridPanel.


    The grid code:
    <ext:GridPanel
                                ID="FilesGrid"
                                runat="server"
                                Title="Files"
                                Flex="6"
                                Region="Center"
                                >
                                <Tools>
                                    <ext:Tool Type="Refresh" Handler="#{FilesStore}.reload();" ToolTip="Refresh files" /> 
                                </Tools>
                                <Store>
                                    <ext:Store ID="FilesStore" runat="server" OnLoad="FilesStore_Load"  >
                                        <Model>
                                            <ext:Model runat="server">
                                                <Fields>
                                                    <ext:ModelField Name="status" />
                                                    <ext:ModelField Name="type" />
                                                    <ext:ModelField Name="title" Type="String" />
                                                    <ext:ModelField Name="ID" Type="Int"/>
                                                    <ext:ModelField Name="version" Type="Float"  />
                                                    <ext:ModelField Name="ct"  />
                                                    <ext:ModelField Name="site" Type="String" />
                                                    <ext:ModelField Name="country" Type="String" />
                                                    <ext:ModelField Name="owner" Type="String" />
                                                    <ext:ModelField Name="dm" Type="Date" DateFormat="dd/MM/yyyy" />
                                                    <ext:ModelField Name="ed" Type="Date" DateFormat="dd/MM/yyyy" />
                                                    <ext:ModelField Name="sdocs" Type="String" />
                                                </Fields>
                                            </ext:Model>
                                        </Model>
                                    </ext:Store>
                                </Store>
                                <ColumnModel runat="server">
                                    <Columns>
                                        <ext:Column
                                            runat="server"
                                            Text="Title"
                                            DataIndex="title"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="TitleComboBox"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="Title"
                                                    ValueField="Title">
                                                    <Store>
                                                        <ext:Store runat="server">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="title" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>                                            
                                            </Items>
                                            <Editor>
                                                <Ext:TextField runat="server" AllowBlank="False" />
                                            </Editor>
                                        </ext:Column>
                                             //MORE COLUMNS HERE............
                                    </Columns>
                                </ColumnModel>
                                <SelectionModel>
                                    <ext:CellSelectionModel ID="CellSelectionModel1" runat="server" />
                                </SelectionModel>
                                <Plugins>
                                    <ext:CellEditing ID="CellEditing1" runat="server">
                                        <Listeners>
                                            <Edit Fn="edit" />
                                        </Listeners>
                                    </ext:CellEditing>
                                </Plugins>
                            </ext:GridPanel>
    The edit function
    var edit = function (editor, e) {
                if (!(e.value === e.originalValue || (Ext.isDate(e.value) && Ext.Date.isEqual(e.value, e.originalValue)))) {
                    Fields.Edit(e.record.data.ID, e.field, e.originalValue, e.value, e.record.data);
                }
            };
    The Edit function in CodeBehind
    [DirectMethod(Namespace = "Fields")]
            public void Edit(int id, string field, string oldValue, string newValue, object customer) ///////NOT USED
            {
                string message = "<b>Property:</b> {0}<br /><b>Field:</b> {1}<br /><b>Old Value:</b> {2}<br /><b>New Value:</b> {3}";
    
                // Send Message...
                X.Msg.Notify(new NotificationConfig()
                {
                    Title = "Edit Record #" + id.ToString(),
                    Html = string.Format(message, id, field, oldValue, newValue),
                    Width = 250,
                    Height = 150
                }).Show();
    
                //this.FilesGrid.GetStore().GetById(id).Commit();
    
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                    (from i in dc.TMFFiles
                     where i.id == id
                     select i).First();
                switch (field){
                    case "type": 
                        result.Type = newValue;
                        dc.SubmitChanges();
                        break;
                    case "title":
                        result.Title = newValue;
                        dc.SubmitChanges();
                        break;
                    case "version":
                        result.Version = float.Parse(newValue); //check for float number .... 6.1->6.0919912831980
                        dc.SubmitChanges();
                        break;
                    case "owner":
                        result.Owner = newValue;
                        dc.SubmitChanges();
                        break;
                }
    
    
            }
    Last edited by fabricio.murta; Feb 25, 2017 at 4:07 AM. Reason: no user feedback for 7+ days
  2. #2
    Hello,

    Please provide a simplified code sample demonstrating how to reproduce the issue.

    The code sample you provide should include only the minimum amount of code required to reproduce the issue. Code unrelated to the issue is to be removed. Anyone should be able to copy + paste your sample into a local Visual Studio test project and run without having to make modifications.

    Tips for creating simplified code samples

    If Exceptions or syntax errors are thrown when testing your code sample, we'll let you know so you can revise your original sample. Then we'll review again with the updated sample.

    When posting your code samples in the forums, please paste that sample within [CODE] tags. The [CODE] tags will add formatting and syntax highlighting to your sample.

    The following two forum posts provide many excellent tips for posting in the forums:

    1. More Information Required
    2. Forum Guidelines
    Fabrício Murta
    Developer & Support Expert
  3. #3
    Hello Fabricio,

    I fixed that issue by changing OnLoad to OnReadData in:

    <ext:Store ID="FilesStore" runat="server" OnLoad="FilesStore_Load"  >
    and is working ok.

    But the problem now is that when the page loads for first time the grid is empty until I click Refresh tool.
    Last edited by geoffrey.mcgill; Jan 17, 2017 at 9:16 PM.
  4. #4
    Hello @atroul!

    We would require you to provide the runnable test sample so we can help you with this.
    Fabrício Murta
    Developer & Support Expert
  5. #5

    Runnable code

    Please let me know if I missed something

    
    <%@ Page Language="C#" %>
    
    <script runat="server">
           protected void FilesStore_Load(object sender, EventArgs e)
            {
    
    
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    //       where i.CTid == ctid
                    orderby i.id descending
                    select new { ID = i.id, title = i.Title, owner = i.Owner, type = i.Type, country = i.Country, version = i.Version, ct = i.CTid, site = i.Site, dm = i.DateModified, ed = i.ExpirationDate, sdocs = i.SubArtifactsId });
    
                this.FilesStore.DataSource = result;
                this.FilesStore.DataBind();
            }
    
            [DirectMethod(Namespace = "Fields")]
            public void Edit(int id, string field, string oldValue, string newValue, object customer) ///////NOT USED
            {
                string message = "<b>Property:</b> {0}<br /><b>Field:</b> {1}<br /><b>Old Value:</b> {2}<br /><b>New Value:</b> {3}";
    
                // Send Message...
                X.Msg.Notify(new NotificationConfig()
                {
                    Title = "Edit Record #" + id.ToString(),
                    Html = string.Format(message, id, field, oldValue, newValue),
                    Width = 250,
                    Height = 150
                }).Show();
    
                //this.FilesGrid.GetStore().GetById(id).Commit();
    
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                    (from i in dc.TMFFiles
                     where i.id == id
                     select i).First();
                switch (field){
                    case "type": 
                        result.Type = newValue;
                        dc.SubmitChanges();
                        break;
                    case "title":
                        result.Title = newValue;
                        dc.SubmitChanges();
                        break;
                    case "version":
                        result.Version = float.Parse(newValue); //check for float number .... 6.1->6.0919912831980
                        dc.SubmitChanges();
                        break;
                    case "owner":
                        result.Owner = newValue;
                        dc.SubmitChanges();
                        break;
                    case "country":
                        result.Country = newValue;
                        dc.SubmitChanges();
                        break;
                }
    
    
            }
    
            protected void cmbTitleStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { title = i.Title }).Distinct();
    
                this.cmbTitleStore.DataSource = result;
                this.cmbTitleStore.DataBind();
            }
    
            protected void cmbStatusStore_Load(object sender, EventArgs e)
            {
    
            }
    
            protected void cmbTypeStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { type = i.Type }).Distinct();
    
                this.cmbTypeStore.DataSource = result;
                this.cmbTypeStore.DataBind();
            }
    
            protected void cmbIDStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { ID = i.id }).Distinct();
    
                this.cmbIDStore.DataSource = result;
                this.cmbIDStore.DataBind();
            }
    
            protected void cmbVersionStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { version = i.Version }).Distinct();
    
                this.cmbVersionStore.DataSource = result;
                this.cmbVersionStore.DataBind();
            }
    
            protected void cmbCTStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { ct = i.CTid }).Distinct();
    
                this.cmbCTStore.DataSource = result;
                this.cmbCTStore.DataBind();
            }
    
            protected void cmbSiteStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { site = i.Site }).Distinct();
    
                this.cmbSiteStore.DataSource = result;
                this.cmbSiteStore.DataBind();
            }
    
            protected void cmbCountryStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { country = i.Country }).Distinct();
    
                this.cmbCountryStore.DataSource = result;
                this.cmbCountryStore.DataBind();
            }
    
            protected void cmbOwnerStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { owner = i.Owner }).Distinct();
    
                this.cmbOwnerStore.DataSource = result;
                this.cmbOwnerStore.DataBind();
            }
    
            protected void cmbDMStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { dm = i.DateModified }).Distinct();
    
                this.cmbDMStore.DataSource = result;
                this.cmbDMStore.DataBind();
            }
    
            protected void cmbEDStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { ed = i.ExpirationDate }).Distinct();
    
                this.cmbEDStore.DataSource = result;
                this.cmbEDStore.DataBind();
            }
    
            protected void cmbSubDocsStore_Load(object sender, EventArgs e)
            {
                DAL.CDMAdminDataContext dc = new DAL.CDMAdminDataContext();
    
                var result =
                   (from i in dc.TMFFiles
                    orderby i.id descending
                    select new { sdocs = i.SubArtifactsId }).Distinct();
    
                this.cmbSubDocsStore.DataSource = result;
                this.cmbSubDocsStore.DataBind();
            }
    
    </script>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>eTMF</title>
        <ext:XScript runat="server">
            <script>
                var edit = function (editor, e) {
                    /*
                        "e" is an edit event with the following properties:
    
                            grid - The grid
                            record - The record that was edited
                            field - The field name that was edited
                            value - The value being set
                            originalValue - The original value for the field, before the edit.
                            row - The grid table row
                            column - The grid Column defining the column that was edited.
                            rowIdx - The row index that was edited
                            colIdx - The column index that was edited
                    */
    
                    // Call DirectMethod
                    if (!(e.value === e.originalValue || (Ext.isDate(e.value) && Ext.Date.isEqual(e.value, e.originalValue)))) {
                        Fields.Edit(e.record.data.ID, e.field, e.originalValue, e.value, e.record.data);
                    }
                };
    
                //FILTERS
    
                var applyFilter = function (field) {
                    var store = #{FilesGrid}.getStore();
                    store.filterBy(getRecordFilter());
                };
    
                var clearFilter = function () {
    
                        #{cmbStatus}.reset();
                        #{cmbType}.reset();
                        #{cmbTitle}.reset();
                        #{cmbID}.reset();
                        #{cmbVersion}.reset();
                        #{cmbCT}.reset();
                        #{cmbSite}.reset();
                        #{cmbCountry}.reset();
                        #{cmbOwner}.reset();
                        #{cmbDM}.reset();
                        #{cmbED}.reset();
                        #{cmbSubDocs}.reset();
    
                        #{FilesStore}.clearFilter();
                }
    
                var filterString = function (value, dataIndex, record) {
                    var val = record.get(dataIndex);
    
                    if (typeof val != "string") {
                        return value.length == 0;
                    }
    
                    return val.toLowerCase().indexOf(value.toLowerCase()) > -1;
                };
    
                var filterDate = function (value, dataIndex, record) {
                    var val = Ext.Date.clearTime(record.get(dataIndex), true).getTime();
    
                    if (!Ext.isEmpty(value, false) && val != Ext.Date.clearTime(value, true).getTime()) {
                        return false;
                    }
                    return true;
                };
    
                var filterNumber = function (value, dataIndex, record) {
                    var val = record.get(dataIndex);
    
                    if (!Ext.isEmpty(value, false) && val != value) {
                        return false;
                    }
    
                    return true;
                };
    
                var getRecordFilter = function () {
                    var f = [];
    
                    f.push({
                        filter: function (record) {
                            return filterString(#{cmbStatus}.getValue()||"", "status", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterString(#{cmbType}.getValue()||"", "type", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterString(#{cmbTitle}.getValue()||"", "title", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterNumber(#{cmbID}.getValue(), "ID", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterNumber(#{cmbVersion}.getValue(), "version", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterNumber(#{cmbCT}.getValue(), "ct", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterNumber(#{cmbSite}.getValue(), "site", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterString(#{cmbCountry}.getValue()||"", "country", record);
                        }
                    });
    
                    f.push({
                        filter: function (record) {
                            return filterString(#{cmbOwner}.getValue()||"", "owner", record);
                        }
                    });
    
                    //f.push({
                    //    filter: function (record) {
                    //        return filterDate(#{cmbDM}.getValue(), "dm", record);
                    //    }
                    //});
    
                    //f.push({
                    //    filter: function (record) {
                    //        return filterDate(#{cmbED}.getValue(), "ed", record);
                    //    }
                    //});
    
                    f.push({
                        filter: function (record) {
                            return filterString(#{cmbSubDocs}.getValue()||"", "sdocs", record);
                        }
                    });
    
                    var len = f.length;
    
                    return function (record) {
                        for (var i = 0; i < len; i++) {
                            if (!f[i].filter(record)) {
                                return false;
                            }
                        }
                        return true;
                    };
                };
            </script>   
        </ext:XScript> 
    </head>
    <body>
        <form id="form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
                <div>
                    <ext:Viewport 
                        runat="server"
                        StyleSpec="background-color: transparent;"
                        Layout="BorderLayout"
                        >
                        <Items>                       
                            <ext:GridPanel
                                ID="FilesGrid"
                                runat="server"
                                Title="Files"
                                Flex="6"
                                Region="Center"
                                >
                                <Tools>
                                    <ext:Tool Type="Refresh" Handler="#{FilesStore}.reload();" ToolTip="Refresh files" /> 
                                </Tools>
                                <Store>
                                    <ext:Store ID="FilesStore" runat="server" OnReadData="FilesStore_Load"   >
    <%--                                    <Listeners>
                                            <DataChanged Handler="#{FilesStore}.reload();" />
                                            
                                        </Listeners>--%>
                                        <Model>
                                            <ext:Model runat="server">
                                                <Fields>
                                                    <ext:ModelField Name="status" />
                                                    <ext:ModelField Name="type" />
                                                    <ext:ModelField Name="title" Type="String" />
                                                    <ext:ModelField Name="ID" Type="Int"/>
                                                    <ext:ModelField Name="version" Type="Float" />
                                                    <ext:ModelField Name="ct"  />
                                                    <ext:ModelField Name="site" Type="String" />
                                                    <ext:ModelField Name="country" Type="String" />
                                                    <ext:ModelField Name="owner" Type="String" />
                                                    <ext:ModelField Name="dm" Type="Date" DateFormat="dd/MM/yyyy" />
                                                    <ext:ModelField Name="ed" Type="Date" DateFormat="dd/MM/yyyy" />
                                                    <ext:ModelField Name="sdocs" Type="String" />
                                                </Fields>
                                            </ext:Model>
                                        </Model>
                                    </ext:Store>
                                </Store>
                                <ColumnModel runat="server">
                                    <Columns>
                                        <ext:Column ID="Column1"
                                            runat="server"
                                            Text="Status"
                                            DataIndex="status"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbStatus"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="status"
                                                    ValueField="status">
                                                    <Store>
                                                        <ext:Store ID="cmbStatusStore" runat="server" OnLoad="cmbStatusStore_Load">
                                                            <Model>
                                                                <ext:Model ID="Model1" runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="status" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton ID="ClearButton1" runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="Type"
                                            DataIndex="type"
                                            Flex="1"
                                            >
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbType"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="type"
                                                    ValueField="type">
                                                    <Store>
                                                        <ext:Store ID="cmbTypeStore" runat="server" OnLoad="cmbTypeStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="type" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                            <Editor>
                                                <ext:ComboBox runat="server" >
                                                    <Items>
                                                        <ext:ListItem Text="Type1" />
                                                        <ext:ListItem Text="Type2" />
                                                        <ext:ListItem Text="Type400" />
                                                        <ext:ListItem Text="Type5" />
                                                    </Items>
                                                </ext:ComboBox>                                            
                                            </Editor>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="Title"
                                            DataIndex="title"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbTitle"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="title"
                                                    ValueField="title">
                                                    <Store>
                                                        <ext:Store ID="cmbTitleStore" runat="server"  OnLoad="cmbTitleStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="title" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>                                            
                                            </Items>
                                            <Editor>
                                                <Ext:TextField runat="server" AllowBlank="False" />
                                            </Editor>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="ID"
                                            DataIndex="ID"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbID"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="ID"
                                                    ValueField="ID">
                                                    <Store>
                                                        <ext:Store ID="cmbIDStore" runat="server" OnLoad="cmbIDStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="ID" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="Version"
                                            DataIndex="version"
                                            Flex="1"
                                            >
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbVersion"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="version"
                                                    ValueField="version">
                                                    <Store>
                                                        <ext:Store ID="cmbVersionStore" runat="server" OnLoad="cmbVersionStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="version" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                            <Editor>
                                                <ext:NumberField runat="server" />
                                            </Editor>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="Clinical Trial"
                                            DataIndex="ct"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbCT"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="ct"
                                                    ValueField="ct">
                                                    <Store>
                                                        <ext:Store ID="cmbCTStore" runat="server" OnLoad="cmbCTStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="ct" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="Site"
                                            DataIndex="site"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbSite"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="site"
                                                    ValueField="site">
                                                    <Store>
                                                        <ext:Store ID="cmbSiteStore" runat="server" OnLoad="cmbSiteStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="site" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="Country"
                                            DataIndex="country"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbCountry"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="country"
                                                    ValueField="country">
                                                    <Store>
                                                        <ext:Store ID="cmbCountryStore" runat="server" OnLoad="cmbCountryStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="country" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                            <Editor>
                                                <Ext:TextField ID="TextField2" runat="server" />
                                            </Editor>
                                        </ext:Column>
                                        <ext:Column
                                            runat="server"
                                            Text="Owner"
                                            DataIndex="owner"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbOwner"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="owner"
                                                    ValueField="owner">
                                                    <Store>
                                                        <ext:Store ID="cmbOwnerStore" runat="server" OnLoad="cmbOwnerStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="owner" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                            <Editor>
                                                <Ext:TextField ID="TextField1" runat="server" />
                                            </Editor>
                                        </ext:Column>
                                        <ext:DateColumn
                                            runat="server"
                                            Text="Date Modified"
                                            DataIndex="dm"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbDM"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="dm"
                                                    ValueField="dm">
                                                    <Store>
                                                        <ext:Store ID="cmbDMStore" runat="server" OnLoad="cmbDMStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="dm" Type="Date"/>
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                        </ext:DateColumn>
                                        <ext:DateColumn
                                            runat="server"
                                            Text="Expiration Date"
                                            DataIndex="ed"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbED"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="ed"
                                                    ValueField="ed">
                                                    <Store>
                                                        <ext:Store ID="cmbEDStore" runat="server" OnLoad="cmbEDStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="ed" Type="Date" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                        </ext:DateColumn>
                                        <ext:Column
                                            runat="server"
                                            Text="Sub Documents"
                                            DataIndex="sdocs"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbSubDocs"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="sdocs"
                                                    ValueField="sdocs">
                                                    <Store>
                                                        <ext:Store ID="cmbSubDocsStore" runat="server" OnLoad="cmbSubDocsStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="sdocs" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>
                                            </Items>
                                        </ext:Column>
                                    </Columns>
                                </ColumnModel>
                                <SelectionModel>
                                    <ext:CellSelectionModel ID="CellSelectionModel1" runat="server" />
                                </SelectionModel>
                                <Plugins>
                                    <ext:CellEditing ID="CellEditing1" runat="server">
                                        <Listeners>
                                            <Edit Fn="edit" />
                                        </Listeners>
                                    </ext:CellEditing>
                                </Plugins>
                            </ext:GridPanel>
                        </Items>                        
            </ext:Viewport>
        </div>
        </form>
    </body>
    </html>
  6. #6
    Hello @atroul!

    I see your efforts in making a runnable sample, but this one is way too complex to feature the problem you are having, isn't it?..

    I can't run it here, there's references to 'DAL' on several places that I have no idea what would that be. Can't this be simplified down to a simpler editable grid with two or three columns, just the essential to reproduce the issue?

    Sorry if this is not helping much, but in time we'll get in sync so you can provide us test cases we can run, and we provide you timely solutions.

    Please take your time to review our forums guidelines. I know it may be boring to read all that stuff but it will greatly help us help you!

    Here you'll get important tips on getting runnable sample codes:
    - Tips for creating simplified code samples

    And here are some useful guidelines, worth their time:
    - More Information Required
    - Forum Guidelines

    If you already read those, please review the test case so that we can run and give you proper feedback. That's a wild guess, but you probably can base your test case off samples we have in our examples explorer. Maybe an editable grid panel like this: Cell editing grid example.

    We really want to help you out, but we must understand your problem so we can suggest you a solution, hope you understand!
    Fabrício Murta
    Developer & Support Expert
  7. #7
    Please check with this sample, I think is should work now.
    <%@ 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 (!IsPostBack && !X.IsAjaxRequest)
                {
    
                }
                FilesStore.DataSource = new object[]
                    {
                        new { title = "title1"},
                        new { title = "title2"}               
                    };
    
                FilesStore.DataBind();
            }
    
    
           
            protected void FilesStore_Load(object sender, StoreReadDataEventArgs e)
            {
    
                X.Msg.Alert("filesStores load", "loaded").Show();
                
            }
    
            [DirectMethod(Namespace = "Fields")]
            public void Edit(int id, string field, string oldValue, string newValue, object customer) ///////NOT USED
            {
                string message = "<b>Property:</b> {0}<br /><b>Field:</b> {1}<br /><b>Old Value:</b> {2}<br /><b>New Value:</b> {3}";
    
                // Send Message...
                X.Msg.Notify(new NotificationConfig()
                {
                    Title = "Edit Record #" + id.ToString(),
                    Html = string.Format(message, id, field, oldValue, newValue),
                    Width = 250,
                    Height = 150
                }).Show();
    
                //this.FilesGrid.GetStore().GetById(id).Commit();
    
                //Database functions to update fields in db
                }
    
    
            }
    
            protected void cmbTitleStore_Load(object sender, EventArgs e)
            {
    
                X.Msg.Alert("cmbTitleStores load", "loaded").Show();
    
            }
    </script>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>eTMF</title>
        <ext:XScript runat="server">
            <script>
    
                var edit = function (editor, e) {
                    /*
                        "e" is an edit event with the following properties:
    
                            grid - The grid
                            record - The record that was edited
                            field - The field name that was edited
                            value - The value being set
                            originalValue - The original value for the field, before the edit.
                            row - The grid table row
                            column - The grid Column defining the column that was edited.
                            rowIdx - The row index that was edited
                            colIdx - The column index that was edited
                    */
    
                    // Call DirectMethod
                    if (!(e.value === e.originalValue || (Ext.isDate(e.value) && Ext.Date.isEqual(e.value, e.originalValue)))) {
                        Fields.Edit(e.record.data.ID, e.field, e.originalValue, e.value, e.record.data);
                    }
                };
    
                //FILTERS
    
                var applyFilter = function (field) {
                    var store = #{FilesGrid}.getStore();
                    store.filterBy(getRecordFilter());
                };
    
                var clearFilter = function () {
    
                        #{cmbTitle}.reset();
    
                        #{FilesStore}.clearFilter();
                }
    
                var filterString = function (value, dataIndex, record) {
                    var val = record.get(dataIndex);
    
                    if (typeof val != "string") {
                        return value.length == 0;
                    }
    
                    return val.toLowerCase().indexOf(value.toLowerCase()) > -1;
                };
    
                
    
                var getRecordFilter = function () {
                    var f = [];
    
                    f.push({
                        filter: function (record) {
                            return filterString(#{cmbTitle}.getValue()||"", "title", record);
                        }
                    });
    
                    
    
                    var len = f.length;
    
                    return function (record) {
                        for (var i = 0; i < len; i++) {
                            if (!f[i].filter(record)) {
                                return false;
                            }
                        }
                        return true;
                    };
                };
    
                //var template = '<span style="color:{0};">{1}</span>';
            </script>   
        </ext:XScript> 
        <style>                                     
            .x-grid-row-expander-spacer {
                display: none
            }
    
            .white-footer .x-toolbar-footer{
              background-color: white !important;
            }
        </style>
    </head>
    <body>
        <form id="form1" runat="server">
            <ext:ResourceManager ID="ResourceManager1" runat="server" />
                <div>
                    <ext:Viewport 
                        runat="server"
                        StyleSpec="background-color: transparent;"
                        Layout="BorderLayout"
                        >
                        <Items>                                         
                            <ext:GridPanel
                                ID="FilesGrid"
                                runat="server"
                                Title="Files"
                                Flex="6"
                                Region="Center"                           
                                >
                                <Tools>
                                    <ext:Tool Type="Refresh" Handler="#{FilesStore}.reload();" ToolTip="Refresh files" /> 
                                </Tools>
                                <Store>
                                    <ext:Store ID="FilesStore" runat="server" OnReadData="FilesStore_Load"   >
    <%--                                    <Listeners>
                                            <DataChanged Handler="#{FilesStore}.reload();" />
                                            
                                        </Listeners>--%>
                                        <Model>
                                            <ext:Model runat="server">
                                                <Fields>
                                                    <ext:ModelField Name="title" Type="String" />
                                                </Fields>
                                            </ext:Model>
                                        </Model>
                                    </ext:Store>
                                </Store>
                                <ColumnModel runat="server">
                                    <Columns>
                                        <ext:Column
                                            runat="server"
                                            Text="Title"
                                            DataIndex="title"
                                            Flex="1">
                                            <Items>
                                                <ext:ComboBox
                                                    ID="cmbTitle"
                                                    runat="server"
                                                    TrigerAction="All"
                                                    QueryMode="Local"
                                                    DisplayField="title"
                                                    ValueField="title">
                                                    <Store>
                                                        <ext:Store ID="cmbTitleStore" runat="server"  OnLoad="cmbTitleStore_Load">
                                                            <Model>
                                                                <ext:Model runat="server">
                                                                    <Fields>
                                                                        <ext:ModelField Name="title" />
                                                                    </Fields>
                                                                </ext:Model>
                                                            </Model>
                                                        </ext:Store>
                                                    </Store>
                                                    <Listeners>
                                                        <Change Handler="applyFilter(this);" Buffer="250" />
                                                    </Listeners>
                                                    <Plugins>
                                                        <ext:ClearButton runat="server" />
                                                    </Plugins>
                                                </ext:ComboBox>                                            
                                            </Items>
                                            <Editor>
                                                <Ext:TextField runat="server" AllowBlank="False" />
                                            </Editor>
                                        </ext:Column>
                                    </Columns>
                                </ColumnModel>
                                <SelectionModel>
                                    <ext:CellSelectionModel ID="CellSelectionModel1" runat="server" />
                                </SelectionModel>
                                <Plugins>
                                    <ext:CellEditing ID="CellEditing1" runat="server">
                                        <Listeners>
                                            <Edit Fn="edit" />
                                        </Listeners>
                                    </ext:CellEditing>
                                </Plugins>
                            </ext:GridPanel>
                        </Items>                        
            </ext:Viewport>
        </div>
        </form>
    </body>
    </html>
    Last edited by atroul; Jan 20, 2017 at 11:07 AM.
  8. #8
    Hello @atroul!

    Your latest code does not run at all, but I see you could shorten it a huge lot comparing to the last one! :)

    Here's what I get. Please review it and either edit the one above with the fixed one (and post a follow-up about the edit) or just post it on the follow up.

    Click image for larger version. 

Name:	61703_ise.png 
Views:	35 
Size:	22.6 KB 
ID:	24822
    Fabrício Murta
    Developer & Support Expert
  9. #9
    Hello @atroul!

    It's been some days and still no feedback from you! Let us know when you are able to fix the test case you provided so we can reproduce your test case and provide you with a more accurate advice/solution.

    We may mark this thread as closed if still you don't reply in 7+ days, but that won't prevent you from posting follow-ups to this thread.
    Fabrício Murta
    Developer & Support Expert

Similar Threads

  1. Replies: 6
    Last Post: Jul 25, 2016, 10:22 PM
  2. Replies: 8
    Last Post: Jan 21, 2013, 4:22 PM
  3. Replies: 2
    Last Post: Nov 09, 2012, 3:23 PM
  4. Replies: 2
    Last Post: Aug 19, 2011, 1:36 PM
  5. Replies: 2
    Last Post: Feb 17, 2010, 9:47 AM

Posting Permissions