<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:afc="com.aflag.afcTree.*"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:components="com.aflag.components.*"
xmlns:cti="http://www.a-flag.com/cti"
xmlns:presentation="com.aflag.presentation.*"
width="100%" height="100%" creationComplete="init(event)">
<fx:Declarations>
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.aflag.components.AFCDate;
import com.aflag.components.serverError;
import com.aflag.events.ComponentEvent;
import com.aflag.misc.RenderFactory;
import com.aflag.services.api.ISalesDeliveryReminderService;
import com.aflag.services.impl.SalesDeliveryReminderService;
import com.aflag.utils.Tool;

import flash.utils.Timer;
import flash.utils.getDefinitionByName;

import mx.collections.IList;
import mx.collections.XMLListCollection;
import mx.controls.Alert;
import mx.core.ClassFactory;
import mx.core.FlexGlobals;
import mx.core.IVisualElement;
import mx.events.FlexEvent;
import mx.formatters.DateFormatter;
import mx.managers.PopUpManager;

import spark.events.TextOperationEvent;

import org.as3commons.async.command.impl.GenericOperationCommand;
import org.as3commons.async.operation.event.OperationEvent;
import org.as3commons.collections.Map;
import org.as3commons.lang.DateUtils;

[Bindable]
public var codeItemEditor:ClassFactory;
private var pageInstance:ViewBase;
private var _timer:Timer;
private var inbound:String;
private var _hasOpen:Boolean=false;
public var currentBusinessType:String;
private var _incomingBarTimer:Timer;
[Bindable]
private var _dataProvider:IList;
private const _incomingBarTotal:int=180;
private var service:ISalesDeliveryReminderService=new SalesDeliveryReminderService();
public var scheduleMap:Map=new Map();
private var _serviceSite:XML;
[Bindable]
private var _queryString:String;

protected function searchByType(type:String):void{
var currentDate:String = AFCDate.parseCurrentCalendar(new Date()) ;
var endDateString:String = currentDate;
if(type=="week"){
endDateString = AFCDate.parseCurrentCalendar(DateUtils..addWeeks(new Date() , 1));
}else if(type == "month"){
endDateString = AFCDate.parseCurrentCalendar(DateUtils..addMonths(new Date() , 1));
}

startDate.value=currentDate;
endDate.value=endDateString;
query();
}

protected function query():void {
if(!startDate.value){ Alert.show("开始日期不能为空"); return; }
if(!endDate.value){ Alert.show("结束日期不能为空"); return; }

var scheduleQueryWarp:XML=new XML("<scheduleQueryWarp/>");
scheduleQueryWarp.queryString = _queryString;
scheduleQueryWarp.@startDate=startDate.value.toString();
scheduleQueryWarp.@endDate=endDate.value.toString();
if(_requery || _index > _resultCount){
_index = 0;
nowPage.text = "1";
}
if(_index > 0) _index++;
scheduleQueryWarp.@startPosition = _index ;
scheduleQueryWarp.@maxResults = _pageSize;

var _cmd:GenericOperationCommand = service.findSalesDeliveryReminder(scheduleQueryWarp);
_cmd.addCompleteListener(function (event:OperationEvent):void{
var _result:XML =new XML(event.result);
_dataProvider = new XMLListCollection(_result.result.entity);

_requery = false;
_resultCount = int(_result.@resultCount);
_pageCount = _resultCount / int(_pageSize);
if(_resultCount % int(_pageSize) > 0) _pageCount++;

preImg.enabled = true;
firstImg.enabled = true;
nextImg.enabled = true;
lastImg.enabled = true;

//重置分页按钮可用状态
if(int(_pageSize) >= _resultCount){
preImg.enabled = false;
firstImg.enabled = false;
nextImg.enabled = false;
lastImg.enabled = false;
}else if(int(nowPage.text) >= _pageCount){
nextImg.enabled = false;
lastImg.enabled = false;
}else if(int(nowPage.text) <= 1){
preImg.enabled = false;
firstImg.enabled = false;
}
});
_cmd.addErrorListener(function (e:OperationEvent):void{
serverError("加载发货信息失败","系统消息",e);
});
_cmd.execute();
}

//序号
public function documentDGNum(item:Object, column:GridColumn):String{

return ((documentDG.dataProvider.getItemIndex(item) + 1+_index).toString());
}

