2011-09-19 49 views
5

Trong ứng dụng Extjs4 của tôi, tôi có lưới và biểu mẫu.Extjs 4, các biểu mẫu có hộp kiểm và loadRecord

Mô hình sử dụng:

Ext.define('TestApplication.model.User', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'id', type: 'int', useNull: true }, 
     { name: 'email', type: 'string'}, 
     { name: 'name', type: 'string'}, 
     { name: 'surname', type: 'string'} 
    ], 
    hasMany: { model: 'Agency', name: 'agencies' }, 
}); 

Và Cơ quan:

Ext.define('Magellano.model.Agency', { 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'id', type: 'int', useNull: true}, 
    {name: 'name', type: 'string'} 
    ] 
}); 

Sau đó, trong hình thức của tôi, tôi là tạo ra các hộp kiểm:

[...] 
    initComponent: function() { 
    var store = Ext.getStore('Agencies'); 
    var checkbox_values = {xtype: 'checkboxfield', name: 'agencies[]'}; 
    var checkboxes = [] 

    store.each(function(record){ 
     var checkbox = {xtype: 'checkboxfield', name: 'agency_ids', 
         boxLabel: record.get('name'), inputValue: record.get('id')}; 
     checkbox.checked = true; 
     checkboxes.push(checkbox) 
    }); 
    this.items = [{ 
     title: 'User', 
     xtype: 'fieldset', 
     flex: 1, 
     margin: '0 5 0 0', 
     items: [{ 
     { xtype: 'textfield', name: 'email', fieldLabel: 'Email' }, 
     { xtype: 'textfield', name: 'name', fieldLabel: 'Nome' }, 
    }, { 
     title: 'Agencies', 
     xtype: 'fieldset', 
     flex: 1, 
     items: checkboxes 
    }]; 
[...] 

Tất cả mọi thứ hoạt động tốt cho việc gửi hình thức Tôi nhận được tất cả dữ liệu và có thể lưu nó vào cơ sở dữ liệu.

Khi người dùng nhấp vào lưới ghi được nạp theo hình thức với tiêu chuẩn:

form.loadRecord(record); 

Vấn đề là các hộp kiểm không được kiểm tra. Có bất kỳ quy ước đặt tên nào cho các phần tử hộp kiểm để Extjs có thể phát hiện những gì cần thiết không? Làm thế nào tôi có thể thiết lập các mối quan hệ để hình thức sẽ hiểu những gì để kiểm tra? Hay tôi nên làm mọi thứ bằng tay?

Trả lời

3

Trong biểu mẫu, bạn có thể làm một cái gì đó như thế này:

{ 
    xtype: 'checkboxfield', 
    name: 'test',         
    boxLabel: 'Test', 
    inputValue: 'true', 
    uncheckedValue: 'false' 
} 
+1

tôi thêm này params để hộp kiểm nhưng không thay đổi ... vấn đề chính xác với các hộp kiểm trên biểu mẫu là gì? – efirat

+0

vấn đề của tôi là tôi đã sử dụng xtype: 'textfield' với inputType: 'checkbox' xuất hiện chức năng nhưng không hoạt động chính xác cho đến khi tôi thay đổi xtype. cảm ơn bạn –

0

Tôi tin rằng bạn phải sử dụng someCheckbox.setValue(true) để kiểm tra một hộp kiểm tự động, hoặc bỏ chọn someCheckbox.setValue(false)

Các vấn đề liên quan