sorting - How do I display a Wicket Datatable, sorted by a specific column by default? -
i have question regarding wicket's datatable. using datatable display few columns of data.
my table set follows:
datatable<column> datatable = new datatable<column>("columnstable", columns, provider, maxrowsperpage) { @override protected item<column> newrowitem(string id, int index, imodel<column> model) { return new oddevenitem<column>(id, index, model); } };
the columns so:
columns[0] = new propertycolumn<column>(new model<string>("description"), "description", "description"); columns[1] = new propertycolumn<column>(new model<string>("logic"), "columnlogic"); columns[2] = new propertycolumn<column>(new model<string>("type"), "datatype", "datatype");
here column data provider:
public class columnsortabledataprovider extends sortabledataprovider<column> { private static final long serialversionuid = 1l; private list<column> list = null; public columnsortabledataprovider(table table) { this.list = arrays.aslist(table.getcolumns().toarray(new column[0])); } public columnsortabledataprovider(list<column> list) { this.list = list; } @override public iterator<? extends column> iterator(int first, int count) { /* first - first row of data count - minimum number of elements retrieve method returns iterator capable of iterating on {first, first+count} items */ iterator<column> iterator = null; try { if(getsort() != null) { collections.sort(list, new comparator<column>() { private static final long serialversionuid = 1l; @override public int compare(column c1, column c2) { int result=1; propertymodel<comparable> model1= new propertymodel<comparable>(c1, getsort().getproperty()); propertymodel<comparable> model2= new propertymodel<comparable>(c2, getsort().getproperty()); if(model1.getobject() == null && model2.getobject() == null) result = 0; else if(model1.getobject() == null) result = 1; else if(model2.getobject() == null) result = -1; else result = ((comparable)model1.getobject()).compareto(model2.getobject()); result = getsort().isascending() ? result : -result; return result; } }); } if (list.size() > (first+count)) iterator = list.sublist(first, first+count).iterator(); else iterator = list.iterator(); } catch (exception e) { e.printstacktrace(); } return iterator; }
sorting clicking column works perfectly, table sorted, default, description column. @ loss this. if need see other code, please let me know.
thank in advance!!! - d
there couple overloaded setsort
methods , setsortstate
method in sortabledataprovider
can called set this.
for sample code using setsort
, see sortablecontactdataprovider
source in sorting dataview example on examples page.
Comments
Post a Comment