Devolver valores a campos en grilla C# recorset

Hola buenas tardes,
me gustaría tener su ayuda en algo especifico, tengo una grilla de un datatable, y en un campo genero un combobox que lleno con un recorset, lo malo que no me guarda ningun valor en el campo, el recorset recupera dos valores, el valor codigo lo quiero en un campo (el mismo del cobobox) y el nombre en otro, como se podria hacer eso?
con los string extraerquery ya obtengo los valores pero como los reflejo en los campos?

muchas gracias!

mi codigo:

 {
            //combobox en en un grid
            Grid0.Columns.Item("SUPRA-SECCIÓN").Type = SAPbouiCOM.BoGridColumnType.gct_ComboBox;
            SAPbouiCOM.ComboBoxColumn oCBC = (SAPbouiCOM.ComboBoxColumn)Grid0.Columns.Item("SUPRA-SECCIÓN");
            SAPbobsCOM.Recordset oRec = (SAPbobsCOM.Recordset)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset);
            oRec.DoQuery("SELECT U_CodigoSS AS 'Código',U_NombreSS AS 'Nombre' FROM  [@SUPRASECCIONESCOL]");
            

            oRec.MoveFirst();
            while (!oRec.EoF)
            {
                oCBC.ValidValues.Add(oRec.Fields.Item(0).Value.ToString(), oRec.Fields.Item(1).Value.ToString());
                string Extraerdequery1 = oRec.Fields.Item("Código").Value.ToString();
                string Extraerdequery2 = oRec.Fields.Item("Nombre").Value.ToString();
                      
                oRec.MoveNext();

            }
        }


los campos en amarillos son.

saludos

Hola :crazy_face:

1 - Cargar Datos ya existentes en un Grid con un ComboBox:

Lo primero que debes hacer es cargar el DataTable con su respectivo ExecuteQuery(Query) y asignarlo al Grid, este DataTable debe poseer las Columnas “CODSUPRA” y “SUPRA-SECCION” ambas SOLO CON EL CODIGO [U_CodigoSS], Aqui es importante que acto seguido, se cambie el BoGridColumnType de la columna “SUPRA-SECCION” a ComboBox y cargar el Combo con el RecordSet como ya lo has hecho, con esto, cada fila seleccionara automaticamente la opcion correspondiente al ComboBox . (Ojo que si quieres que el combo muestre la Descripcion deberas asignar la propiedad oCBC.DisplayType = SAPbouiCOM.BoComboDisplayType.cdt_Description).

2 - Para Asignar un valor a una celda al momento de seleccionar una opcion del combo:

Para esto se debe usar el evento del grid “ComboSelectAfter()” el cual se activa al seleccionar cualquier ComboBox contenido en un grid:

 Private Sub Grid0_ComboSelectAfter(sboObject As Object, pVal As SAPbouiCOM.SBOItemEventArg)

            If (pVal.ColUID = "SUPRA-SECCIÓN") Then

                Dim dtRow As Integer = Grid0.GetDataTableRowIndex(pVal.Row)
                Dim oCBC As SAPbouiCOM.ComboBoxColumn = Grid0.Columns.Item("SUPRA-SECCIÓN")
                Dim ValSelec As String = oCBC.GetSelectedValue(pVal.Row).Value ' Selecciona El Valor (U_CodigoSS)
                Dim DesSelec As String = oCBC.GetSelectedValue(pVal.Row).Description ' Selecciona la Descripcion (U_NombreSS)
                ' Para Asignar el Valor a una celda del grid se puede asi:
                Grid0.DataTable.SetValue("CODSUPRA", dtRow, ValSelec)
                'O tambien asi
                oGrid.DataTable.Columns.Item("CODSUPRA").Cells(pVal.Row).value = ValSelec

            End If

        End Sub

Saludos :vulcan_salute:

1 me gusta

Hola Gabriel,
perfecto, me sirvio de maravilla ademas aprendi otra cosa que puedo hacer desde una grilla.
muchas gracias :slight_smile:

1 me gusta