Bom Pessoal , me surgiu uma necessidade de fazer que seja Dinâmico a ocultação de campos, y como bem sabem a macro apenas aceita o campo explícito Exemplo sc_field_display({meu_campo}, off); não posso passar uma Variável para a macro, pois não funciona.
Então investiguei y simulei a macro do SC O Uso desse código e por Responsabilidade do programador, não esta previsto Erros inesperados, atualizações NetMake ou outro fator que possa alterar o funcionamento deste método. Por tanto o uso y manutenção e por sua conta Sr. Programador …
Explicado tudo vamos la, mãos a obra…
No meu Caso vou ter apenas 1 consulta com vários campos y varias quebras, y de acordo com a quebra y outros fatores devo ocultar determinados campos y mostrar outros…
Aqui tem métodos que vocês podem mudar de acordo a sua necessidade…
1- Criar um método PHP chamado f_forma_array_campos($ar_campos) Recebendo um argumento chamado ar_campos
$ar_array = explode(",", $ar_campos);
return $ar_array;
2- Criar um metodo PHP chamado f_mostrar_campos($ar_campos) Recebendo um argumento chamado ar_campos
if(isset($ar_campos))
{
if(count($ar_campos) > 0)
{
foreach ($ar_campos as $campo)
{
$this->NM_cmp_hidden[$campo] = "on";
if (!isset($this->NM_ajax_event) || !$this->NM_ajax_event)
{
$_SESSION['sc_session'][$this->Ini->sc_page]['grid_view_rpt_cargas_uno']['php_cmp_sel'][$campo] = "on";
}
}
}
}
3- Criar um metodo PHP chamado f_oculta_campo($ar_campos) Recebendo um argumento chamado ar_campos
if(isset($ar_campos))
{
if(count($ar_campos) > 0)
{
foreach ($ar_campos as $campo)
{
$this->NM_cmp_hidden[$campo] = "off";
if (!isset($this->NM_ajax_event) || !$this->NM_ajax_event)
{
$_SESSION['sc_session'][$this->Ini->sc_page]['grid_view_rpt_cargas_uno']['php_cmp_sel'][$campo] = "off";
}
}
}
}
4- Basta utilizá-los como querer, mais como?? segue exemplo, no meu caso coloquei no OnSriptInt para cada tipo de quebra ele ocula y mostra determinados campos
[code]$var_campos_ocultar = array();
switch ( sc_get_groupby_rule() ) {
case “empresa”:
[titulo] = “Reporte de Cargas X Empresas”;
f_oculta_campo(f_forma_array_campos(“nombre_cliente”)); //si eu quero ocultar 1 campo apenas coloco ele dentro da chamada
f_mostrar_campos(f_forma_array_campos(“nro_chapa,descripcion_producto”)); //si eu quero ocultar mais de um campo coloco entre , (virgulas) os campos
break;
case “empresa_chapa”:
[titulo] = “Reporte de Cargas X Empresas X Chapas”;
f_oculta_campo(f_forma_array_campos(“nombre_cliente,nro_chapa”));
f_mostrar_campos(f_forma_array_campos(“descripcion_producto”));
break;
case “chapa”:
[titulo] = “Reporte de Cargas X Chapas”;
f_oculta_campo(f_forma_array_campos(“nro_chapa”));
f_mostrar_campos(f_forma_array_campos(“nombre_cliente,descripcion_producto”));
break;
case “combustible”:
[titulo] = “Reporte de Cargas X Tipo de Combustible”;
f_oculta_campo(f_forma_array_campos(“descripcion_producto”));
f_mostrar_campos(f_forma_array_campos(“nombre_cliente,nro_chapa”));
break;
case “combustible_empresa”:
[titulo] = “Reporte de Cargas X Empresa X Tipo de Combustible”;
f_oculta_campo(f_forma_array_campos(“descripcion_producto,nombre_cliente”));
f_mostrar_campos(f_forma_array_campos(“nro_chapa”));
break;
default:
[titulo] = “Reporte de Cargas”;
f_mostrar_campos(f_forma_array_campos(“descripcion_producto,nombre_cliente,nro_chapa”));
break;
}[/code]
Espero que sirva para mais alguém…