PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

Home » Structures » Structures_DataGrid » Bug #4454

No way to augment auto-generated columns with user defined columns

Details

Submitted2005-05-27 16:17 UTC
Fromej dot grace at imperial dot ac dot uk
StatusDuplicate
PackageStructures_DataGrid
PHP Version4.3.10
OSLinux
Roadmaps(Not assigned)

Comments

[2005-05-27 16:17 UTC] ej dot grace at imperial dot ac dot uk

Description:
------------
The following is an edited discussion from pear-general@lists.php.net regarding this issue.

=========== E Grace ===================Is there a way of modifying the Structures::DataGrid object so that using
addColumn() does not wipe out auto generated columns?

I've looked through the code but cannot see where using the addColumn() method
wipes out auto column generation.

The reason I want to do this is to implement buttons / links automatically for
DataGrid generated tables from a DataObject source. Essentially I am looking
for a way to automatically augment the generated table with controls (Add /
Edit / or checkboxes) such as those mentioned in the referenced .Net object:

http://tinyurl.com/crmsv
==================================================

Justin Patrin

> I've looked through the code but cannot see where using the addColumn() method
> wipes out auto column generation.

addColumn itself does not do this. The columns are auto-created only
if there are no columns added. See Structures/DataGrid/Renderer.php
function _setDefaultHeaders().

===================================================

E Grace

> addColumn itself does not do this. The columns are auto-created only
> if there are no columns added. See Structures/DataGrid/Renderer.php
> function _setDefaultHeaders().

Ahh!!! *lightbulb moment*, I see. That gets called by (Say
DataGrid/Renderer/HTMLTable->getTable(), it seems silly not to have a simple
switch somewhere and an ->allowAutoGeneration() method or something. Of
course this would mean that the columns one adds manually would come before
the auto generated columns.

Doubtless a similar simple hack would allow one to control the ordering,
perhaps, addColumnLeft() and addColumnRight() methods..

====================================

Final notes:

Perhaps this is something that should be considered at the renderer level. If one were to add a column with controls for editing records, that would be good for the HTMLTable rendered version, but meaningless for the CSV rendered version.

Currently the control over what columns get generated sits in Rendered->_setDefaultHeaders() (which is private) so there is no easy way to specify this on a renderer by renderer basis.

For example one could have leave the classic HTMLTable renderer as it is and have a new renderer class which allows easy addition of controls etc, or supply the renderer as a user defined callback, just a thought.

[2005-10-05 01:27 UTC] olivierg at php dot net

Please do not submit the same bug more than once. An existing
bug report already describes this very problem. Even if you feel
that your issue is somewhat different, the resolution is likely
to be the same. Because of this, we hope you add your comments
to the existing bug instead.

Thank you for your interest in PEAR.

Please see bug #3306