Avalados por :

Creación de formulario en C# con SAP9.0 UI+DI API para mostrar matriz de ítems con casillas de verificación

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 9 Vistas
0
Cargando...

Utilizo SAP9.0 UI+DI API en C# e intento crear un formulario que muestre una matriz con las propiedades de los ítems y una casilla de verificación delante de ellos, para que si el usuario selecciona algunos, pueda usarlos más tarde como filtro para mis consultas.

Usé un DataTable para enlazar las casillas de verificación a una fuente de datos, pero cada vez que se presiona el botón OK (cuando me gustaría guardar cuáles están marcados), veo que aunque marqué algunos, todos devuelven 'N', lo que significa que ninguno está marcado.

La Matriz

Matrix oMatrix = oForm.Items.Item(ID_MATRIX_TULAJDONSAGOK).Specific;

Columns oColumns = oMatrix.Columns;

Column oColumn = null;

oColumn = oColumns.Add("#", BoFormItemTypes.it_EDIT);

oColumn.TitleObject.Caption = "#";

oColumn.Width = 30;

oColumn.Editable = false;

oColumn = oColumns.Add("CSel", BoFormItemTypes.it_CHECK_BOX);

oColumn.TitleObject.Caption = "seleccionar";

oColumn.Width = 30;

oColumn.Editable = true;

oColumn.ValOn = "Y";

oColumn.ValOff = "N";

oColumn = oColumns.Add("CTul", BoFormItemTypes.it_EDIT);

oColumn.TitleObject.Caption = "Tulajdonság";

oColumn.Width = 60;

oColumn.Editable = false;

Enlazar Datos

private void BindDataSources(Form oForm)

{

oForm.DataSources.DataTables.Add(DataTable_Tulajdonsagok);

DataTable oDataTable = oForm.DataSources.DataTables.Item(DataTable_Tulajdonsagok);

oDataTable.Clear();

oDataTable.Columns.Add(DataTable_Column_Checkbox, BoFieldsType.ft_Text, 1);

oDataTable.Columns.Add("ItmsTypCod", BoFieldsType.ft_Integer, 16);

oDataTable.Columns.Add("ItmsGrpNam", BoFieldsType.ft_Text, 255);

Matrix oMatrix = oForm.Items.Item(ID_MATRIX_TULAJDONSAGOK).Specific;

Columns oColumns = oMatrix.Columns;

Column oColumn = null;

oColumn = oColumns.Item("#");

oColumn.DataBind.Bind(DataTable_Tulajdonsagok, "ItmsTypCod");

oColumn = oColumns.Item("CSel");

oColumn.DataBind.Bind(DataTable_Tulajdonsagok, DataTable_Column_Checkbox);

oColumn = oColumns.Item("CTul");

oColumn.DataBind.Bind(DataTable_Tulajdonsagok, "ItmsGrpNam");

oMatrix.Clear();

oMatrix.AutoResizeColumns();

//Llenar DTABLE

if (tts == null)

{

tts = PreloadTulajdonsagCollection();

}

FillDataTableTulajdonsag(ref oDataTable, tts);

// Consulta

oMatrix.LoadFromDataSource();

// Comprobar valores predeterminados

foreach (TermekTulajdonsagSelect select in tts)

{

if (select.Selected)

{

CheckBox cb = oMatrix.GetCellSpecific("CSel", select.Id-1);

if (cb!=null)

cb.Checked = true;

}

}

}

Llenado

private void FillDataTableTulajdonsag(ref DataTable oDataTable, IList<TermekTulajdonsagSelect> tts)

{

oDataTable.Rows.Clear();

if (tts.Count > 0)

{

oDataTable.Rows.Add(tts.Count);

for(int i = 0; i < tts.Count; i++)

{

oDataTable.SetValue("ItmsTypCod", i, tts[i].Id);

oDataTable.SetValue("ItmsGrpNam", i, tts[i].Name);

oDataTable.SetValue(DataTable_Column_Checkbox, i, (tts[i].Selected)? "Y":"N");

}

}

}

Utilizo el método de llenado, porque cada vez que cargo el formulario, me gust

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

2 Respuestas

0
Cargando...

¡Resuelves mis problemas a una velocidad récord. ¡Gracias!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

¿Antes de leer la tabla de datos, ejecutaste omatrix.FlushToDataSource()?

Saludos,

Edy

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?