我尝试过滤使用 XpoDataSource 获取数据的 ASPxComboBox,请注意,从小数据集中恢复和过滤数据工作正常,当我尝试从数据源过滤大数据集(大约 70000 条记录)时,问题就开始了,ComboBox 加载变得非常慢因为 XpoDataSource 从数据库表中获取所有数据。所以我为 XpoDataSource 创建了一个标准来减少恢复的记录数,然后 ComboBox 在向下滚动 ComboBox 时不断重复前 10 条记录,我不知道问题出在哪里。
我意识到我需要的类似于以下链接中的示例
但是使用 XpoDataSource 而不是 SqlDataSource1 。我不知道如何为 XpoDataSource 编写类似的代码。
这是我的代码:
protected void cmbServices_OnItemRequestedByValue_SQL(object source, DevExpress.Web.ASPxEditors.ListEditItemRequestedByValueEventArgs e)
{
try
{
string criteria = "";
if (string.IsNullOrEmpty(e.Value.ToString()) || e.Value.ToString().Length < 3)
{
criteria = "1 = 2";
}
else
{
criteria =
string.Format("(( Code like '{0}%' OR ProductName like '{0}%') AND CustomerId = {1})", e.Value.ToString(), (cmbServicesActivities != null && cmbServicesActivities.Value != null) ? cmbServicesActivities.Value.ToString() : "0");
}
dsServices.Session = LookupsSession;
dsServices.Criteria = criteria;
cmbServicesDescription.DataSource = dsServices;
cmbServicesDescription.DataBind();
}
catch (Exception exc)
{
Debug.WriteLine(exc.Message);
}
}