Discuss anything related to web development but no technical support questions


Post by mfrancia »

Hi i have this, im calling my web service GetWorkOrders ok, but when i debug my web service create and update dont call why? please help i have two days with this.
// Store holding all the events
    var eventStore = new Ext.data.JsonStore({
        root: 'd.data',
        idProperty: 'Id',
        writer: new Ext.data.JsonWriter({
            encode: false,
            writeAllFields: false
        }),
        autoLoad: true,
        autoSave: true,
        successProperty: 'd.success',
        api: {
            read: '../webservice/WSBaseScheduler.asmx/GetWorkOrders',
            create: '../webservice/WSBaseScheduler.asmx/AddWorkOrder',
            destroy: undefined,
            update: '../webservice/WSBaseScheduler.asmx/UpdateWorkOrder'
        },
        fields: [
            { name: 'Id', mapping: 'WorkOrderID', type: 'int' },
            { name: 'ResourceId', mapping: 'ContactID', type: 'int' },
            { name: 'StartDate', mapping: 'EarlyStartDate', type: 'date', dateFormat: 'M$' },
            { name: 'EndDate', mapping: 'RequiredEndDate', type: 'date', dateFormat: 'M$' },
            { name: 'Title', mapping: 'ShortDescription', type: 'string' }
        ]
    });

and this is my web service

[WebMethod]
    [ScriptMethod]
    public object GetWorkOrders()
    {

        ListWorkOrderRequest request = new ListWorkOrderRequest();
        List<WorkOrder> listWOr = new List<WorkOrder>();
        return new { data = ServiceSheduler.Service.GetWorkOrders(request).WorkOrders };
    }

[WebMethod]
    [ScriptMethod]
    public object UpdateWorkOrder(object jsondata)
    {
        UpdateWorkOrderRequest updWorkOrder=new UpdateWorkOrderRequest();
        WorkOrder wo = (WorkOrder)jsondata;
        updWorkOrder.WorkOrder.ContactID = wo.ContactID;
        updWorkOrder.WorkOrder.WorkOrderID = wo.WorkOrderID;
        updWorkOrder.WorkOrder.EarlyStartDate = wo.EarlyStartDate;
        updWorkOrder.WorkOrder.RequiredEndDate = wo.RequiredEndDate;
        //updWorkOrder.WorkOrder.ShortDescription = jsondata.ShortDescription;

        UpdateWorkOrderResponse response = new UpdateWorkOrderResponse();

        response=ServiceSheduler.Service.UpdateWorkOrder(updWorkOrder);

        return new { success = true };

    }

    [WebMethod]
    [ScriptMethod]
    public object AddWorkOrder(WorkOrder jsondata)
    {
        AddWorkOrderRequest addWorkOrder = new AddWorkOrderRequest();
        WorkOrder wo = new WorkOrder(); wo= jsondata;
        addWorkOrder.WorkOrder.ContactID = jsondata.ContactID;
        //addWorkOrder.WorkOrder.WorkOrderID = jsondata.WorkOrderID;
        addWorkOrder.WorkOrder.EarlyStartDate = jsondata.EarlyStartDate;
        addWorkOrder.WorkOrder.RequiredEndDate = jsondata.RequiredEndDate;
        addWorkOrder.WorkOrder.ShortDescription = jsondata.ShortDescription;
        ServiceSheduler.Service.AddWorkOrder(addWorkOrder);
        return new
        {
            success = true,
            data = wo
        };
    }

Post by mfrancia »

and this is my post json
{"jsonData":{"WorkOrderID":1,"ContactID":1,"EarlyStartDate":"2010-11-10T00:00:00","RequiredEndDate":"2010-12-09T20:00:00","ShortDescription":"task1"}}
this is my reponse i debug with firebug
{"Message":"Invalid web service call, missing value for parameter: \u0027jsondata\u0027.","StackTrace":"   at System.Web.Script.Services.WebServiceMethodData.CallMethod(Object target, IDictionary`2 parameters)\r\n   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"}

Post by mats »

So the parameter for your webservice must be the same as the store root. So change the parameter name to 'data' instead of 'jsondata'. Tip, use Firebug to inspect these issues :)
root: 'd.data'

Post Reply