XpoDataSource を使用してデータを取得する ASPxComboBox をフィルター処理しようとしました。小さなデータ セットからのデータの復元とフィルター処理は正常に機能することに注意してください。大きなデータセット (約 70000 レコード) をデータ ソースからフィルター処理しようとすると問題が発生します。ComboBox の読み込みが非常に遅くなります。 XpoDataSource はデータベース テーブルからすべてのデータを取得するためです。そのため、復元されるレコードの数を減らすために XpoDataSource の基準を作成しました。その後、ComboBox を下にスクロールしている間、ComboBox は上位 10 件のレコードを繰り返し続けます。問題がどこにあるのかわかりません。
必要なものは次のリンクの例に似ていることに気付きました
ただし、 SqlDataSource1 の代わりに XpoDataSource を使用します。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);
}
}