1

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);
        }
    }
4

1 に答える 1