Dev ASP.NET组件中的ASPxComboBox可以方便的根据输入内容进行过滤,不过对于数据量较大或者用户数较多的情况下,这个功能会给服务器带来严重的负担,因此我们应该输入自己想要查询的字符串时才进行过滤操作。要实现该功能,需要对OnItemRequestedByValue和OnItemRequestedByValue这两个事件进行处理,同时将IncrementalFilteringDelay设置成足够大。
<dx:ASPxComboBox ID="FEmpNo_FV" runat="server" EnableCallbackMode="true" CallbackPageSize="10" TextFormatString="{1}" IncrementalFilteringDelay="100000" IncrementalFilteringMode="Contains" DropDownStyle="DropDownList" OnItemsRequestedByFilterCondition="FEmpNo_FV_ItemsRequestedByFilterCondition" OnItemRequestedByValue="FEmpNo_FV_ItemRequestedByValue">
<ClientSideEvents KeyDown="FEmpNo_KeyDown" />
<Columns>
<dx:ListBoxColumn FieldName="FEmpNo" Caption="员工编码" />
<dx:ListBoxColumn FieldName="FName" Caption="员工姓名" />
<dx:ListBoxColumn FieldName="FDeptName" Caption="部门名称" />
</Columns>
</dx:ASPxComboBox>
//防止回车时事件冒泡
function FEmpNo_KeyDown(s, e) {
if (e.htmlEvent.keyCode == 13) {
ASPxClientUtils.PreventEventAndBubble(e.htmlEvent);
s.filterStrategy.Filtering();
}
}