如何在Combobox中获取所选valueField的值?

时间:2014-07-28 06:51:06

标签: asp.net extjs ext.net

我试图分配一个值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>

3 个答案:

答案 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来存储组合框选择的值。我的猜测是你试图解决你在组合框中看到的奇怪行为。所以这里有一些我在与组合框进行战斗时学到的快速指示。

  1. 如果您使用商店,则需要在“setValue([object])”中塑造对象,就像商店模型的形状一样。

  2. 使用“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> 
    
  3. 服务器端:

    protected void updateComboBoxSelection(object sender, DirectEventArgs e)
    {
         if (X.IsAjaxRequest)
         {
           this.ComboBoxSmo.SelectedItems.Add(new { IdSmo=101, name="foobar", code=15 });
           this.ComboBoxDateTime.UpdateSelectedItems();
         }
    }