[CLOSED] Error 500 saving grid store

  1. #1

    [CLOSED] Error 500 saving grid store

    I have the following store:

    <ext:Store ID="Store1" runat="server">
                        <Proxy>
                            <ext:HttpProxy Method="POST" Url="EnterBillWebService.asmx/GetBillData" Json="true">
                                <Headers>
                                    <ext:Parameter Name="Content-Type" Value="application/json; charset=utf-8" Mode="Value"></ext:Parameter>
                                </Headers>
                            </ext:HttpProxy>                    
                        </Proxy>
                        <UpdateProxy>
                            <ext:HttpWriteProxy Method="POST" HandleSaveResponseAsXml="true" Url="EnterBillWebService.asmx/SaveBillData" />
                        </UpdateProxy>
                            <Reader>
                                <ext:JsonReader ReaderID="LineId" Root="d">
                                    <Fields>
                                        <ext:RecordField Name="ItemName" />
                                        <ext:RecordField Name="ItemValue" Type="Float" />
                                        <ext:RecordField Name="ItemId" Type="Int" />
                                        <ext:RecordField Name="LineId" />
                                    </Fields>
                                </ext:JsonReader>
                            </Reader>
                            <BaseParams>
                                <ext:Parameter Name="billId" Value="#{GridPanel1}.getSelectionModel().hasSelection() ? #{GridPanel1}.getSelectionModel().getSelected().data.LineId : '-1'"
                                        Mode="Raw" />
                            </BaseParams>                        
                            <Listeners>
                                <LoadException Handler="var e = e || {message: response.responseText}; alert('Load failed: ' + e.message);" />
                                <SaveException Handler="alert('save failed');" />
                                <CommitDone Handler="alert('commit success');" />
                                <CommitFailed Handler="alert('Commit failed\nReason: '+msg)" />
                            </Listeners>                        
                        </ext:Store>
    and the following grid definition:
    <ext:GridPanel ID="GridPanel1" runat="server" StoreID="Store1" StripeRows="true"
                            Title="Array Grid" TrackMouseOver="true" AutoExpandColumn="ItemName" Height="300"
                            Hidden="false" Header="false" Width="800" AutoScroll="true">
                            <ColumnModel ID="ColumnModel1" runat="server">
                                <Columns>
                                    <ext:Column ColumnID="ItemName" Header="Item Name" Width="75" Sortable="true" DataIndex="ItemName">
                                    <Editor>
                                        <ext:TextField ID="TextField10" runat="server" />
                                    </Editor>
                                    </ext:Column>
                                    <ext:Column Header="Item Value" Width="75" Sortable="true" DataIndex="ItemValue">
                                    <Editor>
                                        <ext:TextField ID="TextField11" runat="server" />
                                    </Editor>
                                    </ext:Column>
                                    <ext:Column Header="Item Id" Width="75" Sortable="true" DataIndex="ItemId">
                                    <Editor>
                                        <ext:TextField ID="TextField12" runat="server" />
                                    </Editor>
                                    </ext:Column>
                                    <ext:Column Header="Line Id" Width="85" Sortable="true" DataIndex="LineId">
                                    <Editor>
                                        <ext:TextField ID="TextField13" runat="server" />
                                    </Editor>
                                    </ext:Column>
                                </Columns>
                            </ColumnModel>
                            <LoadMask ShowMask="true" />
                            <SaveMask ShowMask="true" />
                            
                            <SelectionModel>
                                <ext:RowSelectionModel ID="RowSelectionModel1" SingleSelect="false" runat="server">
                                    <Listeners>
                                        <RowSelect Handler="#{BtnDelete}.enable();" />
                                        <RowDeselect Handler="if (!#{GridPanel1}.hasSelection()) {#{BtnDelete}.disable();}" />
                                    </Listeners>
                                </ext:RowSelectionModel>
                            </SelectionModel>
                            
                            <Buttons>
                                <ext:Button ID="Button1" runat="server" Text="Add" AutoPostBack="false" Icon="Add">
                                    <Listeners>
                                        <Click Handler="var rowIndex = #{GridPanel1}.addRecord(); #{GridPanel1}.getView().focusRow(rowIndex); #{GridPanel1}.startEditing(rowIndex, 0);" />
                                    </Listeners>
                                </ext:Button>
                                
                                <ext:Button ID="Button2" runat="server" Text="Insert" AutoPostBack="false" Icon="Add">
                                    <Listeners>
                                        <Click Handler="#{GridPanel1}.insertRecord(0, {});#{GridPanel1}.getView().focusRow(0);#{GridPanel1}.startEditing(0, 0);" />
                                    </Listeners>
                                </ext:Button>
                                
                                <ext:Button ID="BtnDelete" runat="server" Text="Delete" AutoPostBack="false" Icon="Delete" Disabled="true">
                                    <Listeners>
                                        <Click Handler="#{GridPanel1}.deleteSelected();if (!#{GridPanel1}.hasSelection()) {#{BtnDelete}.disable();}" />
                                    </Listeners>
                                </ext:Button>
                                
                                <ext:Button ID="Button3" runat="server" Text="Save" AutoPostBack="false" Icon="Disk">
                                    <Listeners>
                                        <Click Handler="#{GridPanel1}.save();" />
                                    </Listeners>
                                </ext:Button>
                                
                                <ext:Button ID="Button4" runat="server" Text="Clear" AutoPostBack="false" Icon="Cancel">
                                    <Listeners>
                                        <Click Handler="#{GridPanel1}.clear();if (!#{GridPanel1}.hasSelection()) {#{BtnDelete}.disable();}" />
                                    </Listeners>
                                </ext:Button>
                                
                                <ext:Button ID="Button5" runat="server" Text="Refresh" AutoPostBack="false" Icon="ArrowRefresh">
                                    <Listeners>
                                        <Click Handler="#{GridPanel1}.reload();" />
                                    </Listeners>
                                </ext:Button>
                            </Buttons>
                            
                            <Plugins>
                                <ext:PanelResizer ID="PanelResizer1" runat="server" MinHeight="100" />
                            </Plugins>
                        </ext:GridPanel>
    and the following code in EnterBillWebService.cs
    using System;
    using System.Collections.Generic;
    using System.Web.Services;
    using Coolite.Ext.Web;
    
    /// <summary>
    /// Summary description for EnterBillWebService
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [System.Web.Script.Services.ScriptService]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class EnterBillWebService : WebService
    {
        [WebMethod]
        public BillData[] GetBillData(string billId)
        {
            BillData[] billDataArray = new BillData[1];
            billDataArray[0] = new BillData("item1", (decimal)10.23, 1, "Line1");
            return billDataArray;
        }
    
        [WebMethod]
        public Response SaveBillData(string data)
        {
            Response sr = new Response(true);
    
            try
            {
                StoreDataHandler dataHandler = new StoreDataHandler(data);
    
                //Convert data to business objects collection
                ChangeRecords<BillData> dataList = dataHandler.ObjectData<BillData>();
    
                //performs update actions
    
                foreach (BillData customer in dataList.Deleted)
                {
                    //Customers.Delete(customer);
                }
    
                foreach (BillData customer in dataList.Updated)
                {
                    //Customers.Update(customer);
                }
    
                foreach (BillData customer in dataList.Created)
                {
                    //Customers.Insert(customer);
                }
            }
            catch (Exception e)
            {
                //if were errors then we should to tell client that saving request was unsuccessful
                sr.Success = false;
                sr.Msg = e.Message;
            }
    
            return sr;
        }
    }
    
    public class BillData
    {
        public BillData(string itemName, decimal itemValue, int itemId, string lineId)
        {
            ItemName = itemName;
            ItemValue = itemValue;
            ItemId = itemId;
            LineId = lineId;
        }
        public string ItemName;
        public decimal ItemValue;
        public int ItemId;
        public string LineId;
    }
    If I modify a row in the grid (add a new one or modify existing one) and hit the save button, I get error 500 "internal server error". None of my break points on the server is hit.


  2. #2

    RE: [CLOSED] Error 500 saving grid store

    Hi,

    I think your web service expects json format because you are using
    [System.Web.Script.Services.ScriptService]
    We never tested saving to web service which expects to the json (we tested with XML web services only). Try to add Json="true" for update proxy and remove HandleSaveResponseAsXml="true"
  3. #3

    RE: [CLOSED] Error 500 saving grid store

    Same error.

    So should I revert everything to using XML and skip the json part?
  4. #4

    RE: [CLOSED] Error 500 saving grid store

    Hi,

    I think it is better to use classic (XML) web service for grid's saving


    Can you zip and send to us your test solution which has the problem with saving when using JSON web service? We will investigate it to include support of JSON service
  5. #5

    RE: [CLOSED] Error 500 saving grid store

    The code in this post is pretty much it. You only need to add the standard header stuff to the .aspx page like:
    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Collections.Generic"%>
    
    <%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <ext:ScriptManager ID="ScriptManager1" runat="server" />

Similar Threads

  1. The GridPanel/Store saving description
    By Vladimir in forum 1.x Help
    Replies: 9
    Last Post: Aug 27, 2012, 9:49 PM
  2. [CLOSED] GridPanel error when saving (SubmitData)
    By nikisbeta in forum 2.x Legacy Premium Help
    Replies: 1
    Last Post: Aug 05, 2012, 6:14 PM
  3. Replies: 2
    Last Post: Apr 14, 2011, 9:03 AM
  4. Pop-up error message when saving store!
    By xmdxxa in forum 1.x Help
    Replies: 1
    Last Post: Mar 31, 2011, 6:36 AM
  5. [CLOSED] GridPanel store saving
    By methode in forum 1.x Legacy Premium Help
    Replies: 11
    Last Post: Dec 16, 2008, 3:02 AM

Posting Permissions