Select Dojo dgrid:(预)选择渲染时的行

Select Dojo dgrid:(预)选择渲染时的行,select,dojo,dgrid,Select,Dojo,Dgrid,如何配置dgrid及其存储,以定义渲染行时是否已选择该行 例如,如果我的行数据是这样的: { id: 1, name: 'Item Name', selected: true } 我目前的代码是在存储区填充后循环收集,但我相信一定有更有效的方法来实现这一点 var items = [ {id: 1, name: 'Item 1', selected: true}, {id: 2, name: 'Item 2', selected: false} ]; require(

如何配置dgrid及其存储,以定义渲染行时是否已选择该行

例如,如果我的行数据是这样的:

{
  id: 1,
  name: 'Item Name',
  selected: true
}
我目前的代码是在存储区填充后循环收集,但我相信一定有更有效的方法来实现这一点

var items = [
  {id: 1, name: 'Item 1', selected: true},
  {id: 2, name: 'Item 2', selected: false}
];

require(
  [
    "dgrid/OnDemandGrid",
    "dgrid/Selection",
    "dojo/store/Memory",
    "dojo/_base/declare",
    "dojo/_base/array"
  ],

  function (OnDemandGrid, Selection, Memory, declare, array) {
    var store = new Memory({
        data: items,
        idProperty: "id"
    });

    var grid = new declare([OnDemandGrid, Selection])({
        selectionMode: "multiple",
        columns: {
          id: { label: "ID" },
          name: { label: "Name" }
        },
        store: store
      }, "MyGrid");

      array.forEach(items, function (item) {
        if (item.selected) {
          grid.select(grid.row(item.id));
        }
      });

      grid.startup();
    });
  }
);

似乎
Selection.js
也是这样做的,但我刚刚有了一个想法,如何让选择成为渲染过程的一部分:

var grid = new declare([OnDemandGrid, Selection])({
    selectionMode: "multiple",
    store: store,
    columns: {
        id: {
            label: "ID",
            get: function(item) {
                var grid = this.grid;
                if (item.selected === true) {
                    grid.select(grid.row(item.id));
                }
                return item.id;
            }            
        },
        name: { label: "Name" }
    },
    "MyGrid"
);

在行动中查看它:

我找到了这篇文章,并希望就这个问题作出承诺。 我想得到dgrid中的第一行数据,这就是我找到这篇文章的地方。但它帮助我解决问题

在第一列中,我添加了一个“get”函数,能够找到并选择第一条记录。 我希望这能帮助任何试图获取或选择dgrid中第一条记录的人

var列=[
{标签:“名称”,字段:'_item',x:null,
格式化程序:lang.hitch(this,this.\u nameFormatter),
get:lang.hitch(此,函数(项){
console.log(项目)
如果(!this.x){
this.x=item.id;
this.grid.select(item.id);
this.detailsPane.setDetails(item.id);
退货项目;
}否则{
退货项目;
}
})
},
{标签:“电子邮件”,字段:“电子邮件”,
格式化程序:lang.hitch(this,this.\u电子邮件格式化程序)
},
{标签:“电话”,字段:“电话”},
{标签:'地址',字段:'地址'},
{标签:'城市',字段:'城市'},
{标签:'State',字段:'State'},
{标签:'Zip Code',字段:'zipcode'}
];

这就成功了。注意,对于其他使用dgrid/selector的用户,get方法应添加到selector对象,而不是常规列,因为即使选中了行,也不会选中复选框/单选框。