我们将如何在数据网格中进行此绑定,我有30条记录,但我想只绑定10条记录。我将所有值都带到c#中的集合List类。谢谢你
答案 0 :(得分:1)
使用Linq。例如:
List<Product> datasource = db.TakeAllProducts();
List<Product> first10 = datasource.Take(10).ToList();
this.datagrid.DataSource = first10;
答案 1 :(得分:0)
要实施分页,您可以按照以下步骤操作:
在页面中全局定义三个变量:
//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;
在页面加载期间启动它们:
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);
...
}
通过以下方法计算要显示的项目(我使用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);
}
在您的预览按钮或下一个按钮的点击事件中,处理数据网格的项目刷新。当当前页面已经到达边界时,也不要忘记启用或禁用按钮(通过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;
}
}
以下是我的完整演示:Pagination。