我试图分配一个值ext:Hidden。我想设置字段的选定值" HiddenSmo"。如何在Combobox中获取所选valueField的值?
<DirectEvents>
<Select OnEvent="ValueSelected" After="var ind = #{ComboBoxSmo}.getValue();
#{HiddenSmo}.setValue(#{ComboBoxSmo}.store.getAt(ind).get('code'));" />
</DirectEvents>
但选择后HiddenSmo =&#34;&#34;。请帮我。提前致谢。完整代码:
<ext:ComboBox
ID="ComboBoxSmo"
runat="server"
DisplayField="name"
ValueField="IdSmo"
TypeAhead="false"
TriggerAction="Query"
QueryMode="Remote"
ForceSelection="true"
SelectOnFocus="true"
Disabled="false"
Name="IDSmo">
<Store>
<ext:Store
runat="server">
<Proxy>
<ext:AjaxProxy
Url="~/Controls/DataService.asmx/GetSMOsD" >
<ActionMethods
Read="POST" />
<Reader>
<ext:XmlReader
Root="ArrayOfSMOResponse"
Record="SMOResponse"
/>
</Reader>
</ext:AjaxProxy>
</Proxy>
<Model>
<ext:Model
runat="server"
IDProperty="IdSmo">
<Fields>
<ext:ModelField Name="code" Type="Int" />
<ext:ModelField Name="IdSmo" Type="Int" />
<ext:ModelField Name="name" Type="String" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<DirectEvents>
<Select OnEvent="ValueSelected" After="var ind = #{ComboBoxSmo}.getValue();
#{HiddenSmo}.setValue(#{ComboBoxSmo}.store.getAt(ind).get('code'));" />
</DirectEvents>
答案 0 :(得分:0)
虽然我不知道您使用的“包装语言”,但是combo和其他任何表单字段一样,具有其值的setter和getter:
var val = combo.getValue(); // to get the current combo value
combo.setValue(val); // to set value of the combo to val
答案 1 :(得分:0)
尝试使用这个
App.ComboBoxSmo.getValue()
而不是#{ComboBoxSmo}.getValue()
答案 2 :(得分:0)
我不明白为什么当组合框选择已经存储了它自己的值时,你会使用HiddenField来存储组合框选择的值。我的猜测是你试图解决你在组合框中看到的奇怪行为。所以这里有一些我在与组合框进行战斗时学到的快速指示。
如果您使用商店,则需要在“setValue([object])”中塑造对象,就像商店模型的形状一样。
使用“SelectedItems.Add(...)”和“UpdateSelectedItems()”。当只使用Ext.Net.ListItems并添加到组合框上的Items集合时,这可能没有必要,但是当你使用商店时,似乎需要让组合框与directevents上的商店一起玩得很好。
<Model>
<ext:Model
runat="server"
IDProperty="IdSmo">
<Fields>
<ext:ModelField Name="code" Type="Int" />
<ext:ModelField Name="IdSmo" Type="Int" />
<ext:ModelField Name="name" Type="String" />
</Fields>
</ext:Model>
</Model>
服务器端:
protected void updateComboBoxSelection(object sender, DirectEventArgs e)
{
if (X.IsAjaxRequest)
{
this.ComboBoxSmo.SelectedItems.Add(new { IdSmo=101, name="foobar", code=15 });
this.ComboBoxDateTime.UpdateSelectedItems();
}
}