J'ai une petite application SL qui utilise les services RIA pour afficher les données des employés (base de données Northwind) dans une grille de données. J'ai un filtre de texte, qui fonctionne bien contre les colonnes varchar mais ne filtre pas sur une colonne int nullable. Voici le XAML:Filtrage dans Silverlight avec les services RIA
<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>
Toute aide sera appréciée. Merci
Pouvez-vous réparer votre xaml ci-dessus? Quel filtre est l'intensible NULL? La propriété TestFilter? Probablement juste ne peut pas mélanger et faire correspondre les types dans l'instruction Or. – Bryant