protected function init(event:FlexEvent):void {
var currentDate:Date=new Date();
startDate.value=AFCDate.parseCurrentCalendar(currentDate);
currentDate.setDate(currentDate.date+6);
endDate.value=AFCDate.parseCurrentCalendar(currentDate);

startDate.addEventListener(ComponentEvent.VALUE_CHANGE,onStartDateChanged);
endDate.addEventListener(ComponentEvent.VALUE_CHANGE,onEndDateChanged);
}

protected function documentDGDoubleClick(event:MouseEvent):void {
if(!documentDG.selectedItem){ return; }
var selectedId:Number=Number(documentDG.selectedItem.@id);
popInfo(selectedId);
}
public function popInfo(selectedId:Number):void{
var menu:XML=FlexGlobals.topLevelApplication.getElementAt(0).getMenu("SALES_DELIVERY_HEAD");
var menuName:String=menu.@name.toString();

if(menu!=null){
popBizTag(menu.@clientClass, "SALES_DELIVERY_HEAD" ,menuName,selectedId);
}else{
Alert.show("加载失败:没有权限或者参数配置出错!");
}
}

public var page:IVisualElement;

private function popBizTag(fullName:String, bizCode:String,modelName:String,onLoadId:Number=0):void{
var pt:Point = new Point(0, 0);
const POPUP_OFFSET:int = 10;

if(!page){
var WIN:Class = getDefinitionByName(fullName) as Class;
page = new WIN() as IVisualElement;
}
if(page){
page["bizCode"] = bizCode;
var pageWindow:ScheduleInformationEachWindow=new ScheduleInformationEachWindow();
pageWindow.pageInstance=page as ViewBase;
page.percentWidth=100;
page.percentHeight=100;
pageWindow.onLoadId=onLoadId;
PopUpManager.addPopUp(pageWindow, FlexGlobals.topLevelApplication as DisplayObject, false);
PopUpManager.centerPopUp(pageWindow);
}
}

protected function onStartDateChanged(event:ComponentEvent):void {
_requery = true;
if(Tool.emptyString(event.currentTarget.value)){ return ;}
var starDay:Date = DateFormatter.parseDateString(event.currentTarget.value);
endDate.value = AFCDate.parseCurrentCalendar(DateUtils.addMonths(starDay,3));
}

protected function onEndDateChanged(event:ComponentEvent):void {
_requery = true;
if(Tool.emptyString(event.currentTarget.value)){ return ;}
var endDay:Date = DateFormatter.parseDateString(event.currentTarget.value);
startDate.value = AFCDate.parseCurrentCalendar(DateUtils.addMonths(endDay,-3));
}

/**是否重置查询 -- 如果查询条件发生改变则重置 -- 查询开始位置为0*/
private var _requery:Boolean = true;

/** 当前下标 */
[Bindable] protected var _index:int = 0;
/**记录总数**/
[Bindable] protected var _resultCount:int = 0;
/**页数**/
[Bindable] protected var _pageCount:int = 0;

[Bindable] protected var _pageSize:String = "25";

/**跳至首页**/
private function onFirstBtnClick(event:MouseEvent):void{
_index = 0;
nowPage.text = "1";
query();
}
/**上一页**/
private function onPreBtnClick(event:MouseEvent):void{
_index = _index - int(_pageSize) -1;
if(_index < 0) _index = 0;
nowPage.text = Tool.trimString(int(nowPage.text) - 1);
query();
}
/**跳至指定页**/
private function onNowPageEnter(event:Event):void{
_index = (int(nowPage.text) - 1) * int(_pageSize) - 1;
if(_index < 0) _index = 0;
query();
}
/**下一页**/
private function onNextBtnClick(event:MouseEvent):void{
nowPage.text = Tool.trimString(int(nowPage.text) + 1);
_index = (int(nowPage.text) - 1) * int(_pageSize) - 1;
if(_index < 0) _index = 0;
query();
}
/**末页**/
private function onLastBtnClick(event:MouseEvent):void{
nowPage.text = Tool.trimString(_resultCount / int(_pageSize));
if(_resultCount % int(_pageSize) > 0) nowPage.text = Tool.trimString(int(nowPage.text) + 1);
_index = (int(nowPage.text) - 1) * int(_pageSize) - 1;
if(_index < 0) _index = 0;
query();
}

protected function onQueryStringChanged(event:TextOperationEvent):void
{
_requery = true;
}

]]>
</fx:Script>

