دسته بندی ها
22:58 1398/09/28

صفحه بندی دیتا گرید (Paging WPF DataGrid)

مشخصات سوال کننده :
کاربر : vahdat     امتیاز کاربر : 289     رتبه کاربر : 5
دسته بندی : WPF سی شارپ

به این سوال امتیاز بدهید    3
تعداد بازدید این سوال : 3074
هوش مصنوعی

پاسخ هوش مصنوعی

بله، WPF DataGrid محدودیتی در تعداد رکوردهای نمایش داده شده ندارد، اما با افزایش تعداد رکوردها به بهینه سازی و صفحه بندی نیاز خواهید داشت تا عملکرد برنامه به درستی حفظ شود.

برای پیاده سازی صفحه بندی در DataGrid می توانید از روش های مختلفی استفاده کنید. یکی از ساده ترین روش ها، استفاده از کد زیر برای مدیریت صفحه بندی با استفاده از یک CollectionView است:

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;

namespace WpfApp
{
    public partial class MainWindow : Window
    {
        private ObservableCollection<YourDataType> _items;
        private ICollectionView _view;

        public MainWindow()
        {
            InitializeComponent();
            LoadData();
            _view = CollectionViewSource.GetDefaultView(_items);
            DataGrid.ItemsSource = _view;
            UpdatePagingControls();
        }

        private void LoadData()
        {
            _items = new ObservableCollection<YourDataType>();
            // بارگذاری دیتای خود
        }

        private void UpdatePagingControls()
        {
            // بروزرسانی کنترل های صفحه بندی بر اساس تعداد رکوردها
        }

        private void OnNextPageClicked(object sender, RoutedEventArgs e)
        {
            // تغییر به صفحه بعد
            _view.MoveCurrentToNext();
        }

        private void OnPreviousPageClicked(object sender, RoutedEventArgs e)
        {
            // تغییر به صفحه قبلی
            _view.MoveCurrentToPrevious();
        }
    }
}

در این مثال، شما باید YourDataType را با نوع داده های خود جایگزین کنید و منطق بارگذاری داده ها و بروزرسانی کنترل های صفحه بندی را پیاده سازی کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : android 13:10 1398/09/29

DataGrid در WPF که محدودیتی توی نمایش اطلاعات نداره ولی اگر تعداد ردیف ها خیلی زیاد باشه باعث میشه کمی دچار هنگ بشه برنامه که بهترین راه حل اینه که یا مثلا 1000 رکورد آخر رو نمایش بدیم و بقیه رکوردها رو با قابلیت جستجو به کاربر نمایش بدیم یا اینکه صفحه بندی استفاده کنیم.

در مورد صفحه بندی DataGrid تو Wpf که خودتون 2 تا لینک قرار دادید و میتونید از همین روشها استفاده کنید.

به این پاسخ امتیاز بدهید    1
امتیاز: 25 رتبه: 28
پاسخ دهنده : vahdat 13:30 1398/09/29

دقیقا به همین خاطر خواستم ببینم از دوستان کسی از روشی استفاده کرد که مشکلاتش نسبت به بقیه کمتر باشه

به این پاسخ امتیاز بدهید    4
امتیاز: 289 رتبه: 5
پاسخ دهنده : Sowgandi 13:56 1398/09/29

سلام. دوست عزیز در قسمت xaml دیتاگرید کد  "EnableRowVirtualization="true  رو قرار بده. این کد پر کردن دیتاگرید رو بهینه میکنه و هرچقدر هم که تعداد رکوردها زیاد بشه سرعت لود دیتاگریدتون کم نمیشه! البته فکر میکنم به صورت پیش فرض این مقدار برابر با true هست ولی جهت اطمینان این مقدار رو دستی هم true کنید.

به این پاسخ امتیاز بدهید    4
امتیاز: 876 رتبه: 3
پاسخ دهنده : Alireza 00:40 1399/02/27

 "EnableRowVirtualization="true  من تا 100میلیون رکورد رو امتحان کردم جواب داد

به این پاسخ امتیاز بدهید    0
امتیاز: 115 رتبه: 13
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود