微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ext.NET Combobox 本地查询不返回数据时的回调

如何解决Ext.NET Combobox 本地查询不返回数据时的回调

使用 Ext.NET 组合框。

<ext:ComboBox runat="server" 
    ID="ComboBoxCategorizedList" 
    QueryMode="Local" 
    ValueField="Id" 
    EmptyText="Type to begin search..." 
    TypeAhead="false"
    displayField="Name"
    Width="500"
    Notealign="Down" EnableKeyEvents="true"   
    Note="Press 'Search' icon or Press ENTER for more results"
    RemoveClearTrigger="true">
    <%--Note="Type '*' for a full list"--%>
    <HtmlBin>
        <ext:XScript runat="server">
            <script type="text/javascript">
                $(window).on("__refresh__",function () {
                    #{ StoreComboBoxCategorizedList }.reload();
                });
            </script>
        </ext:XScript>
    </HtmlBin>  
    <Store>
        <ext:Store runat="server" ID="StoreComboBoxCategorizedList" OnReadData="ComboBoxCategorizedList_ReadData">
            <Proxy>
                <ext:PageProxy />
            </Proxy>
            <Model>
                <ext:Model Id="ModelCategorizedComboBox" runat="server" IDProperty="Id">
                    <Fields>
                        <ext:ModelField Name="Id" />
                        <ext:ModelField Name="Name" />
                        <ext:ModelField Name="Type"  />
                        <ext:ModelField Name="RefId"  />
                        <ext:ModelField Name="Description"  />
                    </Fields>
                </ext:Model>
            </Model>
            <Listeners>
                <Update Handler="#{ComboBoxCategorizedList}.expand();" />
                <EndUpdate Handler="categorizedList();" />
            </Listeners>
            <Parameters>
                <ext:StoreParameter Mode="Raw" Name="filter" Value="#{ComboBoxCategorizedList}.getValue()" />
            </Parameters>
        </ext:Store>
    </Store>
    <Triggers>
        <ext:FieldTrigger Icon="Clear"/>
        <ext:FieldTrigger Icon="Search"></ext:FieldTrigger>
    </Triggers>
    <Listeners>
        <SpecialKey Fn="enterKeyPressHandler" />
        <Expand Handler="categorizedList();" Delay="100" />
        <BeforeSelect Fn="onBeforeSelect" />
        <KeyPress  Handler="#{ComboBoxCategorizedList}.getTrigger(1).onClick();" Buffer="1000" />
        <Change Handler="filterComBoxBoxFunction(#{StoreComboBoxCategorizedList},#{ComboBoxCategorizedList}.getValue()); #{ComboBoxCategorizedList}.expand(); categorizedList();" Delay="100" />
    </Listeners>

不是寻求调试帮助,但我想知道 Ext.NET 或 Extjs 开发人员是否有通用解决方案:非常简单......我只想在本地搜索不返回任何记录时启动远程搜索。所以我正在寻找将它连接到组合框的最佳方式。我曾考虑使用 Expand 事件和 BeforeQuery 事件,但这似乎很短。

我正在寻找最佳实践,以便我可以将“OnLocalQuery”事件添加到我的组合框;如果本地查询返回 0 个匹配项,则采取行动。

解决方法

我使用这个函数并且它工作正常......并且没有 QueryMode="Local":

<ext:ComboBox ID="cmb_name" runat="server" FieldLabel="ComboBox" EmptyText="-Select-" HideTrigger="true" TriggerAction="All" SelectOnFocus="true" DisplayField="Name" ValueField="Id" Editable="true" TabIndex="11">
    <Store>
        <ext:Store ID="str_ComboBox" runat="server" PageSize="10">
            <Model>
                <ext:Model ID="mdl_ComboBox" runat="server">
                    <Fields>
                    <ext:ModelField Name="Id" />
                    <ext:ModelField Name="Name" />
                    <ext:ModelField Name="Type"  />
                    <ext:ModelField Name="RefId"  />
                    <ext:ModelField Name="Description"  />
                    </Fields>
                </ext:Model>
            </Model>
        </ext:Store>
    </Store>
    <Listeners>
        <Change Fn="fn_filter" />
    </Listeners>
</ext:ComboBox>

<script type="text/javascript">
var fn_filter = function (_this,newValue,oldValue,eOpts) {
    var n = 0;
    if (_this.lastQuery == undefined || _this.lastQuery == null) {
        _this.lastQuery = "";
    }
    _this.getStore().clearFilter(true);
    _this.getStore().load();
    _this.store.filter(function (item) {
        if (item.get('Name').includes(_this.getRawValue())) {
            n = n + 1;
            return true;
        }
        else {
            return false;
        }
    });
    _this.expand();
    if (n == 0) {
        //returns no records
        //enter code here Callback
    }
}
</script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。