<s:states>
<s:State name="normal"/>
<s:State name="open"/>
<s:State name="disabled"/>
</s:states>

<!--适用于第三方支付公司-->

<s:layout>
<s:VerticalLayout>

</s:VerticalLayout>
</s:layout>
<!--抬头-->
<mx:HDividedBox id="header" width="100%" height="100%">

<s:SkinnableContainer id="documentButtonContainer" width="220" height="100%"
mouseDownOutside="currentState='normal'"
skinClass="com.aflag.skins.frame.DefaultFrameSkin">
<s:layout>
<s:VerticalLayout gap="4" paddingBottom="2" paddingLeft="2" paddingRight="2"
paddingTop="4"/>
</s:layout>
<s:HGroup width="100%" height="24" gap="10" verticalAlign="justify">
<s:Label width="60" height="100%" text="开始时间" verticalAlign="middle"/>
<components:AFCDate id="startDate" width="100%" height="100%" datePattern="showDate"/>
</s:HGroup>
<s:HGroup width="100%" height="24" verticalAlign="justify">
<s:Label width="60" height="100%" text="结束时间" verticalAlign="middle"/>
<components:AFCDate id="endDate" width="100%" height="100%" datePattern="showDate"/>
</s:HGroup>
<s:HGroup width="100%" height="24" verticalAlign="justify">
<s:Label width="60" height="24" text="过滤" verticalAlign="middle"/>
<s:TextInput width="100%" change="onQueryStringChanged(event)" text="@{_queryString}"/>
</s:HGroup>

<s:HGroup width="100%" height="24" gap="11" verticalAlign="justify">
<s:Button width="40" height="20" label="今天" click="searchByType('today')"/>
<s:Button width="40" height="20" label="一周" click="searchByType('week')"/>
<s:Button width="40" height="20" label="一月" click="searchByType('month')"/>
<s:Button width="40" height="20" label="查询" click="query()"/>

</s:HGroup>

</s:SkinnableContainer>
<!--历史-->
<!--单击该Tab时刷新对应的内容表单-->
<s:SkinnableContainer id="history1" width="100%" height="100%"
skinClass="com.aflag.skins.frame.DefaultFrameSkin">
<s:layout>
<s:VerticalLayout gap="0"/>
</s:layout>
<s:TabBar width="100%" height="24" dataProvider="{historyViewStack1}"
skinClass="com.aflag.skins.tabBar.AFCTabBarSkin"/>
<mx:ViewStack id="historyViewStack1" width="100%" height="100%"
borderSkin="com.aflag.skins.standard.AFCViewStackBorderSkin"
creationPolicy="all">

<s:NavigatorContent width="100%" height="100%" label="列表视图">
<s:layout>
<s:VerticalLayout gap="5"/>
</s:layout>
<s:DataGrid id="documentDG" width="100%" height="100%"
dataProvider="{_dataProvider}"
doubleClick="documentDGDoubleClick(event)" doubleClickEnabled="true"
editable="false" horizontalScrollPolicy="auto">
<s:columns>
<s:ArrayList>
<s:GridColumn width="40" editable="false" headerText="序号"
labelFunction="documentDGNum"/>

<s:GridColumn dataField="code" headerText="编码"/>

<s:GridColumn dataField="opWarehouse" headerText="发货仓库"
labelFunction="{RenderFactory.finderLabelFunction}"/>

<s:GridColumn dataField="confirmed" headerText="是否发货"
labelFunction="{RenderFactory.booleanFunction}"/>

<s:GridColumn dataField="requiredDate" headerText="要求发货时间"/>

<s:GridColumn dataField="priority" headerText="优先级"
labelFunction="{RenderFactory.finderLabelFunction}"/>

<s:GridColumn dataField="customer" headerText="售达方"
labelFunction="{RenderFactory.finderLabelFunction}"/>

<s:GridColumn dataField="receiver" headerText="送达方"
labelFunction="{RenderFactory.finderLabelFunction}"/>

<s:GridColumn dataField="receiverContact" headerText="送达方联系人"
labelFunction="{RenderFactory.finderLabelFunction}"/>

<s:GridColumn dataField="remark" headerText="备注"/>
</s:ArrayList>
</s:columns>
</s:DataGrid>

