[Zope] How to make a table with sortable colmns?

Greg Fischer retheoff at gmail.com
Fri Oct 7 19:54:18 EDT 2005


There is the "sort" attribute of the dtml-in tag. You'll have to read the
DTML Reference for more info on that.

However, it was a little iffy for me once, and now I do something like this:

1. Setup table header with a response back to sort that column.
2. Change the ZSQL method to use that value dynamically.

Maybe not the best/most efficient way, but it works great for my use.

So on your table header, either add forms with submit links, or add a link
with query strings. I usually add a query string, so my table header looks
like this:
<tr>
<td><a href="<dtml-var URL0>?sortby=colA">Col A</td>
<td><a href="<dtml-var URL0>?sortby=colB">Col B</td>
</tr>

Then in your ZSQL method, setup an argument for "sortby". Make sure you name
colA or colB exactly like your table columns. In the method, I create a
dtml-if at the end of the query:
Select ........
<dtml-if "_.has_key('sortby')">
Order by <dtml-var sortby>, LastName
<dtml-else>
Order by LastName
</dtml-if>

OR

Select ........
<dtml-if "_.has_key('sortby')">
Order by <dtml-var sortby>
</dtml-if>

I have LastName there because I always wanted that column to be a second
sort. You obviously would have a different one. There's probably a little
more to this I am not thinking of at the moment, but I hope it helps you
towards your goal. You could also get real fancy and add ascending and
descending to the mix. (click to sort, click again to sort desc)

Greg


On 10/7/05, Thomas Apostolou <tomatbiz-tominfo at yahoo.co.uk> wrote:
>
> Hello all,
> i am using the following to get some data from
> Database
> and show them in a table:
>
> <head>
> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;
> charset=ISO-8859-7">
> </head>
> <style type="text/css" media="screen"><!-- @import
> url(/plone.css); --></style>
> <style type="text/css" media="screen"><!-- @import
> url(/ploneColumns.css); --></style>
> <style type="text/css" media="all"><!-- @import
> url(/ploneCustom.css); --></style>
> <dtml-var standard_html_header>
> <table id="sortable" class="listing" summary="Content
> listing" cellpadding="0" cellspacing="0">
> <thead>
> <dtml-in expr="GetHeader(sysDSN=sysDSN, usr=usr,
> mypass=mypass, sTable=sTable)">
> <th class="">
> <dtml-in sequence-item>
> <dtml-var sequence-item>
> </dtml-in>
> </th>
> </dtml-in>
> </thead>
> <dtml-in expr="GetData(sysDSN=sysDSN, usr=usr,
> mypass=mypass, sTable=sTable)">
> <dtml-if sequence-even>
> <tr class="even">
> <dtml-else>
> <tr class="odd">
> </dtml-if>
> <dtml-in sequence-item>
> <!-- <td <input type="checkbox" title=<dtml-var
> sequence-item> ></td>-->
> <td><dtml-var sequence-item></td>
> </dtml-in>
> </tr>
> </dtml-in>
> </table>
> <dtml-var standard_html_footer>
>
>
> But how can i tell the table to sort the column i
> click on just like plone does with the members list?
>
> Thanks in advance
>
> Thomas Apostolou
>
>
>
>
>
>
> ___________________________________________________________
> Χρησιμοποιείτε Yahoo!;
> Βαρεθήκατε τα ενοχλητικά μηνύματα (spam); Το Yahoo! Mail
> διαθέτει την καλύτερη δυνατή προστασία κατά των ενοχλητικών
> μηνυμάτων http://login.yahoo.com/config/mail?.intl=gr
>
> _______________________________________________
> Zope maillist - Zope at zope.org
> http://mail.zope.org/mailman/listinfo/zope
> ** No cross posts or HTML encoding! **
> (Related lists -
> http://mail.zope.org/mailman/listinfo/zope-announce
> http://mail.zope.org/mailman/listinfo/zope-dev )
>



--
Greg Fischer
1st Byte Solutions
http://www.1stbyte.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.zope.org/pipermail/zope/attachments/20051007/ee20b847/attachment.htm


More information about the Zope mailing list