¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Criação de formulário em C# com SAP9.0 UI+DI API para exibir matriz de itens com caixas de seleção.

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

Estou usando SAP9.0 UI+DI API em C# e tentando criar um formulário que exiba uma matriz com as propriedades dos itens e uma caixa de seleção na frente deles, para que o usuário possa selecionar alguns e usá-los posteriormente como filtro para minhas consultas.

Usei um DataTable para vincular as caixas de seleção a uma fonte de dados, mas sempre que pressiono o botão OK (para salvar os marcados), percebo que, embora eu tenha marcado alguns, todos retornam 'N', o que significa que nenhum está marcado.

A 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 = "selecionar";

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;

Vincular Dados

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();

//Preencher DTABLE

if (tts == null)

{

tts = PreloadTulajdonsagCollection();

}

FillDataTableTulajdonsag(ref oDataTable, tts);

// Consulta

oMatrix.LoadFromDataSource();

// Verificar valores padrão

foreach (TermekTulajdonsagSelect select in tts)

{

if (select.Selected)

{

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

if (cb!=null)

cb.Checked = true;

}

}

}

Preenchimento

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");

}

}

}

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

2 Respuestas

0
Cargando...

Resolve meus problemas a uma velocidade recorde. Obrigado!

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

Olá,

Antes de ler a tabela de dados, você executou omatrix.FlushToDataSource()?

Saudações,

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?