extjs 在数据网格上显示一对多记录

qyswt5oh  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(144)

我可以检查是否有人有任何解决方案来显示记录中的多行
学生模型

  • 姓名
  • 学生的
  • 位址
Ext.define('Student',{
  extend: 'Ext.data.model',

  requires: [
    'Ext.data.field.Field'
  ],
  uses: [
    'Course'
  ],
  fields: [
    {
      mapping : 'name',
      name: 'name'
    },
    {
      mapping : 'studentid',
      name: 'studentid'
    },    
    {
      mapping : 'address',
      name: 'address'
    }
  ],
  hasMany: {
    associatedName: 'Course',
    model: 'Course',
    name: 'Course'
  }
});

课程模型

  • 课程ID
  • 课程名称
  • 课程代码
Ext.define('Course', {
  extend: 'Ext.data.Model',

  requires: [
    'Ext.data.field.Field'
  ],
  uses: [
    'Student'
  ],
  fields: [
    {
      mapping: 'Student.courseid',
      name: 'courseid'
    },    
    {
      mapping: 'Student.coursename',
      name: 'coursename'
    },    
    {
      mapping: 'Student.coursecode',
      name: 'coursecode'
    },
  ],
  belongsTo: {
    associatedName: 'Student',
    model: 'Student',
    name: 'Student'
  }
});

下面是数据记录

{
"name": "John",
"studentid": "122", 
"address": "111 XXX Road" ,
"course"[
 {
  "courseid":"1",
  "coursename":"Math",
  "coursecode":"MATH1"
 },
 {
  "courseid":"2",
  "coursename":"English",
  "coursecode":"ENG1"
 },
 {
  "courseid":"3",
  "coursename":"Science-Chemistry",
  "coursecode":"CHEMI"
 }
]
}

我希望在网格上显示课程详细信息,如下所示
课程代码课程名称

  1. MATH1数学
  2. ENG1英语
  3. CHEMI科学化学
    目前,我只能在渲染器的数据网格上显示一行
columns:[
  {
     xtype: 'gridcolumn',
     renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
         return record.course().first().get('coursecode');
     },
     dataIndex: 'course.coursecode',
     text: 'Course Code'
  },
  {
     xtype: 'gridcolumn',
     renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
         return record.course().first().get('coursename');
     },
     dataIndex: 'course.coursename',
     text: 'Course Name'
  },
]

现在的结果是
课程代码课程名称

  1. MATH1数学
fcipmucu

fcipmucu1#

根据您的实施,您可以用途:

renderer: function(value, metaData, record) {
        const courseStore = record.course();
        let subview = '';

        courseStore.each(function(singleCourseRecord) {
            subview += '<p>' + singleCourseRecord.get('coursecode') + '</p>;
        });

        return subview;
    }

相关问题