[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