Javascript 剑道网格如何更新、创建、删除数据源
由于某些原因,我不能使用剑道网格的MVC包装器,所以我尝试在Javascript上构建剑道网格 当试图在网格上更新或创建记录时,有两个主要问题 1-)网格上的所有操作(销毁、更新、创建)只需通过剑道网格的Datasource创建操作即可。例如,更新记录后,Datasource将数据发送到此url多次(列数):Javascript 剑道网格如何更新、创建、删除数据源,javascript,jquery,ajax,asp.net-mvc,kendo-ui,Javascript,Jquery,Ajax,Asp.net Mvc,Kendo Ui,由于某些原因,我不能使用剑道网格的MVC包装器,所以我尝试在Javascript上构建剑道网格 当试图在网格上更新或创建记录时,有两个主要问题 1-)网格上的所有操作(销毁、更新、创建)只需通过剑道网格的Datasource创建操作即可。例如,更新记录后,Datasource将数据发送到此url多次(列数): http://localhost:63186/Administrator/DefinitionDetailCreate。它应将值传递给: http://localhost:63186/Ad
http://localhost:63186/Administrator/DefinitionDetailCreate
。它应将值传递给:
http://localhost:63186/Administrator/DefinitionDetailUpdate
2-)操作(更新或创建)后,网格将所有数据发送到Action方法,而不是新的或更新的数据。因此,它发送网格上列数的请求
JS:
控制器:
[HttpPost]
public ActionResult DefinitionDetailUpdate(Guid ID,Guid REFERENCEID,string DESCRIPTION)
{
return null;
}
[HttpPost]
public ActionResult DefinitionDetailCreate(Guid ID, Guid REFERENCEID, string DESCRIPTION)
{
return null;
}
首先,您可能需要添加,这将有助于识别服务器端方法:
parameterMap: function (options, operation) {
var out = null;
switch (operation) {
case "create":
out = '{ "param":' + options.somevalue + '}';
break;
case "read":
out = '{ "id":' + options.somevalue + '}';
break;
case "update":
out = '{ "id":' + options.somevalue + '}';
break;
case "destroy":
out = '{ "id": ' + options.somevalue + '}';
break;
}
return out;
}
我还建议将所有数据类型保留为dataType:“json”
此外,您的传输定义中似乎缺少contentType
:
update: {
url: _op.serviceBaseUrl + "Update",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
complete: function (jqXhr, textStatus) {
}
},
我已经发布了相同类型的问题,您可以查看一下
或
您可以使用此代码
js
控制器
[HttpPost]
public ActionResult DefinitionDetailUpdate(string models)
{
//Deserialize to object
IList<UrObjectType> objName= new JavaScriptSerializer().Deserialize<IList<UrObjectType>>(models);
return Json(objName)
}
[HttpPost]
public ActionResult DefinitionDetailCreate(string models)
{
//Deserialize to object
IList<UrObjectType> objName= new JavaScriptSerializer().Deserialize<IList<UrObjectType>>(models);
return Json(objName)
}
[HttpPost]
公共操作结果定义详细信息更新(字符串模型)
{
//反序列化到对象
IList objName=new JavaScriptSerializer()。反序列化(模型);
返回Json(objName)
}
[HttpPost]
公共操作结果定义详细信息创建(字符串模型)
{
//反序列化到对象
IList objName=new JavaScriptSerializer()。反序列化(模型);
返回Json(objName)
}
请注意,parameterMap:function()使用名称models以序列化字符串格式发送更新的数据,因此您应该在操作中使用“models”作为参数名称
我希望这将对您有所帮助:)当我添加contentType:“application/json;charset=utf-8”时,没有什么是通过操作捕获的方法,而是发布了一些数据。当我添加paramaterMap选项时,没有来自read方法的数据。如果您不能使用Mvc包装器,我想我需要用Kendo Mvc包装器解决您缺少的东西。您是否已将剑道UI命名空间添加到视图文件夹中的Web配置中?或者使用Kendo.Mvc.UI在视图顶部抛出一个
var dataItem = this.dataItem($(e.target).closest("tr"));
var code = dataItem.CODE;
// alert(code);
var crudServiceBaseUrl = "/Administrator/",
dataSource = new kendo.data.DataSource({
transport: {
read: {
url: '@Url.Action("DefinitionDetailRead", "Administrator")',
type: "POST",
dataType: "json"
},
update: {
url: '@Url.Action("DefinitionDetailUpdate", "Administrator")' ,
type: "POST",
dataType: "json"
},
destroy: {
url: '@Url.Action("DefinitionDetailDelete", "Administrator")',
type: "POST",
dataType: "json",
},
create: {
url: '@Url.Action("DefinitionDetailCreate", "Administrator")',
type: "POST",
dataType: "json",
},
parameterMap: function (options, operation) {
if (operation !== "read" && options.models) {
return { models: kendo.stringify(options.models) };
}
} },
// batch: true,
pageSize: 9,
schema: {
data: "Data",
model: {
ID: "ID",
fields: {
ID: { editable: false, nullable: true },
DESCRIPTION: { validation: { required: true } }
}
}
}
});
$("#detailsGrid").kendoGrid({
dataSource: dataSource,
attributes: { style: "padding-left: 0px; font-size: 14px"},
pageable: {refresh: false, pageSizes: false, buttonCount: 5},
toolbar: ["create"],
columns: [
{field: "DESCRIPTION", title: "DESCRIPTION", width: "200px"},
{ command: ["edit", "destroy"], title: "Operasyon", width: "100px" }],
editable: "popup"
});
[HttpPost]
public ActionResult DefinitionDetailUpdate(string models)
{
//Deserialize to object
IList<UrObjectType> objName= new JavaScriptSerializer().Deserialize<IList<UrObjectType>>(models);
return Json(objName)
}
[HttpPost]
public ActionResult DefinitionDetailCreate(string models)
{
//Deserialize to object
IList<UrObjectType> objName= new JavaScriptSerializer().Deserialize<IList<UrObjectType>>(models);
return Json(objName)
}