[Catalyst] Datagrid with details view?

Kenneth S Mclane ksmclane at us.ibm.com
Fri Apr 6 12:56:31 GMT 2012


From:
Hernan Lopes <hernanlopes at gmail.com>
To:
The elegant MVC web framework <catalyst at lists.scsys.co.uk>
Date:
04/05/2012 06:18 PM
Subject:
Re: [Catalyst] Datagrid with details view?

This is my first attempt. I did get it working, I am using this as a 
learning exercise. You have given me several different things to try for 
this as alternatives.  Please see my comments/answers inline below.

Kenneth, 
you are using ->search which return multiple records, and you are using [% 
details.account_code %]  on your code. Maybe you should:
1. [% details.0.account_code %] and ->all 
or 2. while ( $item = $results->next ) { ... }
Kenneth> I used search as that was what I found an example of, plus in my 
case it only returns one record. I ended up wrapping my template code in a 
FOREACH and changing to a singular reference.
and you can always do
$results = $c->model('ORANGES::AccountDetails')->search({account_id => 
{'=', \$acctid}})
$c->stash(details => $results )
instead of
$c->stash(details => 
[$c->model('ORANGES::AccountDetails')->search({account_id => {'=', 
\$acctid}})]);

and, why are you using \$acctid ? why not simply $acctit?
Kenneth> the code did not want to accept it without the escape for some 
reason, perhaps I needed to wrap it in double quotes. It wasn't 
interpolating it.
and why ->search and not ->find if its one record... you need find
Kenneth> good to know. 

good luck

-hernan


On Thu, Apr 5, 2012 at 3:07 PM, Kenneth S Mclane <ksmclane at us.ibm.com> 
wrote:
I am trying to duplicate a .aspx website. I have succeeded in getting a 
page based on a db view. In the original site you can click on a row and a 
details view appears at the bottom of the page. I don't know if this is 
possible, but I have been trying to simply get a second page to come up 
with the details. I created a view with the fields I need and re-created 
my schema. I created a controller and added this code: 

sub detail :Local :Args(1) { 
    my ($self, $c, $acctid) = @_; 
    $c->stash(details => 
[$c->model('ORANGES::AccountDetails')->search({account_id => {'=', 
\$acctid}})]); 
    $c->stash(template => 'accountdetails/detail.tt2'); 
} 
This appears to create a valid sql query, I get results when running it 
directly on the db.

I added code to my list.tt2 file to create a link to the 
/accountdetails/detail URI by wrapping one of my TD in an href statement 
like this: 

<td><a href="[% c.uri_for('/accountdetails/detail/') %][% 
account.account_id %]">[% account.account_code %]</a></td> 

I created my detail.tt2 file containing this: 

[% META title = 'Account Detail' -%] 
<center> 
<table border="1" style="width:33%;border-collapse:collapse;"> 

<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Account Code</td><td>[% 
details.account_code %]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Account Name</td><td>[% 
details.account_name %]</td></tr> 
<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Account Policy</td><td>[% 
details.account_policy %]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Account Target</td><td>[% 
details.account_target %]</td></tr> 
<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Account Workitem</td><td>[% 
details.account_workitem %]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Start Date</td><td>[% 
details.start_date %]</td></tr> 
<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Kit Date</td><td>[% details.kit_date 
%]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Upgrade Date</td><td>[% 
details.upgrade_date %]</td></tr> 
<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Approval Date</td><td>[% 
details.approval_date %]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Sunset Date</td><td>[% 
details.sunset_date %]</td></tr> 
<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Alert Flag</td><td>[% 
details.alert_flag %]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Cirats Flag</td><td>[% 
details.cirats_flag %]</td></tr> 
<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Report Flag</td><td>[% 
details.report_flag %]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Sample Flag</td><td>[% 
details.sample_flag %]</td></tr> 
<tr style="backround-color:#F8F8F8;"> 
<td style="background-color:#E5ECF9;">Sample Rate</td><td>[% 
details.sample_rate %]</td></tr> 
<tr style="backround-color:White;"> 
<td style="background-color:#E5ECF9;">Department Code</td><td>[% 
details.department_code %]</td></tr> 

</table> 
</center> 

My link works, I get the detail page with all the formatting and the 
pre-populated TD's, but the data is not showing up. I think I am missing 
something. 

Once again all help is appreciated.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/catalyst/attachments/20120406/c85f371a/attachment.htm


More information about the Catalyst mailing list