0

一連の値を DomainService メソッドに渡す必要があります。サービスメソッドを次のようにしたいと思います。

IQueryable<Person> GetPeople( Nullable<DateTime> MinDOB, IList<String> Ethnicities )
{
    return
        from
            Person item in ObjectContext.People
        where
            item.DOB >= MinDOB
            && Ethnicities.Contains( item.ETHNICITY )
        select
            item;
}

クエリはパラメーターなしで正常に機能し、DOB パラメーターだけで正常に機能します。XAML では、QueryParameters/QueryParameter を介して DOB パラメーターをパラメーターとしてサービス メソッドに渡すことができます。または、サービス メソッドをノーナリにして、すべてを返すようにし、DOB パラメーターを FilterDescriptor に貼り付けることもできます。どちらも機能します (注意点が 1 つあります。FilterDescriptor XAML の IgnoredValue 属性を null の DateTime で機能させる方法がわかりません)。ここまでは順調ですね。しかし、日付はスカラーですが、ListBox.SelectedItems はそうではありません。

上記のように定義されているように、サービスメソッドで「定義済みのシリアル化可能な型の1つである必要があります」というエラーが発生し続けます(とにかく、MSDNで禁止されているscarlet型のリストはどこにありますか?)、以下も機能しません:

<ria:DomainDataSource.FilterDescriptors>
    <ria:FilterDescriptor PropertyPath="ETHNICITY" Operator="IsContainedIn" Value="{Binding ElementName=_lbEthnicities, Path=SelectedItems}" />
</ria:DomainDataSource.FilterDescriptors>

「演算子 'IsContainedIn' は、オペランド タイプ 'String' および 'ObservableCollection`1' と互換性がありません ---> System.ArgumentNullException: 値を null にすることはできません」がスローされます。

あきらめて、クライアント C# コードを定義して、選択したリストボックスの値を区切り記号付きの文字列などに詰め込む必要がありますか? 私はここで宣言的なことをできる限り推し進めようとしていますが、どこかに限界があるはずです。

4

1 に答える 1

1

つまり、IsContainedInには、オブジェクトではなく、コンマで区切られた値の文字列が必要です。

String.Joinを使用して文字列を作成し、それにバインドする方法をご覧ください。あなたはまだあなたのページのプロパティとしてそれを持つことができます。

于 2011-02-18T08:30:29.793 に答える