如何在DataGrid UWP中绑定限制记录?

时间:2016-07-27 07:08:34

标签: wpf data-binding uwp uwp-xaml

我们将如何在数据网格中进行此绑定,我有30条记录,但我想只绑定10条记录。我将所有值都带到c#中的集合List类。谢谢你

2 个答案:

答案 0 :(得分:1)

使用Linq。例如:

List<Product> datasource = db.TakeAllProducts();
List<Product> first10 = datasource.Take(10).ToList();
this.datagrid.DataSource = first10;

答案 1 :(得分:0)

要实施分页,您可以按照以下步骤操作:

  1. 在页面中全局定义三个变量:

    //define how many pages totally accroding to calculation.
    int pageCount;
    //define current page number.
    int currentPage;
    //define how many items you want to show in page.
    int countPerPage;
    
  2. 在页面加载期间启动它们:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        countPerPage = 10;
        float tmpFloat = (float)myList.Count / countPerPage;
        pageCount = (int)Math.Ceiling(tmpFloat);
        currentPage = 1;
        ManageButton();//manage the buttons' disable
        myDataGrid.ItemsSource = myList.GetRange(0, countPerPage);
        ...
    }
    
  3. 通过以下方法计算要显示的项目(我使用List.GetRange获取列表):

    private List<String> GetList(List<String> sourceList)
    {
        int index = (currentPage - 1) * countPerPage;
        int countsToShow;
        if (currentPage == pageCount)
        {
            countsToShow = myList.Count - (currentPage - 1) * countPerPage;
        }
        else
        {
            countsToShow = countPerPage;
        }
        return sourceList.GetRange(index, countsToShow);
    }
    
  4. 在您的预览按钮或下一个按钮的点击事件中,处理数据网格的项目刷新。当当前页面已经到达边界时,也不要忘记启用或禁用按钮(通过ManageButton方法)。

    private void btnPrevious_Click(object sender, RoutedEventArgs e)
    {
        currentPage--;
        ManageButton();
        myDataGrid.ItemsSource = GetList(myList);
    }
    
    private void btnNext_Click(object sender, RoutedEventArgs e)
    {
        currentPage++;
        ManageButton();
        myDataGrid.ItemsSource = GetList(myList);
    }
    
    private void ManageButton()
    {
        if (currentPage <= 1)
        {
            btnPrevious.IsEnabled = false;
            btnNext.IsEnabled = true;
        }
        else if (currentPage >= pageCount)
        {
            btnPrevious.IsEnabled = true;
            btnNext.IsEnabled = false;
        }
        else
        {
            btnPrevious.IsEnabled = true;
            btnNext.IsEnabled = true;
        }
    }
    
  5. 以下是我的完整演示:Pagination