in reply to Re^3: CGI table problems
in thread CGI table problems

Actually, the problem is within renderPartReadView.

It creates a verticle list of label/value pairs, which is fine.

The problem is when the value is a list, it puts the values side by side, and I want them stacked.

Replies are listed 'Best First'.
Re^5: CGI table problems
by pKai (Priest) on Nov 11, 2006 at 16:09 UTC
    I see no problem for the same argument to apply (replace the td-content with a table of rows of one td each):
    $data .= $cgi->td({-valign=>'top'}, $cgi->table( map{ $cgi->Tr($cgi->td($_) ) } @{render +PartReadView($cgi, $lca_dbm, $am)} );
      I finally got this to work just the way I wanted. I checked the result to see if it was an array ref, then formed a sub-table if it was:
      #massage multi-values for formatting if ( ref $encodedvalue eq 'ARRAY' ) { my $listtable .= $cgi->start_table({-border=>0}); for ( my $i=0; $i<scalar( @$encodedvalue) ; $i++ ) { $listtable .= $cgi->Tr({}, $cgi->th(@$encodedvalue[$i]) ); } $listtable .= $cgi->end_table(); $data .= Tr({}, $cgi->td({-class=>'label'}, $attrHash->{ATTRNAME}), $cgi->td({-class=>'value'}, ($listtable || $cgi->p('&nbsp;')))); } else { $data .= Tr({}, $cgi->td({-class=>'label'}, $attrHash->{ATTRNAME}), $cgi->td({-class=>'value'}, ($encodedvalue || $cgi->p('&nbsp;')))); }}