我有一个动态 dojo 表单,其中我有一个 dijit.form.Select 我尝试通过各种方式动态设置其选定值。我让选择小部件加载和显示数据,但它总是忽略我的每一次尝试。我正在使用dojo 1.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 设置值。我还尝试过此代码的完全编程版本。我得出的结论是,当您从商店中选择时,设置该值不起作用。这确实有效,但不是动态的。
<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>