我正在尝试在datagrid上实现paggination,它可以包含不同类型的列表,例如Teacher, Student
等
如何调用按钮单击事件,以便我的Paginate函数可以过滤该列表并设置我的datagrid的itemssource
public List<T> Paginate<T>(List<T> list, int itemsPerPage, int currentPage)
{
// some code
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
this.Paginate(myDataGrid.ItemsSource,3,1);
}
答案 0 :(得分:0)
如果您对元素没有限制并且只通过索引访问它,并且不使用对象属性的额外过滤,那么您可以在代码中使用非泛型类型:
public IList Paginate(IList list, int itemsPerPage, int currentPage)
{
// some code
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
this.Paginate(myDataGrid.ItemsSource as IList, 3, 1);
}
但是,只有在确保ItemsSource
包含实现IList
的对象(例如List<T>
)时才应该这样做。如果您不确定是否需要为每个分页使用IEnumerable
接口和迭代集合。
答案 1 :(得分:0)
试试这个,对于这个解决方案,你需要提供哪些数据主义者绑定的信息
private void Button1_Click(object sender, RoutedEventArgs e)
{
if(boundlist=="Employee")
{
List<Employee> copy = new List<Employee>
((myDataGrid.ItemsSource as IList).OfType<Employee>());
this.Paginate<Employee>(copy,3,1);
}
else if(boundlist=="Student")
{
List<Student> copy = new List<Employee>
((myDataGrid.ItemsSource as IList).OfType<Student>());
this.Paginate<Student>(copy,3,1);
}
}
答案 2 :(得分:0)
如果Paginate仅用于分页,那么只需将其作为对象列表传递。
private void Button1_Click(object sender, RoutedEventArgs e)
{
this.Paginate(myDataGrid.ItemsSource as IList<object>, 3, 1);
}