The tableselect element supports use with tablesort_sql. Simply modify the header to the format described in theme_table.
function example_elements_form
() {
$form =
array();
$header =
array(
'title' =
> array('field' =
> 'n.title',
'data' =
> t('Title')),
'author' =
> array('field' =
> 'u.name',
'data' =
> t('Author')),
);
$query =
"SELECT n.nid, n.title, u.name FROM {node} n INNER JOIN {users} u ON n.uid = u.uid".
tablesort_sql($header);
$result =
pager_query(db_rewrite_sql($query));
while($partial_node =
db_fetch_object($result)) {
$options[$partial_node-
>nid] =
array(
'title' =
> check_plain($partial_node-
>title),
'author' =
> theme('username',
$partial_node),
);
}
if (!empty($options)) {
$form['nodes'] =
array(
'#type' =
> 'tableselect',
'#header' =
> $header,
'#options' =
> $options,
);
$form['pager'] =
array('#value' =
> theme('pager'));
$form['submit'] =
array(
'#type' =
> 'submit',
'#value' =
> t('Submit'),
);
}
return $form;
}
