gridpanel using restful not work?

  1. #1

    gridpanel using restful not work?

    hi,
    the 'update'/'delete'/'read' is success, but the 'create' not work.
    what should I do?

    Click image for larger version. 

Name:	RestFulError.png 
Views:	11 
Size:	29.6 KB 
ID:	6686

    Model:
    [Model(Name = "Products")]
    public class Basic_Product
    {
          public    Guid ProductID { get; set; }
    
         public     String ProductName { get; set; }
    
           public   String ProductCode { get; set; }
    
          public    Int32 ProductUnitID { get; set; }
    
          public    Decimal ContractUnitPrice { get; set; }
    
          public    Decimal SaleUnitPrice { get; set; }
    
          public    String Remark { get; set; }
    
           public   Boolean IsDelete { get; set; }
    
          public    Guid ModifiedBy { get; set; }
    
          public    DateTime ModifiedTime { get; set; }
    
           public   String ModifiedName { get; set; }
    }
    Controller:
    
    public class BasicController
    {
    
            public ActionResult ProductList()
            {
                return View();
            }
    
            [AcceptVerbs(HttpVerbs.Post)]
            public RestResult ProductCreate(Basic_Product product)
            {
                try
                {
                
                    //product.ModifiedBy = SafeCast.SafeCastGUID("");
                    //product.ModifiedName = "";
                    //product.ModifiedTime = DateTime.Now;
                    //product.ProductID = Guid.NewGuid();
                   //product.Save();
                    return new RestResult
                    {
                        Success = true,
                        Message = "success!",
                        Data = product
                    };
                }
                catch (Exception e)
                {
                    return new RestResult
                    {
                        Success = false,
                        Message = e.Message
                    };
                }
            }
    
            [AcceptVerbs(HttpVerbs.Get)]
            public RestResult ProductRead()
            {
                try
                {
                    return new RestResult
                    {
                        Success = true,
                        Data = Basic_Product.FindAll(Basic_Product._.IsDelete,false)
                    };
                }
                catch (Exception e)
                {
                    return new RestResult
                    {
                        Success = false,
                        Message = e.Message
                    };
                }
            }
    
           [AcceptVerbs(HttpVerbs.Put)]
            public RestResult ProductUpdate(Basic_Product product)
            {
                try
                {
                   // product.ModifiedBy = SafeCast.SafeCastGUID("");
                   // product.ModifiedName = "";
                  //  product.ModifiedTime = DateTime.Now;
                    return new RestResult
                    {
                        Success = product.Update() > 0,
                        Message = "Product has been updated"
                    };
                }
                catch (Exception e)
                {
                    return new RestResult
                    {
                        Success = false,
                        Message = e.Message
                    };
                }
            }
    
            [AcceptVerbs(HttpVerbs.Delete)]
            public RestResult ProductDestroy(Basic_Product product)
            {
                try
                {
                    return new RestResult
                    {
                        Success = Basic_Product.Update("IsDelete=1", "ProductID='" + product.ProductID + "'") > 0,
                        Message = "Product has been deleted"
                    };
                }
                catch (Exception e)
                {
                    return new RestResult
                    {
                        Success = false,
                        Message = e.Message
                    };
                }
            }
    
    }
    View:
    @model IEnumerable<Basic_Product>
    @{
        ViewBag.Title = "ProductList";
        Layout = "~/Views/Shared/_Layout.cshtml";
        var X = Html.X();
    }
    
    @X.ResourceManager()
      @(X.GridPanel().ID("gdProduct")
                    .Icon(Icon.Table)
                    .Frame(true)
                    .Title("Product List")
                    .AnchorHorizontal("100%")
                    .AnchorVertical("100%")
                    .Store(
                        X.StoreForModel().ID("ProductStore")
            .Control(s =>
                        {
                            s.AutoSync = true;
                            s.Proxy.Add(
                                new RestProxy
                                {
                                    AppendAction = false,
                                    Reader = { 
                                        new JsonReader {
                                            Root = "data",
                                            MessageProperty = "message"
                                        }
                                    },
                                    API =
                                    {
                                        Read = Url.Action("ProductRead"),
                                        Update = Url.Action("ProductUpdate"),
                                        Create = Url.Action("ProductCreate"),
                                        Destroy = Url.Action("ProductDestroy")
                                    },
                                    Writer = {
                                        new JsonWriter
                                        {
                                            AllowSingle = true
                                        }
                                    }
                                }
                            );
                            s.Listeners.Write.Fn = "onWrite";
                        })
                    )
                    .ColumnModel(
                             X.ColumnFor(Model,m=>m.ProductCode).ToBuilder<Column.Builder>().Flex(1)
                                .Editor(
                                    X.TextField().AllowBlank(false)
                                )    
                                ,
                              X.ColumnFor(Model,m=>m.ProductName).ToBuilder<Column.Builder>().Flex(1)
                                .Editor(
                                    X.TextField().AllowBlank(false)
                                )    
                                ,
                               X.ColumnFor(Model,m=>m.ProductUnitID).ToBuilder<Column.Builder>().Flex(1)
                                .Editor(
                                 X.ComboBox()
                                .DisplayField("ItemName")
                                .ValueField("ItemValue")
                                .Store(
                                    X.Store()
                                        .Model(
                                            X.Model().Fields(
                                            new ModelField() { Name = "ItemName" },
                                            new ModelField() { Name = "ItemValue" }
                                            )
                                        )
                                       .Data(
                                            new List<object>{new { ItemName="A",ItemValue=0 },new { ItemName="B",ItemValue=1 }}
                                        )
                                        .ID("ProductUnitStore")
                                 )
                            )
                            ,
                                X.ColumnFor(Model,m=>m.ContractUnitPrice).ToBuilder<Column.Builder>().Flex(1)
                                .Editor(
                                    X.TextField().AllowBlank(false)
                                )    
                                ,
                                  X.ColumnFor(Model,m=>m.SaleUnitPrice).ToBuilder<Column.Builder>().Flex(1)
                                .Editor(
                                    X.TextField().AllowBlank(false)
                                )    
                         )
                    .TopBar(
                        X.Toolbar()
                            .Items(
                                Html.X().Button()
                                    .Text("add")
                                    .Icon(Icon.Add)
                                    .Handler("this.up('grid').store.insert(0, new Products());this.up('grid').editingPlugin.startEdit(0, 0);"),
    
                                Html.X().Button()
                                    .ItemID("btnRemove")
                                    .Text("delete")
                                    .Icon(Icon.Exclamation)
                                    .Handler("this.up('grid').deleteSelected();")
                            )
                    )
                    .Plugins(
                        X.RowEditing()
                            .Listeners(l =>
                            {
                                l.CancelEdit.Handler = "if(e.record.phantom){e.store.remove(e.record);}";
                            })
                    )
    )
     <script>
          var onWrite = function (store, operation) {
              var record = operation.getRecords()[0],
                    name = Ext.String.capitalize(operation.action),
                    verb;
              if (name == 'Destroy') {
                  record = operation.records[0];
                  verb = 'Destroyed';
              } else {
                  verb = name + 'd';
              }
              Ext.net.Notification.show({ title: name, html: Ext.String.format("{0} user: {1}<br/>{2}", verb, record.getId(), operation.resultSet.message) });
          };
        </script>
    Last edited by 924170040; Aug 05, 2013 at 6:44 AM.

Similar Threads

  1. Replies: 3
    Last Post: Jan 03, 2013, 6:57 PM
  2. Replies: 3
    Last Post: Jan 19, 2012, 9:56 AM
  3. Replies: 2
    Last Post: May 23, 2011, 10:45 AM
  4. RESTful MVC maintenance demo
    By Dominik in forum Open Discussions
    Replies: 0
    Last Post: May 06, 2010, 4:23 AM
  5. Restful Paging
    By Dominik in forum 1.x Help
    Replies: 2
    Last Post: Apr 30, 2010, 11:49 AM

Posting Permissions