全部文章 | 论坛文集

作者: qzc1998   发表日期: 2007-05-22 16:56   复制链接




<?xml version="1.0" encoding="utf-8"?>
<mx:Application initialize="oninit()" xmlns:mx="http://www.adobe.com/2006/mxml" fontFamily="宋体" fontSize="12" xmlns:ns2="*">
<mx:HTTPService id="hscom" url="getcomlist.jsp?co_no="
     result="hsResult(event)" showBusyCursor="true" resultFormat="xml">
</mx:HTTPService>
<mx:Script>
     <![CDATA[
       import mx.controls.Alert;
    import flash.events.Event;    
    import mx.rpc.events.*;        
           private var itemsXML:XMLList;
    //private var items:Array = new Array();
   
           System.useCodePage=true;
    private function oninit():void
    {
         hscom.send();
         pagebar1.setPageSize(2);          
    }
    private function hsResult(event:ResultEvent):void{      
         // hscom.resultFormat="text"            
                 itemsXML=XMLList(XML(event.result.valueOf()).children());                                                
                 //var opt:XML;
        //for (var k:int=0;k<itemsXML.length();k++) {
             //opt=XML(itemsXML[k].toXMLString());
          // items.push({cid:opt.children()[0].toString(),cname:opt.children()[1].toString()
          //      ,pname:opt.children()[2].toString(),phone:opt.children()[3].toString()
          //      ,pmail:opt.children()[4].toString(),addr:opt.children()[5].toString()});
           //}
        //pagebar1.RecordCount =items.length;  
        pagebar1.RecordCount =6;//itemsXML.length();  
        pagebar1.Open();        
    }
    private function pagechange(e:PageChangeEvent):void
    {
        //datalist.dataProvider = e.Filter(items);
        datalist.dataProvider = e.FilterXml(itemsXML);        
    }
     
  ]]>
</mx:Script>
       
    <mx:DataGrid width="100%" height="198" id="datalist">
           <mx:columns>
           <mx:Array>
           <mx:DataGridColumn dataField="cid" headerText="编号"/>
           <mx:DataGridColumn dataField="cname" headerText="公司名"/>
           <mx:DataGridColumn dataField="pname" headerText="联系人"/>
           <mx:DataGridColumn dataField="phone" headerText="电话"/>
           <mx:DataGridColumn dataField="pmail" headerText="Email"/>
           <mx:DataGridColumn dataField="addr" headerText="企业地址"/>
           </mx:Array>
           </mx:columns>
           </mx:DataGrid>
  <ns2:PageBar id="pagebar1" PageChange="pagechange(event)">
    </ns2:PageBar>
</mx:Application>
-------------------------------
PageBar.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="466" height="40">
<mx:Metadata>
  [Event(name="PageChange", type="PageChangeEvent",bubbles="true",cancelable="true")]
