Как получить выбранные строки в DataGridView с разных страниц - PullRequest
0 голосов
/ 01 марта 2011

У меня есть окна формы DataGridView, где у меня есть данные и флажок для каждой строки.

Я установлю флажок для конкретной строки, и все выбранные строки будут заполнены на другой странице.

if (grdEmp.Rows.Count > 0)
        {
            var selectedEmpIDs= from DataGridViewRow coll in grdEmp.Rows
                                     where Convert.ToBoolean(coll.Cells["Select"].Value) == true
                                     select coll;
            if (selectedEmpIDs.Count() > 0)
            {
                foreach (DataGridViewRow row in selectedEmpIDs)
                {
                    selectedEmp+= row.Cells["EmpId"].Value + ",";
                }
            }
        }

Это хорошо работает только для одной страницы.

Когда я перехожу на другую страницу и щелкаю по выбранным строкам, предыдущая отключается.

Как мне решить.

Спасибо cmrhema

Примечание: извините за путаницу, когда я имел в виду, что это хорошо работает для страницы, я имел в виду подкачку.

Я думаю, мне нужно добавить больше входных данных,

В сетке 10 страниц.

Я выбираю первую запись на каждой странице вида сетки, одну за другой, щелкая следующую страницу (кнопка Страница следующая).

Но отображается только та запись, которая была выбрана последней, а другие и игнорируются.

Что может быть prblm

Ответы [ 2 ]

0 голосов
/ 01 марта 2011

Вместо того, чтобы использовать строковую строку с разделителями-запятыми для своего списка идентификаторов, вы можете вместо этого использовать Список.

Ваш код станет примерно таким:

if (grdEmp.Rows.Count > 0)         
{             
    var selectedEmpIDs= from DataGridViewRow coll in grdEmp.Rows                                      
    where Convert.ToBoolean(coll.Cells["Select"].Value) == true                                      s
    select coll;             

    if (selectedEmpIDs.Count() > 0)             
    {                 
        foreach (DataGridViewRow row in selectedEmpIDs) 
        {
            if (!listOfIds.Contains((int)row.Cells["EmpId"].Value))
            {
                listOfIds.Add(((int)row.Cells["EmpId"].Value));
            }
        }
    }  
}         

Вам понадобитсяметоды для удаления элементов из этого списка, так что добавление обработчиков событий для выбранного флажка события, вероятно, будет работать лучше.

Сам объект List может просто жить как объект уровня класса в форме, содержащей ваш DataGridView.

Это немного усложняется, если вы управляете подкачкой по формам, но применяются те же принципы ведения списка выбранных идентификаторов.

0 голосов
/ 01 марта 2011

Вы можете использовать List или Dictionary или любой другой тип коллекции глобально, используя Program.cs или статический класс.И сохраните выбранные строки в списке, прежде чем покинуть страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...