1

プロジェクトでWPFTelerikGridViewとDataPagerを使用していますが、この2つのコントロールを使用してアイテムのリストを表示したいと思います。

DataPagerのSourceプロパティをDataGridのItemsプロパティにバインドしました(元のデモのように)。私の問題は次のとおりです。datapagerは最初の呼び出しですべてのエンティティをロードします!。ページサイズ(20)だけをロードしたい。

これは私のコードです:

private void LoadProductsBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    using (AccountingContext context = new AccountingContext())
    {
        Dispatcher.Invoke((Action)(() => grdProducts.ItemsSource = new ObservableCollection<Item>(context.Items.Include("UnitType").Include("Producer").ToList())));
    }
}

<telerik:RadDataPager Name="dataPager" PageSize="20" Source="{Binding Items, ElementName=grdProducts}" />

    <telerik:RadGridView Name="grdProducts">
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn Header="{x:Static sr:EntitiesResource.ID}" DataMemberBinding="{Binding Path=ID}" />
            <telerik:GridViewDataColumn Header="{x:Static sr:EntitiesResource.ProductName}" DataMemberBinding="{Binding Path=Name}" Width="200" />
            <telerik:GridViewDataColumn Header="{x:Static sr:EntitiesResource.Producer}" DataMemberBinding="{Binding Path=Producer.Name}" Width="200" />
            <telerik:GridViewDataColumn Header="{x:Static sr:EntitiesResource.UnitType}" DataMemberBinding="{Binding Path=UnitType.Name}" Width="150" />
            <telerik:GridViewDataColumn Header="{x:Static sr:EntitiesResource.Price}" DataMemberBinding="{Binding Path=Price}" Width="150" />
            <telerik:GridViewDataColumn Header="{x:Static sr:EntitiesResource.Description}" DataMemberBinding="{Binding Path=Description}" Width="*" />
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>
4

1 に答える 1

1

datapagerはデフォルトでデータのコレクションを処理し、指定されたページサイズに内部的に分割します。だからあなたはそれがすべてを取得し、次にページを取得すると言っているのは正しいです。ただし、ページの変更ごとにデータ=ページサイズを取得するシナリオでは、radデータページャーのソースをカスタマイズする必要があります。基本的に、PageSourceのタイプはIPagedCollectionViewです。したがって、IEnumerableおよびTelerik.Windows.Data.IPagedCollectionViewインターフェイスを実装するクラスを作成し、それらのインターフェイスメンバーに実装を提供する必要があります。そうすれば、要件を達成できるようになります。ここで説明するのはかなり長いです。しかし、私が提案できるのは、WPF用のRadControlsをダウンロードし、DataPagerを使用してエンドレスページングを確認することです。それはあなたが探している要件を提供します。

私があなたの要件へのいくつかの指針をあなたに提供することができたと思います。

Lohith(Tech Evangelist、Telerik India)

于 2012-07-27T14:23:31.480 に答える