带有分页的datagrid中的复选框 [英] checkbox in datagrid with paging

查看:65
本文介绍了带有分页的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