当前位置: 首页 > 知识库问答 >
问题:

剑道网格编辑弹出窗口mvvm绑定似乎失败

微生乐
2023-03-14

当我添加新行并在编辑eventHandler(model.set(“port”,“udp”))中设置模型属性的值时,网格弹出mvvm绑定似乎失败,但选择输入不会更改值,并且从调试器控制台显示该事件。模型的属性值保持不变。

但是在我手动选择端口后,我尝试model.set(端口,tcp),它工作!

我混淆了输入元素的值字段绑定机制和剑道模型绑定的时间。。。

Html部分如下所示:

<div class="k-block k-shadow">
<table style="width:100%;">
<tr><td><button class="btn-add" id="ButtonNew" type="button" onclick="addSetting()">New</button></td></tr></table>
</div>
<div class="k-block k-shadow">
  <div id="logForwardingGrid"></div>
</div>

如下所示:

var dataSource = new kendo.data.DataSource({
  data:{"items":[{"seq":8,"ip":"10.0.0.99","port":36,"protocol":"udp","enable":false}]},
  schema: {
    data: "items",
    model: {
      id: "seq",
      fields: {
        seq: { type: "int", editable: false, validation: { required: false} },
        port: { type: "int",editable: true, validation: { required: true} },
        protocol: { type: "string",editable: true, validation: { required: true} },
        enable: { type: "boolean", validation: { required: true} },
      }
    }
  },
});
$("#logForwardingGrid").kendoGrid({
  dataSource: dataSource,
  columns: [{
    field: "seq",
    hiddenEdit: true,
    hidden: true
  }, {
    field: "ip",
    title: "IP",
  }, {
    field: "port",
    title: "Port",
  }, {
    field: "protocol",
    title: "Protocol",
    editor: protocalEditor
  }],
  editable: {
    mode:"popup",
  },
  edit: function(e) {
    if (e.model.isNew()) {
        //fail !! e.model's value of property("protocol") keep unchanged
       e.model.set("protocol","udp")
       console.log(e.model)
    }  
  }
});
    function protocalEditor(container,options){
  var data = [{ text: "udp", value: "udp" },{ text: "tcp", value: "tcp" }]
  $('<input id="protocol" name="protocol" required  data-bind="value:'+ options.field +'"/>')
        .appendTo(container).kendoDropDownList({
        dataSource:data,
        dataTextField: "text",
        dataValueField: "value",
  });

}

function addSetting(){
  $("#logForwardingGrid").data("kendoGrid").addRow();
}

共有1个答案

贺兴平
2023-03-14

尝试为模型声明中的字段提供defaultValue

var dataSource = new kendo.data.DataSource({
  data:{"items": [{"seq":8,"ip":"10.0.0.99","port":36,"protocol":"udp","enable":false}]},
  schema: {
    data: "items",
    model: {
      id: "seq",
      fields: {
        seq: { type: "int", editable: false, validation: { required: false} },
        port: { type: "int",editable: true, validation: { required: true} },
        protocol: { type: "string",editable: true, validation: { required: true}, defaultValue: "tcp" },
        enable: { type: "boolean", validation: { required: true} },
      }
    }
  },
});

我不知道为什么,但这似乎解决了问题。见道场的工作示例。

 类似资料:
  • 我正在使用Kendo网格,其中有几个列用于概览行数据。当用户单击添加/编辑按钮时,弹出窗口将显示一些附加数据,其中包括一些复选框。 我在将复选框与当前MVVM模型绑定时遇到问题,因为在添加新行时,Kendo将模型视为变量,而不是数组。这会导致在选中一个复选框(单击)时选中多个复选框。在看了剑道MVVM之后,我打算得到当前弹出窗口的MVVM模型,以便操作一些数据,但没有成功。因此,我将在以下方面寻求

  • 我想在显示(打开)弹出编辑器之前得到确认,单击剑道网格中的编辑命令按钮与删除确认相同。 我使用了网格的编辑事件。它成功地显示了确认对话框,但其后面也打开了弹出编辑器窗口。 是否有任何方法我只能在用户确认后显示弹出编辑器窗口?

  • 我在我的项目中为10个产品创建了剑道网格。当我点击剑道网格中显示的productname时,我希望弹出包含产品详细信息的剑道窗口。 我已经查看了剑道网格的演示,但我不想编辑所选产品的详细信息,也不想使用示例和演示中所示的“详细信息”按钮的单独列。 我还查看了剑道ui的音乐商店演示,但我无法理解它的代码,因为它在jQuery中,我正在使用asp。net mvc与我的项目的razor语法 注意:我希望

  • 我见过其他类似的问题,但似乎到目前为止我做的一切都是对的,没有任何效果。正如标题所述,对于我的一个专栏,我试图使用dropdownlist作为弹出窗口中的字段。 指数cshtml: 然后在/Views/Shared/EditorTemplates DeptDropdown的内部。cshtml: 然后是版本\实用程序\模型的内部。反恐精英:

  • 我正在使用剑道用户界面ASP。NET MVC网格(Razor)在Ajax模式下使用弹出式编辑器。 比如说:客户有订单 应用程序的用户转到显示所有客户的网格。允许用户添加/编辑/删除客户(及其订单)。但是当用户点击编辑,弹出编辑器出现时,我想加载订单。我不想急于加载订单,因为一个客户可能有很多订单,用户可能根本不会编辑任何客户。 看起来这应该是一件简单的事情。我浏览了所有论坛/问题。我找不到这样的例

  • 我无法编辑剑道网格内联和弹出两者。单击“保存”按钮时,我的操作方法无法获取当前编辑单元格的值。 控制器代码: 在控制器中,我只得到空值。请帮帮我,我想使用剑道mvvm教学。