Seleccionar fila en una grid c#

csharp
Etiquetas: #<Tag:0x00007f6526aa5f40>

#1

Hola, buenas tardes, tengo una duda con un grid, logro crear la grid y agregarle el linkedbutton en el primer campo.


ahora lo que quiero son dos cosas, es agregar numero en la columna vacía(antes de código)y lo otro que con el botón fijar como estándar esta quede seleccionada, asi como el BP en la pestaña métodos de pago puedes fijar el método de pago…
mi código es:

oForm = oApp.Forms.Item("formpri");
             oForm.Visible = true;
            //busca la grilla con el UID
            oitem = oForm.Items.Item("grdpy");
            oGrid = ((SAPbouiCOM.Grid)(oitem.Specific));
            //crear el datasources  y despues dentro de esto se ejecuta la query
            oForm.DataSources.DataTables.Add("grPagdt");
            oForm.DataSources.DataTables.Item(0).ExecuteQuery("SELECT PayMethCod AS Código,Descript as Descripción,Active as Activo from OPYM where type='O'");
            oGrid.DataTable = oForm.DataSources.DataTables.Item("grPagdt");
            //cheackbox en el campo activo 
            oGrid.Columns.Item("Activo").Type = SAPbouiCOM.BoGridColumnType.gct_CheckBox;
            //para agregar el link buton a la grilla
            oGrid.Columns.Item("Código").Type = SAPbouiCOM.BoGridColumnType.gct_EditText;
            SAPbouiCOM.EditTextColumn oEdit = (SAPbouiCOM.EditTextColumn)oGrid.Columns.Item("Código");
            oEdit.LinkedObjectType = "147";

gracias…


#3

Hola.

Para seleccionar una fila en un grid, primero deberas tener la propiedad SelectionMode del dicho Grid en ms_Single

Luego en el metodo ClickAfter del grid:

private void Grid0_ClickAfter(object sboObject, SAPbouiCOM.SBOItemEventArg pVal)
        {
            try
            {
                Grid0.Rows.SelectedRows.Add(pVal.Row);
            }
            catch (Exception)
            {
            }

        }

Para poder agregar los numeros de fila a un Grid crea el siguiente metodo, el cual recibe como parametro el objeto grid que quieras numerar:

        public static void RowNumberGrid(SAPbouiCOM.Grid oGrid)
        {
            SAPbouiCOM.RowHeaders oHeader = null;
            oHeader = oGrid.RowHeaders;

            for (int i = 0; i <= oGrid.Rows.Count - 1; i++)
            {
                oHeader.SetText(i, Convert.ToString(i + 1));
            }
        }

Saludos.


#4

Gracias Gabriel, como siempre es muy util tu ayuda, el tema de la numeración quedo perfecto, el tema para poder seleccionarlo y quede como default? osea utilizando el boton tendria que decirle desde el grid al boton? muchas gracias


#5

Para poder conocer cual es el row seleccionado de algun Grid y obtener un valor de dicha fila, debes hacer lo siguiente en el ClickAfter del boton:

 private void Button1_ClickAfter(object sboObject, SAPbouiCOM.SBOItemEventArg pVal)
        {
            try
            {
                if (Grid0.Rows.SelectedRows.Count > 0)   //VERIFICA QUE EXISTA UN ROW SELECCIONADO
                {
                    int nSelecRow =   Grid0.Rows.SelectedRows.Item(0, SAPbouiCOM.BoOrderType.ot_RowOrder); //OBTIENE EL ROW SELECCIONADO
                    string sValorGrid = Convert.ToString(Grid0.DataTable.GetValue("Mi_Campo", nSelecRow ));
                }
            }
            catch (Exception) {}
        }

Saludos.


#6

Muchas gracias Gabriel :slight_smile:


#7