</mx:Metadata>
  <mx:Button click="method_le()" id="c_le" enabled="false" x="10" y="10" label="《-"/>
  <mx:Button click="method_l()" id="c_l" enabled="false" x="56" y="10" label="《"/>
  <mx:ComboBox rowCount="10" change="method_select()" id="c_select" enabled="false" x="102" y="10" width="54"></mx:ComboBox>
  <mx:Button click="method_r()" id="c_r" enabled="false" x="162" y="10" label="》"/>
  <mx:Button click="method_re()" id="c_re" enabled="false" x="206" y="10" label="-》"/>
  <mx:Script>
     <![CDATA[
       import mx.controls.Alert;
             
    private var mRecordCount:int=0;
    private var mPageSize:int =10;
    private var mPageIndex:int =0;
    private var mPageCount:int = 0;            
           
           public function setPageSize(k:int):void
    {
        mPageSize=k;
        if(mRecordCount>0)
        OnPageChange();
    }
    public function method_l():void
    {
        mPageIndex=mPageIndex-1;
        SetState();
        OnPageChange();
    }

      public function method_le():void
      {
        mPageIndex =0;
        SetState();
        OnPageChange();
      }

      public function method_r():void
      {
        mPageIndex=mPageIndex+1;
        SetState();
        OnPageChange();
      }

      public function method_re():void
      {
        mPageIndex=mPageCount-1;
        SetState();
        OnPageChange();
      }

      public function method_select():void
      {
        mPageIndex = c_select.selectedItem.data;
        SetState();
        OnPageChange();
      }

      public function get PageIndex():int
      {
        return mPageIndex;
      }
//设置记录总数
      public function set RecordCount(count:int):void
      {
            mRecordCount= count;
        if(count >0)
        {
          SetState();
        }
      }

      private function SetState():void
      {
        if(mRecordCount%mPageSize > 0)
        {
          mPageCount = mRecordCount/mPageSize+1;
        }
        else
        {
          mPageCount = mRecordCount/mPageSize;
        }

        var pages:Array = new Array();
        for(var i:int =1;i<=mPageCount;i++)
        {
             pages.push( {label:i.toString(), data:i-1});
        }              

        c_select.dataProvider= pages;
        c_select.selectedIndex= mPageIndex;
        if(mPageCount>1)
        {
          c_select.enabled=true;
          c_l.enabled=true;
          c_le.enabled=true;
          c_r.enabled=true;
          c_re.enabled=true;
          if(mPageIndex==0)
          {
               c_l.enabled=false;
            c_le.enabled=false;
          }
          if(mPageIndex == mPageCount-1)
          {
            c_r.enabled=false;
            c_re.enabled=false;
          }
        }
        else
        {
          c_select.enabled=false;
          c_l.enabled=false;
          c_le.enabled=false;
          c_r.enabled=false;
          c_re.enabled=false;
        }
        pageinfo.text="总记录:" + mRecordCount+" / 总页数" + mPageCount;
    }
    //获取记录总数
    public function get RecordCount():int
    {
        return mRecordCount;
    }

    //打开分页控件
    public function Open():void{
        mPageIndex =0;
        OnPageChange();
    }
    //刷新当前页面
    public function Refresh():void
    {
        OnPageChange();
    }
    private function OnPageChange():void
    {
        var e:PageChangeEvent = new PageChangeEvent(mPageIndex,mPageSize);
        dispatchEvent(e);
       }
  ]]>
  </mx:Script>
     <mx:Label x="277" y="10" width="175" id="pageinfo"/>
</mx:Canvas>
--------------------------
PageChangeEvent.as
// ActionScript file
package
{
     import mx.controls.Alert;
     import flash.events.Event;
  import mx.events.IndexChangedEvent;    

  public class PageChangeEvent extends flash.events.Event
     {
           public function PageChangeEvent(pageindex:int,pagesize:int)
    {
         super("PageChange");
        PageIndex= pageindex;
        PageSize =pagesize;
    }
    public var PageIndex:int=0;
    public var PageSize:int=0;
    public function Filter(list:Array):Array
    {
         var newlist:Array = new Array();
        var start:int = PageSize*PageIndex;
        var end:int = start+PageSize;
        for(var i:int = start;i<end;i++)
        {
             if(i< list.length)
          {
               newlist.push(list);
          }
          else
            break;
        }
        return newlist;
    }
    public function FilterXml(list:XMLList):XMLList
    {          
        var start:int = PageSize*PageIndex;
        var end:int = start+PageSize;
        var str:String="<root>";      
        for(var i:int = start;i<end;i++)
        {
             if(i<list.length())
          {                
               str=str+"\n";
               str=str+list.toXMLString();                
          }
          else
            break;
        }  
        str=str+"</root>";        
        var newlist:XMLList=XMLList(XML(str).children());
        return newlist;
    }
     }
}

---------------
getcomlist.jsp
<%
out.println("<?xml version=\"1.0\" encoding=\"utf-8\" ?><coms>");
out.println("<com><cid>1</cid><cname>gongsi1</cname><pname>ren1</pname>");       out.println("<phone>6312</phone><pmail>qwcy@126.com</pmail><addr>henan</addr></com>");
out.println("</coms>");
%>

----------------
后记:
xml(str)这个函数的转化,字符串必须要有根节点,否则报错
HTTPService 如果采用<mx:HTTPService ...>
<mx:request>
<co_no>1</co_no>
</mx:request>
</mx:HTTPService>形式,co_no参数为空会报错


爱国有理,抗日无罪。支持国产,我愿为先





 
    文章评论 共0条回复