Kendo ui 剑道UI网格编辑问题
我尝试使用剑道格网,发现了一些问题 当我单击时,按钮操作“编辑”和“删除”不起任何作用,但是如果我将“创建”命令放入传输中,当我单击“删除”或单击“编辑”>“取消”(更新按钮也不起任何作用)时,网格会为创建URL命令发送大量帖子 我做错了什么 我的代码:Kendo ui 剑道UI网格编辑问题,kendo-ui,kendo-grid,inline-editing,Kendo Ui,Kendo Grid,Inline Editing,我尝试使用剑道格网,发现了一些问题 当我单击时,按钮操作“编辑”和“删除”不起任何作用,但是如果我将“创建”命令放入传输中,当我单击“删除”或单击“编辑”>“取消”(更新按钮也不起任何作用)时,网格会为创建URL命令发送大量帖子 我做错了什么 我的代码: <div id="grid"></div> <script type="text/x-kendo-template" id="template"> <div class="toolbar">
<div id="grid"></div>
<script type="text/x-kendo-template" id="template">
<div class="toolbar">
<input type="number" min="0" id="item-id" maxlength="10" />
<input type="text" id="name" class="k-textbox" placeholder="..." />
<button style="width: 100px" id="btn-grid-filtrar" class="k-button" >Filter</button>
</div>
</script>
<script>
$(document).ready(function() {
var dataSource = new kendo.data.DataSource(
{
schema:
{
data: "data",
total: "total",
model:
{
id: "data",
fields:
{
id: { editable: false, nullable: false },
nome: { type: "string", validation: { required: true} },
ativo: { type: "boolean" }
}
}
},
transport:
{
read:
{
url: "page",
dataType: "json",
type: "POST",
data: additionalData
},
update: {
url: "update",
dataType: "jsonp"
},
destroy: {
url: "delete",
dataType: "jsonp"
}
/*,
create: {
url: "add",
dataType: "jsonp"
}
*/
},
pageSize: 5,
serverSorting: true,
serverPaging: true,
});
var grid = $("#grid").kendoGrid({
dataSource: dataSource,
sortable: true,
pageable: {
input: true,
numeric: false
},
batch: true,
columns: [
{ field: "id", title: "#", width: "60px" },
{ field: "nome", title: "Nome" },
{ field: "ativo", title: "Ativo", width: "60px", template: "#= ativo ? 'Sim' : 'Não' #" },
{ command: ["edit", "destroy"], title: "Ações", width: "200px" }
],
editable: "inline",
toolbar: kendo.template($("#template").html()),
});
kendo.bind($(".toolbar"));
$("#id").kendoNumericTextBox({
format: "##########",
placeholder: "..."
});
$("#btn-grid-filtrar").click(function() {
grid.data("kendoGrid").dataSource.read();
});
});
function additionalData() {
return {
filtro_id: $("#item-id").val(),
filtro_nome: $("#name").val()
};
}
</script>
滤器
$(文档).ready(函数(){
var dataSource=new kendo.data.dataSource(
{
模式:
{
数据:“数据”,
总计:“总计”,
型号:
{
id:“数据”,
领域:
{
id:{editable:false,nullable:false},
nome:{type:“string”,验证:{required:true},
ativo:{type:“boolean”}
}
}
},
运输:
{
阅读:
{
url:“页面”,
数据类型:“json”,
类型:“POST”,
数据:附加数据
},
更新:{
url:“更新”,
数据类型:“jsonp”
},
销毁:{
网址:“删除”,
数据类型:“jsonp”
}
/*,
创建:{
网址:“添加”,
数据类型:“jsonp”
}
*/
},
页面大小:5,
对,,
对,,
});
var grid=$(“#grid”).kendoGrid({
数据源:数据源,
可排序:是的,
可分页:{
输入:正确,
数字:false
},
批次:对,
栏目:[
{字段:“id”,标题:“#”,宽度:“60px”},
{字段:“nome”,标题:“nome”},
{字段:“ativo”,标题:“ativo”,宽度:“60px”,模板:“#=ativo?'Sim':'N#o'”,
{命令:[“编辑”、“销毁”],标题:“Ações”,宽度:“200px”}
],
可编辑:“内联”,
工具栏:kendo.template($(“#template”).html(),
});
绑定($(“.toolbar”);
$(“#id”).kendonumeric文本框({
格式:“#########”,
占位符:“…”
});
$(“#btn网格过滤器”)。单击(函数(){
grid.data(“kendoGrid”).dataSource.read();
});
});
函数additionalData(){
返回{
过滤器id:$(“#项目id”).val(),
过滤器名称:$(“#名称”).val()
};
}
您不应该为本地数据源定义传输级别,如果正确理解您的代码,您不会在任何地方发布-您没有绑定任何远程数据,我看不到任何url?遵循这个例子 首先,我假设您的服务器提供的JSON格式如下:
{
"total": 2,
"data" : [
{
"data" : 23,
"id" : 1,
"ativo": true,
"nome" : "stock-1"
},
{
"data" : 34,
"id" : 2,
"ativo": false,
"nome" : "stock-2"
}
]
}
对吗
因此,第一件事是将每行data
上的“数据”更改为不称为data
的内容。事实证明,data
是KendoUI中的一种保留字,常用于代码结构中,如下所示:
with (data) {
// Expanded code coming from a grid row data
}
其中,数据
是引用网格中某行的变量。因此,在这个上下文中,data
既是行本身,也是该行中的一个字段,因此JavaScript无法正确地解决它
因此,您可以将模式定义为:
schema : {
data : "data",
total: "total",
model: {
id : "_data",
fields: {
id : { editable: false, nullable: false },
nome : { type: "string", validation: { required: true} },
ativo: { type: "boolean" }
}
}
},
注意:我已将数据
替换为\u数据
传输的数据是:
{
"total": 2,
"data" : [
{
"_data" : 23,
"id" : 1,
"ativo": true,
"nome" : "stock-1"
},
{
"_data" : 34,
"id" : 2,
"ativo": false,
"nome" : "stock-2"
}
]
}
只需做这个小小的更改,您的
编辑按钮就会开始工作。Thx@OnaBai。问题解决了。我更改了我的模型ID,它就工作了!我的代码现在可以正常工作了。url:“更新”指向正确的命运。我只是不放完整的URL,比如剑道示例。当你说“很多帖子”时,你的意思是当你点击一个命令按钮时,你看到的是多个请求,而不是一个到预期URL的请求?