带有分页的datagrid中的复选框 [英] checkbox in datagrid with paging
本文介绍了带有分页的datagrid中的复选框的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要保存选中复选框的所有行.假设网格中有3页,则用户在单击保存按钮时可以从第一页选择5行,从第二页选择2行,从第三页选择3行,则应保存所有这些选定的(10行)记录. div class ="h2_lin">解决方案
您可以使用PagedCollectionView的PageChanging和PageChanged事件:将SelectedItems存储在PagedChanging事件中,然后将SelectedItems设置回PagedChanged事件中.PagedCollectionView视图; List< course> selectedCourses = 新 List< course>(); 公共 无效 OnLoadCompleted(LoadOperation< course>课程) { view = 新建 PagedCollectionView(courses.Entities.OrderBy(c = > c.CourseID)); view.PageSize = 5 ; // datapager page.Source =视图; // 数据网格 datagrid2.ItemsSource =视图; // 事件处理程序 view.PageChanging + = 新 EventHandler< system.componentmodel.pagechangingeventargs>(view_PageChanging); view.PageChanged + = 新 EventHandler< eventargs>(view_PageChanged); // 删除默认选择 datagrid2.SelectedIndex = -1; } 无效 view_PageChanged(对象发件人,EventArgs e) { // 删除默认选择 view.MoveCurrentToPosition(-1); 如果(selectedCourses.Count < = 0 ) 返回; // 设置所选项目 for ( int i = 0 ; i < view.Count; i ++) { 如果(selectedCourses.Contains(查看[i] as 课程)) datagrid2.SelectedItems.Add(view [i]); } } 无效 view_PageChanging(对象发件人,System.ComponentModel.PageChangingEventArgs e) { // 存储所选项目 如果(datagrid2.SelectedItems.Count > 0 跨度>) { for ( int i = 0 ; i < datagrid2.SelectedItems.Count; i ++) { 如果(selectedCourses.Contains(datagrid2.SelectedItems [i] as 课程)) 继续; selectedCourses.Add(datagrid2.SelectedItems [i] as 课程); } } } </ eventargs > </ system.componentmodel.pagechangingeventargs > </ 课程 > </ 课程 > </ 课程 >
I want to save all the rows which the check box is selected. suppose if there is 3 pages in the grid,user can select 5 rows from first page and 2 rows from second page and 3 rows from third page when it click the save button, it should save all these selected(10 rows) records.
解决方案
You can make use of PagedCollectionView''s PageChanging and PageChanged event: Store the SelectedItems in PagedChanging event and set the SelectedItems back in PagedChanged event.
PagedCollectionView view; List<course> selectedCourses = new List<course>(); public void OnLoadCompleted(LoadOperation<course> courses) { view = new PagedCollectionView(courses.Entities.OrderBy(c => c.CourseID)); view.PageSize = 5; //datapager page.Source = view; //datagrid datagrid2.ItemsSource = view; //event handler view.PageChanging += new EventHandler<system.componentmodel.pagechangingeventargs>(view_PageChanging); view.PageChanged += new EventHandler<eventargs>(view_PageChanged); //remove default selection datagrid2.SelectedIndex=-1; } void view_PageChanged(object sender, EventArgs e) { //remove default selection view.MoveCurrentToPosition(-1); if (selectedCourses.Count <= 0) return; //set the selected items for (int i = 0; i < view.Count; i++) { if (selectedCourses.Contains(view[ i ] as Course)) datagrid2.SelectedItems.Add(view[ i ]); } } void view_PageChanging(object sender, System.ComponentModel.PageChangingEventArgs e) { //store selected items if (datagrid2.SelectedItems.Count > 0) { for (int i = 0; i < datagrid2.SelectedItems.Count; i++) { if (selectedCourses.Contains(datagrid2.SelectedItems[ i ] as Course)) continue; selectedCourses.Add(datagrid2.SelectedItems[ i ] as Course); } } }</eventargs></system.componentmodel.pagechangingeventargs></course></course></course>
这篇关于带有分页的datagrid中的复选框的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文