创建新行时的剑道网格,使用现有行中的值自动填充字段

Posted

技术标签:

【中文标题】创建新行时的剑道网格,使用现有行中的值自动填充字段【英文标题】:Kendo grid when create a new row, auto populate fields with values from existing row 【发布时间】:2019-09-12 03:05:03 【问题描述】:

我有 5 列(剑道网格)从数据库中获取数据。我想要做的是,每当我添加新行时,我希望某些列能够动态地自动填充。

例如,我有 Name、country、state、value 和 effDate 列。

姓名、国家/地区、州字段为editable = false。所以用户只能编辑 value 和 effDate 字段。

如果 Name = John,Country = USA,State = Alaska,Value = 123,effDate = 9/11/2019,当我添加新行时,我希望 Name、country、state 字段填充 Name - John ,国家 - 美国,州 - 阿拉斯加。 Value 和 effDate 只能为空,以便用户可以添加新数据。

我目前正在使用模板。 我尝试使用此方法填充国家/地区列,但没有显示任何内容。

template: "#= Country #"

有没有办法在创建新行时动态预填充?

我的部分网格代码模型:


    id: "NameKey",
    HouseKey: houseKey,
    fields: 
        Name:  editable: false ,
        Country:  editable: false ,
        State:  editable: false ,
        Value: 
            validation: 
                pattern: 
                    value: "^[0-9.]0,10$",
                    message: "Only numbers"
                ,
                required: 
                    message: "Value is required"
                ,
            
        ,
        EffDate:  validation:  required: true , type: "date", format: "0:MM/dd/yyyy" ,
    ,

...

部分列

columns: [
     field: "Name", template: "#=(Name== '') ? 'Fields are auto populated' : Name#", title: "Name", width: 250 ,
     field: "Country", template: "#=(Country== '') ? 'Fields are auto populated' : Countr#", title: "Country", width: 210 ,
     field: "State", template: "#=(StateName == '') ? 'Fields are auto populated' : State#", title:"State", width: 200 ,
     field: "Value", title:"Value", width: 200 ,
    
        field: "EffDate", title;"Date", template: "#= kendo.toString(kendo.parseDate(data.EffDate, 'yyyy-MM-dd'), 'MM/dd/yyyy') #", width: 140
    ,
],

【问题讨论】:

【参考方案1】:

您可以使用beforeEdit 事件来实现该行为。每当用户尝试在网格中编辑创建一个新条目时,都会调用该事件。它接收当前模型,您可以根据需要进行更改:

beforeEdit: function(e) 
    let model = e.model;

    if (model.isNew()) 
        model.Name = "John";
        model.Country = "USA";
        model.State = "Alaska";
    

Demo

【讨论】:

如果我想让它动态工作怎么办?我有很多不同名称的数据。可以是 John、Matt 等任何人。 @davis 只需将它们分配给模型,无论它们来自哪里。

以上是关于创建新行时的剑道网格,使用现有行中的值自动填充字段的主要内容,如果未能解决你的问题,请参考以下文章

使用命令行中的值填充现有 LibreOffice 文档

我如何从 mvc 的剑道 ui 网格的下拉列表中获取选定的值

使用一些默认值在 Kendo Grid 中添加新行

使用 excel 行中的数据自动填充单词。每个 Excel 行的自动填充 Word 文档

剑道自动完成默认值

Eclipse Scout Neon 使用 Tab 键添加新行