[CLOSED] Grid delete is not working

  1. #1

    [CLOSED] Grid delete is not working

    Hi,

    I am creating dynamic grid. I added dynamic delete button. Delete is working but remaining one record is not working.

        protected void SaveHandler(object sender, BeforeStoreChangedEventArgs e)
        {
            hdJson.Text = e.DataHandler.JsonData;
            ResourceManager.GetInstance(this.Context).AddScript("grid.getStore().submitData();");
        }
    
        protected void storeSubmitData(object sender, StoreSubmitDataEventArgs e)
        {
            new GenericGrid().submitGridData((bt_admin_panel_user)Session[SystemVariables.SESSION_PARAMETER_USER],
                GuiUtils.getGridConfigName(HttpContext.Current.Request.RawUrl), hdJson.Text);
    
            ResourceManager.GetInstance(this.Context).AddScript("grid.reload();");
        }
    program doesnt enter storeSubmitData when remaining one record.
    Last edited by Daniil; Jan 18, 2011 at 12:26 PM. Reason: [CLOSED]
  2. #2
    Hi,

    I have prepared a sample in according to the details that you provided but I can't reproduce the issue. In other words SubmitData is fired when there is one record.

    So, how we can reproduce the issue?

    Example
    <%@ Page Language="C#" %>
    
    <%@ Register Assembly="Ext.Net" Namespace="Ext.Net" TagPrefix="ext" %>
    
    <script runat="server">
        public object[] MyData = new object[] 
        { 
            new object[] { "test0" },
            new object[] { "test1" },
            new object[] { "test2" }
        };
    
        protected void Store_RefreshData(object sender, StoreRefreshDataEventArgs e)
        {
            object[] data = this.MyData;
            var limit = e.Limit;
            if ((e.Start + e.Limit) > data.Length)
            {
                limit = data.Length - e.Start;
            }
            object[] rangeData = (e.Start < 0 || limit < 0) ? data : this.GetRange(data, e.Start, limit);
            e.Total = data.Length;
            this.GridPanel1.GetStore().DataSource = rangeData;
        }
    
        private object[] GetRange(object[] data, int start, int limit)
        {
            object[] result = new object[limit];
            for (int i = 0; i < limit; i++)
            {
                result[i] = data[i + start];
            }
            return result;
        }
    
        protected void SaveHandler(object sender, BeforeStoreChangedEventArgs e)
        {
            ResourceManager.GetInstance(this.Context).AddScript("GridPanel1.getStore().submitData();");
        }
    
        protected void StoreSubmitData(object sender, StoreSubmitDataEventArgs e)
        {
            X.Msg.Alert("storeSubmitData", "Hello from storeSubmitData!").Show();
        }
    </script>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Ext.Net Example</title>
    </head>
    <body>
        <form runat="server">
        <ext:ResourceManager runat="server" />
        <ext:GridPanel ID="GridPanel1" runat="server" AutoHeight="true">
            <TopBar>
                <ext:Toolbar runat="server">
                    <Items>
                        <ext:Button runat="server" Text="Save" StandOut="true">
                            <Listeners>
                                <Click Handler="GridPanel1.save();" />
                            </Listeners>
                        </ext:Button>
                    </Items>
                </ext:Toolbar>
            </TopBar>
            <Store>
                <ext:Store 
                    runat="server" 
                    OnRefreshData="Store_RefreshData" 
                    OnSubmitData="StoreSubmitData" 
                    OnBeforeStoreChanged="SaveHandler">
                    <Proxy>
                        <ext:PageProxy />
                    </Proxy>
                    <Reader>
                        <ext:ArrayReader>
                            <Fields>
                                <ext:RecordField Name="test" />
                            </Fields>
                        </ext:ArrayReader>
                    </Reader>
                </ext:Store>
            </Store>
            <ColumnModel runat="server">
                <Columns>
                    <ext:Column Header="Test" DataIndex="test" />
                    <ext:CommandColumn Width="60" ButtonAlign="Center">
                        <Commands>
                            <ext:GridCommand Icon="Delete" CommandName="Delete" />
                        </Commands>
                    </ext:CommandColumn>
                </Columns>
            </ColumnModel>
            <Listeners>
                <Command Handler="if (command == 'Delete') { this.deleteRecord(record); }" />
            </Listeners>
        </ext:GridPanel>
        </form>
    </body>
    </html>
  3. #3
    hi daniil,

    your code also make the same problem.

    if one record deleted and then click save StoreSubmitData method was called
    if two records deleted and then click save StoreSubmitData method was called
    but all records deleted and then click save StoreSubmitData method couldn't be called.
  4. #4
    Hi,

    Delete is working but remaining one record is not working.
    Well, in according to words above I thought that you meant that SubmitData is not fired when there is one record.

    but all records deleted and then click save StoreSubmitData method couldn't be called.
    Well, there is expected behavior. If there is no data to submit we do not fire SubmitData and return false from .submitData() method (you could handle this case manually).
  5. #5
    Hi,

    'submitData' method submits current records of the store, if store has no records then submit will not be performed because there is no data to submit

    What a sense to create so strange construction (I mean to call submit in the save handler)?
    protected void SaveHandler(object sender, BeforeStoreChangedEventArgs e)
    {
        hdJson.Text = e.DataHandler.JsonData;
        ResourceManager.GetInstance(this.Context).AddScript("grid.getStore().submitData();");
    }
  6. #6
    :)
    Quote Originally Posted by Vladimir View Post
    Hi,

    'submitData' method submits current records of the store, if store has no records then submit will not be performed because there is no data to submit

    What a sense to create so strange construction (I mean to call submit in the save handler)?
    protected void SaveHandler(object sender, BeforeStoreChangedEventArgs e)
    {
        hdJson.Text = e.DataHandler.JsonData;
        ResourceManager.GetInstance(this.Context).AddScript("grid.getStore().submitData();");
    }
    Ok thanks for all answer. I understand. I am doing all action in saveHandler :)

Similar Threads

  1. Ext.Net 2.0 Delete from Grid in C#
    By OSSAGHO in forum 2.x Help
    Replies: 0
    Last Post: Aug 08, 2012, 1:05 PM
  2. [CLOSED] Edit and Delete Grid Rows with Permissions
    By pint in forum 1.x Legacy Premium Help
    Replies: 1
    Last Post: Jun 25, 2012, 10:24 AM
  3. [CLOSED] grid panel - exception on delete row
    By boris in forum 1.x Legacy Premium Help
    Replies: 13
    Last Post: Oct 28, 2011, 1:50 PM
  4. Replies: 0
    Last Post: Jul 23, 2010, 6:35 AM
  5. [CLOSED] How to delete a record from grid permanently clientside?
    By jchau in forum 1.x Legacy Premium Help
    Replies: 9
    Last Post: Sep 18, 2009, 11:46 AM

Posting Permissions