私は、列がコンボボックス、チェックボックスなどのコントロールであるGridviewを持っています GridViewは、Entity Frameworkを使用してデータベースによってオブジェクトのリストにバインドされ、バインドはMVVMパターン。 場合によっては、クエリの要素数が少ないため、Gridviewの負荷が高速ですが、クエリで500を超えるレコードが取得され、負荷が非常に遅くなることがあります。 レコードがGridviewレコードに移動する方法はありますか?GridView Asyncを塗りつぶす方法
ここに私のGridViewのコード:
<telerik:RadGridView x:Name="dtgResumen" AutoGenerateColumns="False" CellEditEnded="dtgResumen_CellEditEnded" GridLinesVisibility="Both" ItemsSource="{Binding LstAvancesCuvs, Mode=TwoWay, IsAsync=True}" RowIndicatorVisibility="Collapsed" SelectionMode="Multiple" SelectionUnit="FullRow">
<telerik:RadGridView.Columns>
<telerik:GridViewComboBoxColumn x:Name="colEstatus" Width="1.4*" Header="ESTATUS" IsFilterable="False" Tag="0">
<telerik:GridViewComboBoxColumn.CellTemplate>
<DataTemplate>
<telerik:RadComboBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectedIndex="{Binding EstatusCUV, Mode=TwoWay}" SelectionChanged="comboBox_SelectionChanged">
<telerik:RadComboBoxItem Content="Cancelada" Foreground="Red" />
<telerik:RadComboBoxItem Content="Activa" Foreground="Green" />
</telerik:RadComboBox>
</DataTemplate>
</telerik:GridViewComboBoxColumn.CellTemplate>
</telerik:GridViewComboBoxColumn>
<telerik:GridViewDataColumn x:Name="colId" Width="Auto" DataMemberBinding="{Binding IdCUVExcel}" Header="ID" IsFilterable="False" IsReadOnly="True"/>
<telerik:GridViewDataColumn x:Name="colMza" Width="Auto" DataMemberBinding="{Binding Manzana}" Header="MZA" IsFilterable="False" IsReadOnly="True"/>
<telerik:GridViewDataColumn x:Name="colLot" Width="Auto" DataMemberBinding="{Binding Lote}" Header="LOT" IsFilterable="False" IsReadOnly="True"/>
<telerik:GridViewDataColumn x:Name="colNo" Width="Auto" DataMemberBinding="{Binding NumeroExterior}" Header="No" IsFilterable="False" IsReadOnly="True"/>
<telerik:GridViewDataColumn x:Name="colInt" Width="Auto" DataMemberBinding="{Binding NumeroInterior}" Header="INT" IsFilterable="False" IsReadOnly="True"/>
<telerik:GridViewDataColumn x:Name="colEdif" Width="Auto" DataMemberBinding="{Binding Edificio}" Header="EDIF" IsFilterable="False" IsReadOnly="True"/>
<telerik:GridViewDataColumn x:Name="colAvanceIndividual" Width="*" Background="{Binding ColorAvance}" DataMemberBinding="{Binding AvanceIndividual, Mode=TwoWay}" IsFilterable="True" IsReadOnly="True">
<telerik:GridViewDataColumn.Header>
<TextBlock Text="% Avance Individual" TextAlignment="Center" TextWrapping="Wrap" />
</telerik:GridViewDataColumn.Header>
<telerik:GridViewDataColumn.CellStyle>
<Style TargetType="telerik:GridViewCell">
<Setter Property="Foreground" Value="{Binding ColorAvance}" />
</Style>
</telerik:GridViewDataColumn.CellStyle>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn x:Name="colDtu" DataMemberBinding="{Binding DTU, Mode=TwoWay}" Header="DTU" IsFilterable="False">
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" BorderThickness="5" Click="CheckBox_Click" IsChecked="{Binding DTU, Mode=TwoWay}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
<telerik:GridViewDataColumn x:Name="colPC" Width="*" DataMemberBinding="{Binding PC, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colE" Width="*" DataMemberBinding="{Binding Estructura, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colIHS" Width="*" DataMemberBinding="{Binding IHS, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colIE" Width="*" DataMemberBinding="{Binding IE, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colIG" Width="*" DataMemberBinding="{Binding IGE, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colAlbanileria" Width="*" DataMemberBinding="{Binding Albañileria, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colAcabados" Width="*" DataMemberBinding="{Binding Acabados, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colCHC" Width="*" DataMemberBinding="{Binding CHC, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
<telerik:GridViewDataColumn x:Name="colELE" Width="*" DataMemberBinding="{Binding ELE, Mode=TwoWay}" IsFilterable="False" Tag="1"/>
</telerik:RadGridView.Columns>
</telerik:RadGridView>
ここに私のモデル:
public class MainWindowViewModel : BindableBase
{
private ObservableCollection<AvanceObra> _lstAvancesCuvs;
public ObservableCollection<AvanceObra> LstAvancesCuvs
{
get { return _lstAvancesCuvs; }
set
{
_lstAvancesCuvs = value;
OnPropertyChanged();
}
}
public MainWindowViewModel()
{
_lstAvancesCuvs = new ObservableCollection<AvanceObra>();
}
}
Telerikコンポーネントがモデルにバインドされているので、私は(記録を一つずつ持参)それが可能だろうとは思わないを持っています。結果をページングするようにGridViewを設定することができます。あるいは、MVVMバインディングを取り除き、オンデマンドでコード内のデータをロードすることもできます。 – Transcendent
データの負荷を最適化する方法はありますか?それは必ずしも1つずつである必要はありません – Richard
もちろん、データソースも非同期でも満たす必要があります。 – lokusking