さまざまな方法で動的に設定しようとしたdijit.form.Selectの選択値を持つ動的道場フォームがあります。選択ウィジェットを取得してデータをロードして表示しますが、すべての試行を常に無視します。dojo1.7を使用しています。
var bcntryval = <?= $this->billingContact->countryId;?>;
var countryStore;
function onBillingShow() {
if (countryStore) countryStore.close();
countryStore = new dojo.data.ItemFileReadStore({url: 'CartUtilities.php?action=getcountries'});
dijit.byId("bcntry").setStore(countryStore, bcntryval); // does not set value! but does set the store
dijit.byId("bcntry").attr('value', String(bcntryval)); // doesn't set the value either
dijit.byId("bcntry").set('value', bcntryval)); // nor does this!
}
bcntryウィジェットのマークアップは次のとおりです。
<td><input data-dojo-type="dijit.form.Select" style="width: 10em;" data-dojo-props="sortByLabel:false, maxHeight:'-1'" data-dojo-id="bcntry" id="bcntry" name="bcntry" />
私は道場の学習にかなりの時間を費やしました。それがうまく機能するとき、しかしドキュメントは望まれることがたくさん残っています!dijit.form.FilteringSelectでも同様の問題が発生しています。また、javaScriptを介した値の設定も無視されます。このコードの完全にプログラム的なバージョンも試しました。店舗から選択する場合、値の設定は機能しないという結論に達しました。このDIDは機能しますが、動的ではありません。
<div name="scntry" data-dojo-type="dijit.form.Select" data-dojo-props="maxHeight:'-1',sortByLabel:false" value="<?= $this->shippingContact->countryId;?>" >
<?php foreach($this->countryList as $c):?>
<span value="<?= $c->id;?>"><?= $c->name;?></span>
<?php endforeach;?>
</div>