<s:HGroup width="100%" height="24" gap="12" horizontalAlign="center"
verticalAlign="justify">
<s:Label text="{'共查询到 '+_resultCount+ ' 行数据,分 '+_pageCount+' 页,每页显示'}"
textAlign="center" verticalAlign="middle"/>
<s:TextInput width="40" height="100%" enter="onNowPageEnter(event)"
restrict="0-9\-" text="@{_pageSize}" textAlign="center"/>
<s:Label text="行" textAlign="center" verticalAlign="middle"/>
<s:Button id="firstImg" click="onFirstBtnClick(event)"
skinClass="com.aflag.skins.arrow2.AFCFirstArrow2Skin" toolTip="首页"/>
<s:Button id="preImg" click="onPreBtnClick(event)"
skinClass="com.aflag.skins.arrow2.AFCPreviousArrow2Skin"
toolTip="上一页"/>
<s:TextInput id="nowPage" width="100" enter="onNowPageEnter(event)"
restrict="0-9\-" textAlign="center"/>
<s:Button id="nextImg" click="onNextBtnClick(event)"
skinClass="com.aflag.skins.arrow2.AFCNextArrow2Skin" toolTip="下一页"/>
<s:Button id="lastImg" click="onLastBtnClick(event)"
skinClass="com.aflag.skins.arrow2.AFCLastArrow2Skin" toolTip="末页"/>

</s:HGroup>
</s:NavigatorContent>
</mx:ViewStack>
</s:SkinnableContainer>
</mx:HDividedBox>
</s:Group>

-----

interface SalesDeliveryReminderRepositoryCustom {

QueryPagination<SalesDeliveryHead> findSalesDeliveryReminder(ScheduleQueryWarp wrap);
}

class SalesDeliveryReminderRepositoryImpl implements SalesDeliveryReminderRepositoryCustom {

@Autowired
private QueryUtils queryUtils;

@SuppressWarnings("unchecked")
@Override
public QueryPagination<SalesDeliveryHead> findSalesDeliveryReminder(ScheduleQueryWarp wrap) {

StringBuffer hql = new StringBuffer("SELECT obj FROM ");
hql.append(SalesDeliveryHead.class.getCanonicalName()).append(" obj ");
hql.append(" LEFT JOIN FETCH obj.customer customer ");
hql.append(" LEFT JOIN FETCH obj.opWarehouse opWarehouse ");
hql.append(" LEFT JOIN FETCH obj.receiver receiver ");
hql.append(" LEFT JOIN FETCH obj.carrier carrier");
hql.append(" LEFT JOIN FETCH obj.receiverContact receiverContact ");
hql.append(" LEFT JOIN FETCH obj.priority priority");

StringBuffer str = new StringBuffer(" WHERE obj.requiredDate between ? and ? ");

List<Object> params = new ArrayList<Object>();
Date startDate = wrap.getStartDate();
Date endDate = wrap.getEndDate();

params.add(startDate);
params.add(endDate);

if (!StringUtils.isEmpty(wrap.getQueryString())) {
str.append(" AND (obj.code LIKE ? OR obj.name LIKE ? )");
params.add("%" + wrap.getQueryString() + "%");
params.add("%" + wrap.getQueryString() + "%");
}
StringBuffer countHql = new StringBuffer("SELECT COUNT(obj.id) FROM ");
countHql.append(SalesDeliveryHead.class.getCanonicalName()).append(" obj ");

hql.append(str);
countHql.append(str);

hql.append(" ORDER BY obj.requiredDate ");
return (QueryPagination<SalesDeliveryHead>) queryUtils.limiteQuery(countHql.toString(), hql.toString(),
wrap.getStartPosition(), wrap.getMaxResults(), params);
}

-----

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class ScheduleQueryWarp {

private String queryString;

@XmlAttribute
private Long employeeId;

@XmlAttribute
@XmlJavaTypeAdapter(value = DateAdapter.class)
private Date startDate;

@XmlAttribute
@XmlJavaTypeAdapter(value = DateAdapter.class)
private Date endDate;

@XmlAttribute
private int startPosition;

@XmlAttribute
private int maxResults = 25;

public Long getEmployeeId() {

return employeeId;
}

public void setEmployeeId(Long employeeId) {

this.employeeId = employeeId;
}

public Date getStartDate() {

return startDate;
}

public void setStartDate(Date startDate) {

this.startDate = startDate;
}

public Date getEndDate() {

return endDate;
}

public void setEndDate(Date endDate) {

this.endDate = endDate;
}

public String getQueryString() {

return queryString;
}

public void setQueryString(String queryString) {

this.queryString = queryString;
}

public int getStartPosition() {

return startPosition;
}

public void setStartPosition(int startPosition) {

this.startPosition = startPosition;
}

public int getMaxResults() {

return maxResults;
}

public void setMaxResults(int maxResults) {

this.maxResults = maxResults;
}
}

flex 分页的更多相关文章

