首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从ExtJS网格显示具有不同存储区的嵌套对象

如何从ExtJS网格显示具有不同存储区的嵌套对象
EN

Stack Overflow用户
提问于 2021-02-09 21:45:36
回答 2查看 76关注 0票数 0

我想在Ext Grid上父对象的子对象上进行REST操作。我需要使用rowExpander,而不是rowWidget,因为我使用的是现代工具包。

以下是我的API中的示例JSON数据:

代码语言:javascript
复制
{
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1,
    "hasPreviousPage": false,
    "hasNextPage": false
  },
  "data": [
    {
      "id": 2,
      "customer": "Mark",
      "dateRented": "2021-02-09T21:18:40.667",
      "movieRentals": [
        {
          "id": 5,
          "rentalDetailDtoId": 2,
          "movie": "Shingeki no Kyojin",
          "dateReturned": null
        },
        {
          "id": 6,
          "rentalDetailDtoId": 2,
          "movie": "Insidous 2",
          "dateReturned": null
        }
      ]
    },
    {
      "id": 1,
      "customer": "Samuel",
      "dateRented": "2021-02-09T21:17:18.403",
      "movieRentals": [
        {
          "id": 3,
          "rentalDetailDtoId": 1,
          "movie": "Home Alone",
          "dateReturned": null
        },
        {
          "id": 4,
          "rentalDetailDtoId": 1,
          "movie": "Neighbors",
          "dateReturned": null
        }
      ]
    }
  ]
}

我想为每个客户显示它,并且我在movieRentals对象上有一个REST操作POST。我想使用RowExpander,但我不确定如何使用它。

这是我当前的ExtJS网格代码:

代码语言:javascript
复制
Ext.define('Vidly.view.rental.DisplayRentalsView', {
    extend: 'Ext.grid.Grid',
    xtype: 'displayrentalsview',
    reference: 'rentallist',
    title: 'Rental List',
    controller: 'displayrentalsviewcontroller',
    viewModel: 'rentalsviewmodel',
    reference:'displayrentalsviewgrid',
    selType: 'rowmodel',
    selModel:
    {
        mode: 'SINGLE'
    },
    viewConfig:
    {
        stripeRows: true
    },
    listeners: {
        selectionchange: 'onSelectionChange',
        show: 'onShow',
    },
    bind: {
        store: '{RentalListStore}'
    },
    itemConfig: {
        viewModel: true 
    },
    plugins: {
        pagingtoolbar: true
    },
    items: [
        {
            xtype: 'container',
            docked: 'top',
            items: [
                {
                    docked: 'left',
                    xtype: 'button',
                    ui: 'decline',
                    itemId: 'returnRental',
                    text: 'Return Rental',
                    reference: 'btnReturnRental',
                    handler: 'onReturnClick',
                    disabled: true,
                }
            ]
        },
    ],
    columns: [
        {
            text: "Customer",
            flex: 1,
            dataIndex: 'customer',
            editor:
            {
                allowBlank: false
            },
        },
        {
            text: "Movie",
            flex: 1,
            dataIndex: 'movieRental',
            editor:
            {
                allowBlank: false
            },
        },
        {
            text: "Date Rented",
            flex: 1,
            dataIndex: 'dateRented',
            editor:
            {
                allowBlank: false
            },
            renderer: function (value, metaData, record) {
                if (value != null && value != "") {
                    var dateRented = new Date(Date.parse(value))
                    return Ext.Date.format(dateRented, 'm/d/Y')
                }
                else {
                    return "";
                }
            }
        },
        {
            text: "Date Returned",
            flex: 1,
            dataIndex: 'dateReturned',
            editor:
            {
                allowBlank: false
            },
            renderer: function (value, metaData, record) {
                if (value != null && value != "") {
                    var dateRented = new Date(Date.parse(value))
                    return Ext.Date.format(dateRented, 'm/d/Y')
                }
                else {
                    return "";
                }
            }
        }
    ],
});
EN

Stack Overflow用户

发布于 2021-02-11 15:27:55

好的,您应该更深入地研究一下https://docs.sencha.com/extjs/7.3.1/modern/Ext.grid.Row.html#events

代码语言:javascript
复制
itemConfig: {
  body: {
    tpl: '<p>Hello World</p>',
    listeners: {
      beforeshow: sender => {
        console.log(sender);
        // Here you can tell your record to fetch data
      }
    }
  }
}

您可以随意使用小提琴https://fiddle.sencha.com/#fiddle/3bq5&view/editor

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66120233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档