2016-02-19 1 views
1

В настоящее время я работаю с GeneXus X Evolution 1 в приложении для окон.Переместить запись из одной сетки в другую (Genexus x evo 1)

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

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

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

Select first record

И это при выборе второй один:

When i select the second record or any other

Мой код выглядит следующим образом:

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 

ответ

0

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

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

Event grillafinal.Load 
    for &j = 1 to rows(&ArregloProdSel()) 
     &ProdIdFinal = &ArregloProdSel(&j,1) 
     Load 
    endfor 
EndEvent 
+0

Спасибо за ваш ответ Marcos , Я добавил ваше предложение к коду, компилятор не обнаружил ошибки, но программа вылетает по мере ее загрузки. Я получаю следующую ошибку; "System.IndexOutOfRangeException". – DayaWulf

+0

Я нашел проблему. & ProdIdFinal = & ArregloProdSel (& i, 1). & I нужно заменить на & j. Спасибо, Маркос! – DayaWulf

+0

@DayaWulf Вы правы! Исправлено, спасибо. –