Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 剑道ui网格多次添加记录_Javascript_Kendo Ui_Kendo Grid - Fatal编程技术网

Javascript 剑道ui网格多次添加记录

Javascript 剑道ui网格多次添加记录,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我有一个剑道ui网格,在更改行事件时,我获取行id并将其传递给另一个加载其他网格的函数。我试图简化操作以找出这样的错误 HTML代码 <input type="button" id="load-first" value="Load 108" /> <input type="button" id="load-second" value="Load 92" /> Javascript $("#load-first").click(function(){

我有一个剑道ui网格,在更改行事件时,我获取行id并将其传递给另一个加载其他网格的函数。我试图简化操作以找出这样的错误

HTML代码

<input type="button" id="load-first" value="Load 108" />    
<input type="button" id="load-second" value="Load 92" />

Javascript

$("#load-first").click(function(){
    loadEmailGrid(108);
});
$("#load-second").click(function(){
    loadEmailGrid(92);
});

  function loadEmailGrid(salesRepsId) {
      dataSource = new kendo.data.DataSource({
          transport: {
              read: {
                  url: "operations/get_emails_sales_reps.php?salesRepsId=" + salesRepsId,
                  type: "GET"
              },
              update: {
                  url: "operations/edit_email.php?salesRepsId=" + salesRepsId,
                  type: "POST",
                  complete: function (e) {
                      $("#email-grid").data("kendoGrid").dataSource.read();
                  }
              },
              destroy: {
                  url: "operations/delete_email.php",
                  type: "POST",
                  complete: function (e) {
                      $("#email-grid").data("kendoGrid").dataSource.read();
                  }
              },
              create: {
                  url: "operations/add_email.php?salesRepsId=" + salesRepsId,
                  type: "POST",
                  complete: function (e) {
                      $("#email-grid").data("kendoGrid").dataSource.read();
                  }
              },
          },
          schema: {
              data: "data",
              total: "data.length", //total amount of records
              model: {
                  id: "EmailId",
                  fields: {
                      EmailType: {
                          defaultValue: {
                              EmailTypeId: 2,
                              EmailTypeName: "Home"
                          }
                      },
                      EmailText: {
                          type: "string"
                      },
                      IsMainEmail: {
                          type: "boolean"
                      },
                  }
              }

          },
          pageSize: 5,
      });
      //dataSource.sync();
      $("#email-grid").kendoGrid({
          dataSource: dataSource,
          height: 250,
          filterable: true,
          sortable: true,
          pageable: true,
          reorderable: false,
          groupable: false,
          batch: true,
          navigatable: true,
          toolbar: ["create", "save", "cancel"],
          editable: true,
          columns: [{
              field: "EmailType",
              title: "Type",
              editor: EmailTypeDropDownEditor,
              template: "#=EmailType.EmailTypeName#",
              filterable: {
                  extra: false,
                  field: "EmailType.EmailTypeName",
                  operators: {
                      string: {
                          startswith: "Starts with",
                          eq: "Is equal to",
                          neq: "Is not equal to"
                      }
                  }
              }
          }, {
              field: "EmailText",
              title: "Email",

          }, {
              field: "IsMainEmail",
              title: "Main?",
              width: 65,
              template: function (e) {
                  if (e.IsMainEmail == true) {
                      return '<img align="center" src ="images/check-icon.png" />';
                  } else {
                      return '';
                  }
              }
              // hidden: true

          }, {
              command: "destroy",
              title: "&nbsp;",
              width: 90
          },

          ]
      });
  }
$(“#先加载”)。单击(函数(){
负荷网格(108);
});
$(“#加载秒”)。单击(函数(){
负荷网格(92);
});
函数loadEmailGrid(salesRepsId){
dataSource=新建kendo.data.dataSource({
运输:{
阅读:{
url:“operations/get_emails_sales_reps.php?salesRepsId=“+salesRepsId,
键入:“获取”
},
更新:{
url:“operations/edit_email.php?salesRepsId=“+salesRepsId,
类型:“POST”,
完成:功能(e){
$(“#电子邮件网格”).data(“kendoGrid”).dataSource.read();
}
},
销毁:{
url:“operations/delete_email.php”,
类型:“POST”,
完成:功能(e){
$(“#电子邮件网格”).data(“kendoGrid”).dataSource.read();
}
},
创建:{
url:“operations/add_email.php?salesRepsId=“+salesRepsId,
类型:“POST”,
完成:功能(e){
$(“#电子邮件网格”).data(“kendoGrid”).dataSource.read();
}
},
},
模式:{
数据:“数据”,
总计:“data.length”,//记录总数
型号:{
id:“电子邮件id”,
字段:{
电子邮件类型:{
默认值:{
EmailTypeId:2,
EmailTypeName:“主页”
}
},
电子邮件文本:{
类型:“字符串”
},
Ismain电子邮件:{
类型:“布尔”
},
}
}
},
页面大小:5,
});
//dataSource.sync();
$(“#电子邮件网格”).kendoGrid({
数据源:数据源,
身高:250,
可过滤:正确,
可排序:是的,
pageable:对,
可重排序:false,
分组:false,
批次:对,
可导航:是的,
工具栏:[“创建”、“保存”、“取消”],
是的,
栏目:[{
字段:“EmailType”,
标题:“类型”,
编辑:EmailTypeDropDownEditor,
模板:“#=EmailType.EmailTypeName#”,
可过滤:{
额外:错,
字段:“EmailType.EmailTypeName”,
操作员:{
字符串:{
startswith:“以开始”,
情商:“等于”,
neq:“不等于”
}
}
}
}, {
字段:“EmailText”,
标题:“电子邮件”,
}, {
字段:“IsMainEmail”,
标题:“主要?”,
宽度:65,
模板:函数(e){
如果(e.IsMainEmail==true){
返回“”;
}否则{
返回“”;
}
}
//隐藏:真的
}, {
命令:“摧毁”,
标题:“,
宽度:90
},
]
});
}
return add_email.php示例

[{“EmailId”:200}]

例如,如果我用一个id加载网格,我单击Load108按钮。add操作非常有效。但当我在两个按钮之间点击并混合时。ie加载具有不同id的网格 add函数调用多次,一个使用以前的id,另一个使用单击的按钮id。按钮之间的混合单击越多,调用的add函数越多

这是一个说明问题的例子


求你了,我怎样才能解决这个问题?我尝试了很多事情,但都没有成功

您使用了全局变量,因此您混淆了数据源

改变

dataSource = new kendo.data.DataSource({...

然后再试一次

编辑:


尝试将此作为脚本代码

您必须做的主要事情是将网格的初始化与传输选项的更改分开

例如:

function loadDatasourceWithId(salesRepsId){
    var dataSourceOptions = dataSource.options; // find somehow the dataSource options
    dataSourceOptions.transport.read.url = "operations/get_emails_sales_reps.php?salesRepsId="+salesRepsId;
    dataSourceOptions.transport.update.url = "operations/edit_email.php?salesRepsId="+salesRepsId;
    dataSourceOptions.transport.create.url = "operations/add_email.php?salesRepsId="+salesRepsId

    datasource.read(); // read again to get new values to your dataSource
}

请查看上面的链接,也许你能找到一些东西,我来看看。到底是什么问题?每次单击按钮似乎都会替换旧的数据源。你能告诉我如何重现这个问题吗?使用firebug检查,加载108网格,然后加载92网格。尝试添加新记录时,添加函数将被调用两次,并将其作为脚本代码。您需要做的主要事情是将网格的初始化与传输选项的更改分开。非常感谢。我将初始化与更改数据源分离。它工作得很好
function loadDatasourceWithId(salesRepsId){
    var dataSourceOptions = dataSource.options; // find somehow the dataSource options
    dataSourceOptions.transport.read.url = "operations/get_emails_sales_reps.php?salesRepsId="+salesRepsId;
    dataSourceOptions.transport.update.url = "operations/edit_email.php?salesRepsId="+salesRepsId;
    dataSourceOptions.transport.create.url = "operations/add_email.php?salesRepsId="+salesRepsId

    datasource.read(); // read again to get new values to your dataSource
}