I looks like I needed to know this myself:
table.getControlLink().setParameter("companyId", companyId);
For this case, it is the way to go.
sabob wrote:
>
> Hi Jay,
>
> As Florin suggested you can use a stateful Page, or add the state and
> district parameters to the Table controlLink.
>
> See here for details:
> http://incubator.apache.org/click/docs/click-api/net/sf/click/control/Table.html#paging-and-sorting
>
> Another option is to store the Page state in the session for example:
>
> public class SchoolPageState implements Serializable {
> public String state;
> public String district;
> }
>
> public class Schools extends WebSiteTemplate {
> public void onInit() {
> super.onInit();
> restoreState();
> ...
> }
>
> public void saveState() {
> // store the state in the session
> }
>
> public void restoreState() {
> // retrieve the state from the session
> }
>
> public void onRender() {
> saveState();
> }
> }
>
> kind regards
>
> bob
>
>
> florin.g wrote:
>> By default, your page is stateless - hence your selections are lost as
>> you
>> navigate the table for the first time.
>>
>> You need to either use a stateful page [ setStateful(true) in the page
>> constructor ] or do some footwork with the url parameters.
>>
>> To continue use a stateless page, you need to pass the choices made in
>> your
>> lists as url parameters back to the page when you set the district and
>> then
>> when you navigate the table. I'd use a client side library such as jQuery
>> to
>> capture the values of the select objects and append these values to the
>> previous/next table navigation urls. When back to the page, you must use
>> those values to re-configure your lists (state, district and schools).
>> Sounds like a lot of work. Go with the stateful page.
>>
>>
>>
>> Jay Wang wrote:
>>
>>> Hi,
>>> I have a page where I let user to select a state from a selection list
>>> of
>>> 50 states and after the selection, a school district selection is
>>> populated based on the state selected. The user then proceeds to select
>>> a
>>> school district. After a district is selected , a table display of
>>> schools
>>> from that district is shown which should allow user to page through if
>>> there are multiple pages. The problem I ran into is that the paging and
>>> sorting of table columns does not work and it also messes up the
>>> selection
>>> as well.
>>> Source code is attached here (Schools.java and school.htm
>>>
>>> Schools.java
>>> ------------------------
>>> import java.sql.SQLException;
>>> import java.util.List;
>>> import net.sf.click.control.Column;
>>> import net.sf.click.control.Form;
>>> import net.sf.click.control.PageLink;
>>> import net.sf.click.control.Select;
>>> import net.sf.click.control.Table;
>>> import net.sf.click.extras.control.LinkDecorator;
>>> import net.sf.click.extras.control.TableInlinePaginator;
>>> import org.apache.commons.lang.StringUtils;
>>> import us.myschoolusa.entity.School;
>>> import us.myschoolusa.service.DataManager;
>>> import us.myschoolusa.util.Helper;
>>>
>>> /**
>>> *
>>> * @author wangj6
>>> */
>>> public class Schools extends WebSiteTemplate {
>>>
>>> public Table schTable;
>>> public PageLink viewLink;
>>> public School school;
>>> public Form form;
>>> private Select stateSelect;
>>> private Select districtSelect;
>>>
>>> public Schools() {
>>>
>>>
>>> form = new Form("selectForm");
>>>
>>>
>>> stateSelect = new Select("state", "");
>>> stateSelect.setAttribute("onchange",
>>> "handleChange('selectForm_district', selectForm)");
>>> form.add(stateSelect);
>>>
>>> districtSelect = new Select("district", "");
>>> districtSelect.setAttribute("onchange", "selectForm.submit()");
>>> form.add(districtSelect);
>>>
>>> schTable = new Table("schTable");
>>>
>>> schTable.setClass(Table.CLASS_SIMPLE);
>>> schTable.setHoverRows(true);
>>> schTable.setPageSize(25);
>>> schTable.setShowBanner(true);
>>> schTable.setSortable(true);
>>> schTable.setPaginator(new TableInlinePaginator(schTable));
>>> schTable.setPaginatorAttachment(Table.PAGINATOR_INLINE);
>>>
>>> Column name = new Column("fullName", "School Name");
>>> schTable.addColumn(name);
>>> schTable.addColumn(new Column("city"));
>>> schTable.addColumn(new Column("state"));
>>> Column action = new Column("Action", "");
>>> viewLink = new PageLink("view", SchoolDetail.class);
>>> viewLink.setParameter("referrer", "/schools.htm");
>>> action.setDecorator(new LinkDecorator(schTable, viewLink,
>>> "schoolId"));
>>> action.setSortable(false);
>>> schTable.addColumn(action);
>>> }
>>>
>>> public void onInit(){
>>> super.onInit();
>>> populateSelect();
>>>
>>> }
>>>
>>> private void populateSelect() {
>>>
>>> try {
>>> stateSelect.setOptionList(Helper.getOptionForStates());
>>> } catch (SQLException e) {
>>> e.printStackTrace();
>>> form.setError("error.");
>>> }
>>>
>>> stateSelect.bindRequestValue();
>>>
>>> if (StringUtils.isEmpty(stateSelect.getValue())) {
>>> // No state selected, exit early
>>> return;
>>> }
>>> try {
>>>
>>>
>>> districtSelect.setOptionList(Helper.getOptionForDistrictsByState(stateSelect.getValue()));
>>> districtSelect.bindRequestValue();
>>> if (StringUtils.isEmpty(districtSelect.getValue())) {
>>> // No district selected, exit early
>>> return;
>>> }
>>> List<School> schList =
>>> DataManager.selectSchoolsByDistrictId(Integer.parseInt(districtSelect.getValue()));
>>> schTable.setRowList(schList);
>>>
>>> } catch (SQLException e) {
>>> e.printStackTrace();
>>> }
>>> }
>>> }
>>>
>>> schools.htm
>>> ----------------------------------
>>> <h2>School Directory</h2>
>>> <br/>
>>> $selectForm<br/>
>>> #if (${schTable.getRowList().size()} > 0)
>>> $schTable
>>> #end
>>> <script type="text/javascript">
>>> function handleChange(id, form) {
>>> var select=document.getElementById(id);
>>> if(select != null) {
>>> select.selectedIndex=-1;
>>> }
>>> form.submit();
>>> }
>>> </script>
>>>
>>>
>>
>>
>
>
>
--
View this message in context:
http://n2.nabble.com/need-help-on-select-and-table-controls-tp2222256p2222746.html
Sent from the click-user mailing list archive at Nabble.com.