public class PriceSheetPanel2 extends Panel { public PriceSheetPanel2(String id) { super(id); String filename = "/tmp/uploads/sheet.csv"; PriceSheetManager psheet = new CSVPriceSheetManager(filename); int cols = psheet.getRandomRow().size(); List columns = new ArrayList(); for( int i = 0 ; i < cols ; i++ ){ String str = Integer.valueOf(i).toString(); columns.add(new PropertyColumn(new Model("Column "+ str),str)); } add(new PriceSheetForm("sheetform",cols)); add(new AjaxFallbackDefaultDataTable("table", columns, new MySortableProvider(psheet.getAll()), 10)); } private static final long serialVersionUID = 1L; public class MySortableProvider extends SortableDataProvider { private static final long serialVersionUID = 1L; private List psheet; public MySortableProvider(List list) { this.psheet = list; setSort("0",true); } public Iterator iterator(int from, int to) { SortParam sp = getSort(); return psheet.subList(from,psheet.size()).iterator(); } public IModel model(Object object) { return new Model((ArrayList) object); } public int size() { return psheet.size(); } } }