簡體   English   中英

使用RIA服務在Silverlight中進行過濾

[英]Filtering in Silverlight with RIA Services

我有一個小型SL應用程序,該應用程序使用RIA服務在數據網格中顯示員工數據(Northwind數據庫)。 我有一個文本過濾器,它可以很好地對varchar列起作用,但不能對可為null的int列進行過濾。 這是xaml:

<UserControl xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Ria" 
         xmlns:riaData="clr-namespace:System.Windows.Data;assembly=System.Windows.Controls.Ria"  
         xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="FilteringSample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:web="clr-namespace:FilteringSample.Web"
xmlns:converter="clr-namespace:FilteringSample"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<UserControl.Resources>
    <converter:StringToIntConverter x:Key="MyConverter"></converter:StringToIntConverter>
</UserControl.Resources>
    <Grid x:Name="LayoutRoot">
<StackPanel Orientation="Vertical" Height="Auto" Grid.Column="0">
        <StackPanel Orientation="Horizontal">
            <Button x:Name="saveButton" Width="75" Height="30" Content="Save" Margin="5" Click="saveButton_Click"/>
            <Button x:Name="rejectButton" Width="75" Height="30" Content="Reject" Margin="5" Click="rejectButton_Click"/>
            <TextBlock x:Name="changeText" VerticalAlignment="Center" Width="Auto"/>
            <TextBox x:Name="Filter" Width="100" Text="" />
            <riaControls:DomainDataSource x:Name="DataSource1" QueryName="GetEmployeesQuery" LoadingData="DataSource1_LoadingData"   >
                <riaControls:DomainDataSource.DomainContext>
                    <!--<web:CustomerContext></web:CustomerContext>-->
                    <web:EmployeeContext></web:EmployeeContext>
                </riaControls:DomainDataSource.DomainContext>

                <riaControls:DomainDataSource.FilterDescriptors>
                    <riaData:FilterDescriptorCollection LogicalOperator="Or">                                                
                        <riaData:FilterDescriptor PropertyPath="FirstName" Operator="Contains">
                            <riaControls:ControlParameter ControlName="Filter" PropertyName="Text" RefreshEventName="TextChanged" />
                        </riaData:FilterDescriptor>
                        <riaData:FilterDescriptor PropertyPath="Title" Operator="Contains">
                            <riaControls:ControlParameter ControlName="Filter" PropertyName="Text" RefreshEventName="TextChanged" />
                        </riaData:FilterDescriptor>
                        <riaData:FilterDescriptor PropertyPath="TestFilter" Operator="Contains">
                            <riaControls:ControlParameter ControlName="Filter" PropertyName="Text" RefreshEventName="TextChanged"/>
                        </riaData:FilterDescriptor>

                    </riaData:FilterDescriptorCollection>
                </riaControls:DomainDataSource.FilterDescriptors>
            </riaControls:DomainDataSource>

        </StackPanel>
        <data:DataGrid Name="MyGrid" ItemsSource="{Binding Data, ElementName=DataSource1}">
        </data:DataGrid>
        <!--<data:DataPager PageSize="20" Source="{Binding Data, ElementName=DataSource1}" Margin="0,-1,0,0" />--> 
    </StackPanel>

任何幫助將不勝感激。 謝謝

我認為您需要一個ValueConverter,以便在將TestFilter的文本傳遞給LINQ之前將其轉換為int。

您應該能夠在過濾器中混合和匹配類型,而不會出現任何問題。 您也不需要值轉換器將字符串轉換為int,FilterDescriptor會自動解析該值。

您顯示的XAML不會顯示任何int字段。 您嘗試將哪個運算符用於過濾器? 它必須是數字運算符,例如IsEqualTo,IsGreaterThan等。

結果是什么? 是否加載無數據,加載失敗或忽略過濾器?

您可能想要嘗試處理LoadingData事件,並查看事件args上公開的EntityQuery,以查看查詢的構成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM