Переместить запись из одной сетки в другую (Genexus x evo 1)

В настоящее время я работаю с GeneXus X Evolution 1 в приложении формы Windows.

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

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

Вот что я вижу, когда выбираю первую запись:

Выбрать первую запись

И это при выборе второго:

Когда я выбираю вторую запись или любую другую

Мой код выглядит так:

Event &LineaSeleccionadaGrilla.Click
    if &LineaSeleccionadaGrilla = true
        &ProdSelGrilla = ''
        &ProdSelGrilla = ProdId 
        &i = &i + 1 
        if &i <= rows(&ArregloProdSel())
            &ArregloProdSel(&i,1) = &ProdSelGrilla
            &ProdidSeleccion.AddItem(str(&i),&ArregloProdSel(&i,1) ) 
        endif
        grillafinal.Refresh()
    endif       
EndEvent

Event grillafinal.Load // esto carga la grilla
    &ProdIdFinal = &ProdSelGrilla
EndEvent

person DayaWulf    schedule 19.02.2016    source источник


Ответы (1)


Проблема, похоже, в том, что в событии grillafinal.Load вы загружаете только последнюю выбранную запись.

Предполагая, что &ArregloProdSel является набором ProdId (не знаю, почему это матрица, а не просто массив), ваше событие grillafinal.Load должно выглядеть примерно так:

Event grillafinal.Load
    for &j = 1 to rows(&ArregloProdSel())
        &ProdIdFinal = &ArregloProdSel(&j,1)
        Load
    endfor
EndEvent
person Marcos Crispino    schedule 22.02.2016
comment
Спасибо за ваш ответ, Маркос, я добавил ваше предложение в код, компилятор не показывает ошибок, но программа вылетает при загрузке. Я получаю следующую ошибку; Исключение System.IndexOutOfRangeException. - person DayaWulf; 23.02.2016
comment
Я нашел проблему. &ProdIdFinal = &ArregloProdSel(&i,1). &i нужно заменить на &j. Спасибо маркос! - person DayaWulf; 23.02.2016