<?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. Spring 3.2 事件驱动模型

    事件 @SuppressWarnings("serial") public class CheckEvent extends ApplicationEvent { public C ...

  2. ABAP-增强-MRP运行-根据工厂/父件/子件/供应商拆分采购申请

    最近有个业务需要,MRP运行过程中需要根据生产计划订单/子件/供应商对应关系来拆解采购申请. 1.具体实例: a.基础数据 整车物料:NL1G58420151001219 子件:00000000888 ...

  3. Java中的默认构造函数

    java中如果在一个类中没有写明任何构造函数的,那么会存在一个无参的构造函数,如下: public class Children { private String name; private Stri ...

  4. How to Pronounce SAY, SAYS, and SAID

    How to Pronounce SAY, SAYS, and SAID Share Tweet Share Tagged With: Comparison I’ve noticed many non ...

  5. js原生实现 无缝滚动图片

    <!-- 无缝滚动图片开始 --> <div id=demopic style="OVERFLOW: hidden; WIDTH: 100%; COLOR: #fff; H ...

  6. CentOS7系列搭建Openvpn

    环境:CentOS Linux release 7.3.1611 (Core) 查看os版本命令:[root@openvpn ~]# cat /etc/redhat-release 命令记录如下: y ...

  7. maven tomcat7 远程热部署

    在maven项目开发中,一般推荐使用jetty进行开发调试.但是在项目发布的时候要求使用tomcat7作为发布服务器,为此在maven中配置了tomcat7插件,以支持项目在外部tomcat7进行远程 ...

  8. 在Windows下远程连接CentOS6

    远程连接linux服务器的方式:以显示的类型来分类,可以分为字符界面和图形界面两种.字符界面软件有SecureCRT.PUTTY等:图形界面有Xmanager.Xdmcp和VNC软件等.

  9. oracle存储过程-获取错误信息

    dbms_output.put_line('code:' || sqlcode); dbms_output.put_line('errm:' || sqlerrm); dbms_output.put_ ...

  10. 反射, getClass(), 和something.class以及类型类(转)

    原文地址:http://www.cnblogs.com/lianghui66/archive/2012/12/03/2799134.html 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统 ...