Comment définir les valeurs des checkbox et combobox en utilisant Extjs Forme loadRecord?
Quand je lance form.loadRecord(record);
, datas vient à tetfields mais case et combo à l'aide de l'id de la valeur est vide de tout... il y a beaucoup de solutions à ce problème j'ai essayé mais cela ne fonctionne pas pour moi.
Ext.define('Ext.migration.ProductEditPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.producteditpanel',
title: 'Genel Bilgiler',
layout: 'column',
bodyPadding: 5,
ds_activeProductTypes: this.ds_activeProductTypes,
initComponent: function() {
this.items = [{
columnWidth: 0.5,
xtype: 'form',
id: 'productcrudform',
margin: '0 5 0 0',
bodyPadding: 5,
name: 'productcrudform',
url: baseUrl + "productcrud",
defaultType: 'textfield',
items: [{
scale: this,
inputType: 'hidden',
id: 'actionType',
name: 'actionType',
value: this.actionType
},{
fieldLabel: 'ID',labelWidth: 140,
id: 'id',
name: 'id',
disabled: true,
anchor : '100%'
},{
fieldLabel: 'Ürün Adı',labelWidth: 140, anchor : '100%',
id: 'name',
name: 'name'
},{
fieldLabel: 'Kod', labelWidth: 140, anchor : '100%',
name: 'code',
},
{
xtype : 'combo', labelWidth: 140, anchor : '100%',
fieldLabel : 'Ürün Tipi',
name : 'productType.name',
hiddenName : 'productType.id',
store : new Ext.data.ArrayStore({
fields : [ 'productType.id', 'productType.name'],
data : [
[ 1, 'TISORT'],
[ 2, 'POSTER'],
[ 3, 'KAPSONLU'],
[ 4, 'TELEFON_KAPAK']]
}),
mode : 'local',
valueField : 'productType.id',
displayField : 'productType.name'
},{
fieldLabel: 'Aktif', labelWidth: 140, width: 180,
inputType: 'checkbox',
name: 'activeFlag'
},{
name: 'newFlag',
fieldLabel: 'Yeni Ürün', labelWidth: 140, width: 180,
inputType: 'checkbox'
},{
name: 'clearanceFlag',
fieldLabel: 'Tasfiye Ürün', labelWidth: 140, width: 180, anchor : '0%',
inputType: 'checkbox'
}
]
},
{ //PRICE GRID INIT
columnWidth: 0.5,
title: 'Prices',
requires: 'Ext.migration.PriceGrid',
xtype: 'productpricegrid',
id: 'prices-grid',
region: 'center',
border: true,
store: pricesStore
}];
this.callParent(arguments);
},
onSubmit: function() {}
});
Solution 1:
field: {
xtype: 'checkboxfield',
name: 'active_state',
value: 1,
inputValue: 1,
uncheckedValue: 0
}
ou:
field: {
xtype: 'checkboxfield',
name: 'active_state',
value: 1,
inputValue: true,
uncheckedValue: false
}
ou:
field: {
xtype: 'checkboxfield',
name: 'active_state',
value: 1,
inputValue: 'true',
uncheckedValue: 'false'
}
Extjs version 4.0.7
OriginalL'auteur efirat | 2013-05-20
Vous devez vous connecter pour publier un commentaire.
Lorsque vous appelez la loadRecord, pour chaque champ de l'enregistrement d'un champ de formulaire ayant le même nom est recherché et si elle trouve la "setValue" de ce dossier est appelé ainsi, vous avez à regarder de cette méthode pour les cases à cocher et des combos.
Pour les cases à cocher, il est assez facile: par défaut, seules ces valeurs vont vérifier votre case:
alors que tous les autres de la valeur de vérifier comme faux. Donc, si le champ dans votre modèle est défini comme étant de type boolean tout fonctionne (donc peut-être que vous devriez vérifier que le modèle de champ et de la forme nom de l'élément de match). Si vous avez besoin d'un custom valeur "true" il suffit de spécifier le inputValue propriété.
Pour les zones de liste modifiables, il est un peu plus compliqué si leur magasin est défini comme la distance ET sont définis comme des forceSelection vrai ET la valeur du champ est différent de champ d'affichage, mais dans votre cas, il devrait y avoir aucun problème du tout. Je pense que votre problème est que vous avez utilisé ArrayStore, il suffit de passer au magasin de données.
jsfiddle exemple
OriginalL'auteur Eldono