Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 0.9.3

Request #9566 Get defined columns
Submitted: 2006-12-07 05:25 UTC
From: daniel at assertio dot es Assigned: olivierg
Status: Closed Package: Structures_DataGrid (version 0.7.2)
PHP Version: 5.1.4 OS: Win XP
Roadmaps: (Not assigned)    
Subscription  


 [2006-12-07 05:25 UTC] daniel at assertio dot es (Daniel Garcia)
Description: ------------ Hello, In order to customize the datagrid output, I need to access the defined column set but I cannot find the proper method in DataGrid or in the concrete renderer container (HTML_Table). I need the full column set, not only the DataSource's, so I guess using DataSouce::getColumns is not useful. Besides, I see property columnSet access is marked as private. Thanks for taking the time to read this, best wishes - Dani

Comments

 [2006-12-07 20:01 UTC] olivierg at php dot net (Olivier Guilyardi)
Hi Daniel, Can't you do what you need with the getColumnByField() method?
 [2006-12-07 20:09 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2006-12-08 04:46 UTC] daniel at assertio dot es
I try to explain what I want to archieve, it may make my need clearer: Initially I have a datagrid resembling a DB table with some custom-formatted columns (for example Edit | Delete | Order # | Description | Quantity | Ammount. No problem. Then I need to add a Totals row: My idea was to integrate that totals row in the datagrid, but for the totals I only need to sum the Quantity and Ammount cols. Then what I want is to use the HTML_Table object to merge the initial descriptive columns into a single column reading "TOTAL", and render the summed columns behind the corresponding column. In order to do that, I thought of looping the columnSet defined in the DataGrid object to retrieve the position of each column and then calculate the colspan. (BTW, in my opinion the idea of separating fetched columns from rendered columns (Bug #7710) would be very handy and help make DG structure clearer.) TIA - Dani
 [2006-12-08 05:45 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2006-12-08 08:43 UTC] daniel at assertio dot es
Actually, I'm adding a row. Since it's a bit tiring to try to explain it, you can find a snapshot of what's my goal at http://www.quintopino.com/misc/customRow.png (in fact, I made that customization accessing directly the DataGrid->columnSet "private" property). I hope that's more explicit. DataSource is an array, and the table is rendered using DataGrid->getOutput(). I don't use DataGrid->fill(). TIA - Dani
 [2006-12-08 09:46 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2006-12-08 10:30 UTC] olivierg at php dot net (Olivier Guilyardi)
Mark, bug #7710 does not forbid retrieving informations from the columns that were manually created by the user (== "not obtained from the datasource", if I understand correctly). Daniel, I second Mark about using fill(). That should be quite handy in your case. Concerning your specific problem, it's a little complex, and there certainly are many ways to solve it. However, if you think that a generic SDG::getColumns() method would help you, I see no objection for it and might add it. Should we simply go this path ?
 [2006-12-08 10:50 UTC] User who submitted this comment has not confirmed identity
If you submitted this note, check your email.If you do not have a message, click here to re-send
MANUAL CONFIRMATION IS NOT POSSIBLE.  Write a message to pear-dev@lists.php.net
to request the confirmation link.  All bugs/comments/patches associated with this

email address will be deleted within 48 hours if the account request is not confirmed!
 [2006-12-08 12:18 UTC] olivierg at php dot net (Olivier Guilyardi)
Okay, I've added Structures_DataGrid::getColumns() in CVS. However, due to a small bug related to the new streaming future we are developing, you need to call this method after rendering. If you call it after bind() but before rendering you might observe unexpected results. But this should be fixed in the next release. If there's no objection I propose we close this bug.
 [2006-12-08 16:59 UTC] olivierg at php dot net (Olivier Guilyardi)
Okay, so I just fixed this small bug: you can use getColumns() after binding and before rendering. It should work fine from now. It's all in CVS. I close this bug. Thanks for your report
 [2006-12-09 04:37 UTC] daniel at assertio dot es
I take note of using fill() for customizations, that definitely seems the way to go. I do appreciate your prompt support and action. Thank you!