  1. flex 分页打印表格功能

    private function printHandler():void{ var printJob:FlexPrintJob = new FlexPrintJob(); printJob.print ...

  2. Flex相关案例及资源搜集

    Flex一些例子: http://blog.minidx.com/ 上千个Flex例子,对于学习者来说是一个庞大的资源宝库. http://fleksray.org/Flex_skin.html ht ...

  3. Flex 加载tiff

    gis系统常常要加载tiff,因为好多土地证书,各种文件都是扫描件,如果你是用as来写的前台,怎么加载呢,顺便说下用插件AlternaTIFF也是可以得不过浏览器加载这么多插件是不太好的. 首先TIF ...

  4. ArcGIS Flex API加载大量数据

    1.关于大量数据的加载: 直接将所要展示的数据在服务器端发布成一个MapService,在客户端通过ArcGISDynamicMapServiceLayer来加载.这样的话客户端需要展示的仅仅是一张图 ...

  5. Flex4 自定义分页组件

    自己写的Flex4分页组件,去伪存真,只实现基本的分页功能,数据过滤神马的都不应该是分页组件干的活,有呆毛才有真相: [源代码下载] Flex自从转手给Apache后人气急跌,本人也很捉鸡,尽管Apa ...

  6. Asp.Net MVC结合ExtJs gridPanel 分页和高度自适应

    Ext.onReady(function () { gridPanel(); var panel = Ext.getCmp('gridPanel'); window.onresize = functi ...

  7. Ext4.1 Grid 分页查询

    转载:http://blog.csdn.net/zyujie/article/details/16362747 最近用Ext4.1自己做了做项目的练习:把一些知识点,在这里记录下来了! 上面一个for ...

  8. [Ext JS 4] Grid 实战之分页功能

    前言 分页功能的实现有两种途径: 一种是服务端分页方式, 也就是web客户端传递页码参数给服务端,服务端根据页面参数返回指定条数的数据.也就是要多少取多少.这种方式比较适合Grid  的数据量很大,需 ...

  9. HTML5动态分页效果代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

随机推荐

  1. chrome 设置是否缓存

    在进行本地开发时,因老需要修改js,css等文件,而页面又带有缓存因此无法自动更新为新的文件. 在页面点击 -> F12 ->F1 ->References -> NetWor ...

  2. mysql闯关练习

    1.表关系                 班级表:class       学生表:student       cid caption grade_id   sid sname gender clas ...

  3. ubuntu 16.04 install wine

    from: https://wiki.winehq.org/Ubuntu If your system is 64 bit, enable 32 bit architecture (if you ha ...

  4. 【转载】Apache Jena TDB CRUD operations

    Apache Jena TDB CRUD operations June 11, 2015 by maltesander http://tutorial-academy.com/apache-jena ...

  5. hibernate hql limit的实现方式

    query.setFirstResult(startIndex);//开始索引query.setMaxResults(maxSize);//取几条 如 limit 1,5HQL:query.setFi ...

  6. js中函数传参的情况

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. scikit Flow ,tensor flow 做ml模型

    [https://github.com/ilblackdragon/tf_examples/blob/master/titanic.py] [keras 高层tensorflow] https://k ...

  8. 首届阿里巴巴在线技术峰会,9位大V演讲整理!

    https://yq.aliyun.com/articles/57826 感谢参加阿里巴巴在线技术峰会.7月19日的3场专家分享:Blink.Docker.电商互动:7月20日的云数据库十大经典案 例 ...

  9. Linux就业技术指导(一):简历撰写及面试筹备要领

    一,开场 二,模型 三,目标选材 3.1 什么是目标选材 简单说就是确定一个候选人是否符合某一个工作岗位要求的整个流程.这是对招聘方的一个培训,应聘方如果掌握了,就知道应该怎样正确的去应聘工作. 3. ...

  10. List<?>和List<T>的区别

    是java泛型的两种用法:List<T>是泛型方法,List<?>是限制通配符 List<T>一般有两种用途:1.定义一个通用的泛型方法.伪代码: public i ...