隨筆-126  評論-247  文章-5  trackbacks-0

          示例效果圖


          示例代碼

          繼上篇文章,本篇文章接著來給表格上分頁功能。部分代碼參考上篇文章。

          GridPagingExample

          package fan.tutorial.client.ui.grids;

          import java.util.ArrayList;
          import java.util.List;
          import com.extjs.gxt.ui.client.data.BasePagingLoader;
          import com.extjs.gxt.ui.client.data.HttpProxy;
          import com.extjs.gxt.ui.client.data.JsonPagingLoadResultReader;
          import com.extjs.gxt.ui.client.data.ModelData;
          import com.extjs.gxt.ui.client.data.ModelType;
          import com.extjs.gxt.ui.client.data.PagingLoadResult;
          import com.extjs.gxt.ui.client.data.PagingLoader;
          import com.extjs.gxt.ui.client.store.ListStore;
          import com.extjs.gxt.ui.client.widget.ContentPanel;
          import com.extjs.gxt.ui.client.widget.LayoutContainer;
          import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel;
          import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
          import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
          import com.extjs.gxt.ui.client.widget.grid.Grid;
          import com.extjs.gxt.ui.client.widget.layout.FitLayout;
          import com.extjs.gxt.ui.client.widget.toolbar.PagingToolBar;
          import com.google.gwt.core.client.GWT;
          import com.google.gwt.http.client.RequestBuilder;
          import com.google.gwt.i18n.client.NumberFormat;
          import com.google.gwt.user.client.Element;
          import fan.tutorial.client.commons.PagingToolBarExtend;
          import fan.tutorial.client.model.IEmployee;
          import fan.tutorial.server.value.Constant;

          public class GridPagingExample extends LayoutContainer {

              @Override
              protected void onRender(Element parent, int index) {
                  super.onRender(parent, index);

                  //創建內容面板
                  ContentPanel panel = new ContentPanel();
                  //設置面板標題
                  panel.setHeadingHtml("Grid Paging");
                  //設置面板寬度高度
                  panel.setSize(600, 350);
                  //設置面板布局, FitLayout 內容填充整個面板
                  panel.setLayout(new FitLayout());
                  panel.setFrame(true);

                  //創建ModelType
                  ModelType modelType = new ModelType();
                  //一定要設置才能顯示分頁總數
                  modelType.setTotalName(Constant.TOTAL);
                  //設置根名稱(與json數據根名稱要保持一致, 否則無法正確的解析數據)
                  modelType.setRoot(Constant.RESULT);
                  //添加表格需要使用到的字段域, 未被添加的字段域在表格中無數據展示
                  modelType.addField(IEmployee.NAME);
                  modelType.addField(IEmployee.SEX);
                  modelType.addField(IEmployee.SALARY);
                  modelType.addField(IEmployee.BIRTHPLACE);
                  modelType.addField(IEmployee.HIREDATE);

                  //復選框選擇模型
                  CheckBoxSelectionModel<ModelData> sm = new CheckBoxSelectionModel<ModelData>();
                  //表格列配置
                  List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
                  //表格列配置信息
                  configs.add(sm.getColumn());
                  configs.add(new ColumnConfig(IEmployee.NAME, "姓名", 100));
                  configs.add(new ColumnConfig(IEmployee.SEX, "性別", 100));
                  ColumnConfig columnConfig = new ColumnConfig(IEmployee.SALARY, "薪資", 100);
                  columnConfig.setNumberFormat(NumberFormat.getFormat("0.0"));
                  configs.add(columnConfig);
                  configs.add(new ColumnConfig(IEmployee.BIRTHPLACE, "籍貫", 100));
                  configs.add(new ColumnConfig(IEmployee.HIREDATE, "入職時間", 100));

                  //Spring MVC Controller 請求地址
                  String url = GWT.getHostPageBaseURL() + "employee/find/page.json";
                  //構建RequestBuilder
                  RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
                  //創建HttpProxy
                  HttpProxy<String> proxy = new HttpProxy<String>(builder);
                  //JsonPagingLoadResultReader
                  JsonPagingLoadResultReader<PagingLoadResult<ModelData>> reader = new JsonPagingLoadResultReader<PagingLoadResult<ModelData>>(modelType);
                  //數據加載器
                  PagingLoader<PagingLoadResult<ModelData>> loader = new BasePagingLoader<PagingLoadResult<ModelData>>(proxy, reader);
                  //數據存儲器
                  ListStore<ModelData> store = new ListStore<ModelData>(loader);
                  //分頁TOOLBAR
                  PagingToolBar pagingToolBar = new PagingToolBarExtend(Constant.PAGE_SIZE_DEFAULT);
                  pagingToolBar.bind(loader);

                  //創建表格
                  Grid<ModelData> grid = new Grid<ModelData>(store, new ColumnModel(configs));
                  //設置顯示加載標識
                  grid.setLoadMask(true);
                  //設置顯示表格邊框
                  grid.setBorders(true);
                  //設置選擇模型
                  grid.setSelectionModel(sm);
                  //設置插件, 如果不設置, 全選復選框無法點擊
                  grid.addPlugin(sm);
                  //設置寬度自動擴展的列
                  grid.setAutoExpandColumn(IEmployee.HIREDATE);
                  
                  panel.add(grid);
                  panel.setBottomComponent(pagingToolBar);
                  //加載數據
                  loader.load();
                  
                  add(panel);
                  
              }
          }

          EmployeeController

          package fan.tutorial.server.controller;

          import java.util.List;
          import javax.annotation.Resource;
          import org.springframework.stereotype.Controller;
          import org.springframework.ui.Model;
          import org.springframework.web.bind.annotation.RequestMapping;
          import fan.tutorial.client.model.Employee;
          import fan.tutorial.server.commons.JsonUtil;
          import fan.tutorial.server.service.DataService;
          import fan.tutorial.server.value.Constant;

          @Controller
          @RequestMapping("/employee")
          public class EmployeeController {
              
              @Resource
              private DataService service;
              
              @RequestMapping(value = "/find/page")
              public String findByPage(Model model, int offset, int limit){
                  List<Employee> resultList = service.findEmplyeeByPage(offset, limit);
                  int total = service.getEmplyeeCounts();
                  String[] rootNames = {Constant.RESULT, Constant.TOTAL};
                  Object[] objects = {resultList, total};
                  String result = JsonUtil.toJson(rootNames, Constant.DATE_FORMAT_PATTENR_DEFAULT, objects);
                  model.addAttribute(Constant.RESULT, result);
                  return Constant.RESULT_CODE;
              }
          }

          DataService

          package fan.tutorial.server.service;

          import java.util.ArrayList;
          import java.util.List;
          import javax.annotation.Resource;
          import org.springframework.stereotype.Service;
          import fan.tutorial.client.model.Employee;
          import fan.tutorial.server.value.Data;

          @Service
          public class DataService {
              
              @Resource
              private Data data;
              
              public List<Employee> findEmplyeeByPage(int offset, int limit){
                  List<Employee> store = data.getEmployeeList();
                  List<Employee> target = new ArrayList<Employee>();
                  for(int i = offset; i < offset + limit && i < store.size(); i++){
                      target.add(store.get(i));
                  }
                  return target;
              }
              
              public int getEmplyeeCounts(){
                  return data.getEmployeeList().size();
              }
          }





            
          posted on 2014-06-09 22:56 fancydeepin 閱讀(889) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 阿城市| 德清县| 碌曲县| 香格里拉县| 成安县| 诸城市| 当雄县| 偏关县| 伽师县| 桓台县| 山阴县| 平武县| 遵化市| 定西市| 临安市| 古交市| 淮阳县| 郴州市| 邹平县| 龙南县| 晋江市| 浑源县| 永德县| 类乌齐县| 陇西县| 巨野县| 无极县| 江华| 合肥市| 高陵县| 方山县| 岚皋县| 濉溪县| 桂平市| 昭觉县| 淮阳县| 隆德县| 军事| 通化县| 荥阳市| 汉阴县|