Click here to Skip to main content
15,908,455 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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.
Posted

1 solution

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.
C#
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>
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900