cancel
Showing results for 
Search instead for 
Did you mean: 

Insertar combo en matrix

Former Member
0 Kudos

Hola a todos.... el problema que tengo y espero me puedan ayudar es que tengo un matrix de sap, pero nesesito que una de las columnas de ese matrix en ves de mostrar texto me muestre un combo con informnacion de los turnos de una empresa ....alguien me puede ayudar .. este es el codigo que estoy ocupando:

For Li_Fila = 0 To Lo_Personal.TotalFilas - 1

Lo_Personal.Fila = Li_Fila

Lo_UserDataSource = Mo_Forma.DataSources.UserDataSources.Item(MatrixCambiaTurnosNumero)

Lo_UserDataSource.Value = Lo_Personal.Empleado

Lo_UserDataSource = Mo_Forma.DataSources.UserDataSources.Item(MatrixCambiaTurnosOriginal)

Lo_UserDataSource.Value = Lo_Personal.TurnoDescripcion

''En esta columna es en la que deseo mostrar el combo.....

__Lo_UserDataSource = Mo_Forma.DataSources.UserDataSources.Item(MatrixCambiaTurnosCambio)__

__Lo_UserDataSource.Value =Lo_cboTunos.Selected.Description__

Lo_grdMatrixCambiaTurnos.AddRow()

Next

Asi como lo tengo ahora me muestra la forma de combo con un valor pero al darle click no me despliega el resto de los valores....

alguien sabe como puedo solucionar esto

De antemano les agradesco ....

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Jorge Luis

Sobre el punto que mencionas te puedo decir lo siguiente:



           ' Creando los UserDataSources para la columna tipo combo

           oMyForm.DataSources.UserDataSources.Add("udsColumna", SAPbouiCOM.BoDataType.dt_SHORT_TEXT)

            oMatrix = oMyForm.Items.Item(MyMatrix).Specific
            oColumns = oMatrix.Columns

             ' Asignando el UserDataSources a la columna tipo combo
             oColumns.Item("c_Columna").DataBind.SetBound(True, "", "udsColumna")



            oMatrix = oMyForm.Items.Item(MyMatrix).Specific
            oColumns = oMatrix.Columns

            ' Agregando valores al combo de la columna tipo combo
            oColumns.Item("c_Columna").ValidValues.Add("M", "Mañana")
            oColumns.Item("c_Columna").ValidValues.Add("T", "Tarde")
            oColumns.Item("c_Columna").ValidValues.Add("N", "Noche")
            
            oColumns.Item("c_Columna").DisplayDesc = True

           oRecordSet.DoQuery("SELECT CODE, NAME FROM [@TABLE]")

            Dim index As Integer = 1

            ' Cargando valores a las filas de la matrix
            oMatrix = oMyForm.Items.Item(MyMatrix).Specific
            While Not oRecordSet.EoF
                oMatrix.AddRow(1)
                oMatrix.GetLineData(index)

                oUserDataSource = oMyForm.DataSources.UserDataSources.Item("udsColumna")
                oUserDataSource.Value = oRecordSet.Fields.Item("CODE").Value.ToString.Trim              

                oMatrix.SetLineData(index)
                index += 1
                oRecordSet.MoveNext()
            End While

Si revisas bien este codigo primero llenas la columna que es tipo combo con sus valores posibles, puedes usar un oRecordSet para llenarla si es que los datos los tienes en una tabla y pueden varias.

Al usar UserDataSource en una matrix debes usar las funciones GetLineData(index) y SetLineData(index).

Bueno espero que esto aclare tus dudas, si todo sale bien seria bueno que lo comentes.

Saludos

George