Aug 05, 2013, 6:38 AM
gridpanel using restful not work?
hi,
the 'update'/'delete'/'read' is success, but the 'create' not work.
what should I do?
Model:
the 'update'/'delete'/'read' is success, but the 'create' not work.
what should I do?
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.