- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个模型存储空间:
Ext.define('App.Supplier.Store', {
extend : 'Ext.data.Store',
constructor : function(config) {
Ext.regModel('Supplier', {
fields: [
{name: 'id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'irn', type: 'string'}
],
hasMany : {model: 'SupplierContact', name: 'contacts', associationKey: 'contacts'}
});
Ext.regModel('SupplierContact', {
fields: [
{name: 'id', type: 'int'},
{name: 'email', type: 'string'},
{name: 'phone', type: 'string'},
{name: 'name', type: 'string'}
],
belongsTo: 'Supplier'
});
config = config || {};
config.model = 'Supplier';
config.proxy = {
type : 'ajax',
url : '/supplier/search/process',
reader : {
type : 'json',
root : 'data',
totalProperty : 'totalCount',
successProperty: 'success'
}
};
config.pageSize = 10;
config.remoteSort = true;
config.simpleSortMode = true;
// call the superclass's constructor
App.Supplier.Store.superclass.constructor.call(this, config);
}
});
我有一个来自 url 的有效 json,这段代码工作正常:
var store = new App.Supplier.Store({storeId: 'supplierStore'});
store.load({
callback: function() {
var supplier = store.first();
console.log("Order ID: " + supplier.getId() + ", which contains items:");
supplier.contacts().each(function(contact) {
alert(contact.data.phone);
});
}
});
我的网格:
Ext.define('App.Supplier.Grid', {
extend : 'Ext.grid.GridPanel',
alias : 'widget.supplierGrid',
cls : 'supplier-grid',
iconCls: 'icon-grid',
collapsible: true,
animCollapse: false,
title: 'Expander Rows in a Collapsible Grid',
height: 300,
buttonAlign:'center',
headers : [
{text : 'Id', dataIndex : 'id', width : 20},
{text : 'Name', dataIndex : 'name', flex : 4 },
{text : 'IRN', dataIndex : 'irn', flex : 3}
],
initComponent : function() {
this.store = new App.Supplier.Store({storeId: 'supplierStore'});
this.store.load();
this.callParent(arguments);
this.on('selectionchange', this.onRowSelect, this);
},
onRowSelect: function(sm, rs) {
if (rs.length) {
alert(sm.contacts); // undefined
alert(rm.contacts); // undefined
var info = this.getComponent('infoPanel');
info.updateDetail(rs[0].data);
}
}
});
如何在 onRowSelect 中获取选定行的联系人?
PS: 来自服务器的 json:
{"totalCount":100,
"success":true,
"data":[{
"id":2,
"name":"department 0",
"irn":"123490345907346123-0",
"contacts":[{
"id":3,
"phone":"+7907 123 12 23",
"email":"test@localhost",
"name":"hh"
}, {
"id":4,
"phone":"+7832 123 12 23",
"email":"test2@localhost",
"name":"gtftyf"
}]
}]}
最佳答案
你能提供你的json吗?我认为您的 json 不正确,因此 ExtJS 也会加载关系。为了也加载关系,您还需要在返回的 json 中提供联系人详细信息。
你应该有这样的东西:
sucess: true,
totalCount: 10,
data: [{
id: 142,
name: 'xyz',
irn: 'test',
contacts: [{
id: 130,
email: 'xyz@site.com',
phone: 123445,
name: 'Supplier XYZ'
},{
id: 131,
email: 'test@site.com',
phone: 123445,
name: 'Supplier XYZ'
}]
}, ...
]
更新:
Json是对的!问题在于您访问数据的方式。如果您查看 selectionchange
事件的签名,您会注意到第一个是 DataView,第二个是所选记录的数组。因此,在您的情况下,rs 是所选行的数组。您应该能够以 rs[0].contacts
的形式访问它。
访问所选记录的另一种方法是使用 DataView 对象。您可以使用 getSelectedRecords
方法获取所选记录的数组。
关于extjs - 如何在extjs4 grid selectionchange事件中获取具有hasMany关系的子项数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5384139/
打个比方,我们在 ComboBox 中有两个 Mr Men: 快乐先生 脾气暴躁的先生 我的 ViewModel 上有一个属性(在一定程度上使用 MVVM,在后面的代码中有一个 SelectionCh
我有一个 QTableView我需要从中获取 selectionChanged 事件。我似乎无法连接工作。我有: MyWidget.h ... protected slots: void slotL
我有一个权谋的问题(对我来说)。在我的 WPF 应用程序中,我有一个 ListBox,它在 ItemTemplate 中有一个 Combobox。当用户选择 ComboBoxItem 时,我必须对作为
我有一个 TabControl凡TabItem有一个单独的控件作为它的 Content元素。现在,我可以使用 UserControl.Loaded 在切换到选项卡时轻松执行 Storyboard。事件
我正在尝试编写跨浏览器 Web 扩展。 根据网页上的选定值,我想在上下文菜单中创建适当的条目。我创建了一个示例代码来检查浏览器是否正在进入事件监听器。在 Chrome 中,一切正常,但在 Firefo
ComboBox 上的 SelectionChanged 事件似乎仍然显示旧值。我需要获取它被更改为的值。有什么想法吗? 目前在我使用的 XAML 代码上: SelectionChanged="Txt
我在自己的应用程序上使用 ag-grid。我使用选项 checkboxSelection: true。当我点击复选框事件 selectionChanged 不包含行的表单数据。如何获取此数据? 代码
我有一个 DataGridViewComboBoxCell 控件,其中包含一些项目。我想在用户从下拉列表中选择一个值时获取这些值。我不能在可以使用 EditingControlShowing 的地方使
我通过以下 excel-vba 代码激活工作表上的给定单元格范围: Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVa
我一直在做一些研究,但其他人在这方面和我没有完全一样的问题,或者一直试图达到不同的目标。 我编写了一个宏(发布在下面),最终目标是根据用户先前的选择隐藏不相关的行。目前宏将实现最终目标,但并不完全符合
我只收到第一个事件通知,之后什么也没有发生。有什么想法吗? UPD:我发现了一件奇怪的事情。我的事件处理程序代码如下所示: var cell = range.C
我有一个 ListView绑定(bind)到 ItemsSource和 SelectionChanged事件在加载/数据绑定(bind)事件上触发?我认为这是因为选择了“默认”项目,即索引 0。 我怎
我想在特定的 div 元素上实现 JavaScrit selectionchange 事件,因此如果用户从 DOM 中选择文本,我想显示一个荧光笔框。我已经通过 onmouseup 事件在网络上实现了
我写了以下代码: Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim myValue As Variant If Rang
我的问题是我想在我的 ViewModel 中调用“SelectionChanged”事件。 我有一个 ComboBox(这里称为 ListPicker,它是一个电话应用程序): 我在 ViewMod
我有一些 ComboBox控件,每个控件都有一些值。每个选定的值都会触发我的一个事件。 当从 ComboBoxA 中选择项目时,我的事件将使用所选项目的值触发。 当我的一个组合框刚刚打开和关闭时,其中
我创建了一个小宏来返回唯一值的数量,并在选择范围时将其显示在 Excel 的状态栏中。这在文档级别工作得很好。但是,当我尝试在应用程序级别运行 SelectionChange 事件时,该事件并未启动。
在 Windows UWP 中,NavigationView 的 ItemInvoked 和 SelectionChanged 事件有什么区别? API reference州 ItemInvoked
我有一个网格和一个表单,每次我们在该网格上选择一行时,我都需要在表单上显示不同的项目 我一直在寻找如何做到这一点,并找到了 Ext.getCmp('myform').hide() // or
我正在开发一个 Eclipse RCP 项目。它有几个带有 TreeViewer 的 View ,我使用 selectionChanged() 方法来处理选择事件。但是,有时我需要以编程方式设置选择。
我是一名优秀的程序员,十分优秀!