Перемещение предметов из списка в список? - PullRequest
0 голосов
/ 30 августа 2011

У меня есть два DataGridView, помеченных: choiceDGV и universalDGV, которые связаны с источниками привязки, помеченными: choiceLineBindingSource и universalLineBindingSource.

SortableBindingList<ChoiceLine> theChoiceList = new SortableBindingList<ChoiceLine>();
SortableBindingList<UniversalLine> theUniversalList = new SortableBindingList<UniversalLine>();

Затем я добавляю в каждый список, используя foreach циклов, которые повторяют это:

theChoiceList.Add(new ChoiceLine(item1, item2, item3, item4, item5, item6, item7, 
                                 item8, item9, item10, item11, item12, item13));

theUniversalList.Add(new UniversalList(stuff1, stuff2, stuff3, stuff4, stuff5, stuff6, stuff7, 
                                       stuff8, stuff9, stuff10, stuff11, stuff12, stuff13));

Теперь я звоню: choiceSort(); и universalSort();.Они выглядят так:

private void choiceSort()
{
    var sortedChoice = theChoiceList.OrderBy(l => l.Speed);
    choiceLineBindingSource.DataSource = sortedChoice;
}

private void universalSort()
{
    var sortedUniversal = theUniversalList.OrderBy(l => l.Type);
    universalLineBindingSource.DataSource = sortedUniversal;
}

РЕДАКТИРОВАТЬ:

Вот код для перемещения предметов.

private void toUniversalButton_Click(object sender, EventArgs e)
{
    foreach (DataGridViewRow row in choiceDGV.SelectedRows)
    {
        object[] items = new object[row.Cells.Count];
        for (int i = 0; i < row.cells.Count; i++)
            items[i] = row.Cells[i].Value;

        theUniversalList.Add(new UniversalList(item1, item2, item3, item4, item5, item6, item7
                                               item8, item9, item10, item11, item12, item13));
        universalSort();

        choiceDGV.Rows.Remove(row);
    }
}

Моя проблема:

У меня также есть несколько кнопок, которые перемещают элемент из одного DGV в другой.Таким образом, при нажатии выбранные элементы из choiceDGV будут удалены и добавлены в unversalDGV.Однако, когда я иду, чтобы переместить элемент (ы) назад, используя другую кнопку, которая удаляет элемент (ы) из universalDGV и добавляет к choiceDGV, я получаю дубликаты элементов.

Если этот процесс будет продолжен, и я переместу элемент (ы) назад и на четвертый 4 раза , я получу этот конкретный элемент (ы) 4 раза вместо того, который я хотел.

Так что я получаю дубликаты.Кто-нибудь знает, что происходит и как я могу это исправить, чтобы я получил только один предмет, когда я перехожу на четвертый?

РЕДАКТИРОВАТЬ - Больше информации о проблеме

Я простопереместил каждый элемент из одного списка в другой, чтобы один из DGV был полностью визуально пуст.Теперь, когда я нажимаю кнопку, чтобы переместить элемент (ы) из другого DGV в визуально пустой DGV, он снова заполняет то, что было в DGV (до его очистки) плюс (+) элемент (ы),были выбраны при нажатии кнопки перемещения ...

1 Ответ

1 голос
/ 30 августа 2011

Кажется, что вы никогда не удаляете исходный элемент из списка ChoiceList, вам нужно сделать это одновременно с удалением его из choiceDGV (choiceDGV.Rows.Remove (row)), иначе каждый раз, когда вы повторно сортируете, он будет делать это на основе в списке ChoiceList, который по-прежнему содержит оригинальный элемент и новый.

...