FlashBuilder4+FlourinFx+VS2005 增删改查小试

  在前面文章中演示了如何配置(http://www.cnblogs.com/tzy080112/archive/2010/10/26/Flex.html),现就这样的方式配置来实现flex前台和.NET服务器端常见的增删改查通讯。

1、创建数据库

 

代码

CREATE   TABLE   [ dbo ] . [ Employees ]  (
    
[ ID ]   [ int ]   IDENTITY  ( 1 1 NOT   NULL  ,
    
[ Code ]   [ varchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  ,
    
[ Name ]   [ varchar ]  ( 50 ) COLLATE Chinese_PRC_CI_AS  NULL  
ON   [ PRIMARY ]
GO

 

2、创建RemoteObject数据通讯组建,并声明对应的多个方法。

 

代码
         < s:RemoteObject  id ="Service"  destination ="fluorine"  source ="ServiceLibrary.Sample"  fault ="Service_faultHandler(event)" >
            
< s:method  name ="Echo"  result ="onResult(event)" >
            
</ s:method >
            
< s:method  name ="GetCustomers"  result ="onCustomerResult(event)" >
            
</ s:method >
            
< s:method  name ="InsertData"  result ="onInsertDataResult(event)" >
            
</ s:method >         
            
< s:method  name ="InsertCustomer"  result ="onInsertCustomerResult(event)" >
            
</ s:method >             
            
< s:method  name ="DelData"  result ="onDelDataResult(event)" >
            
</ s:method >         
            
< s:method  name ="UpdateCustomer"  result ="onUpdateCustomerResult(event)" >
            
</ s:method >                 
        
</ s:RemoteObject >
    

 

 

2、获取数据

 在flex中创建获取数据按钮以及一个datagrid,如下

 

代码
         < s:Button  x ="298"  y ="117"  label ="获取记录"  click ="button1_clickHandler(event)" />
        
< mx:DataGrid  id ="gridview"  x ="33"  y ="162"  width ="366" >
            
< mx:columns >
                
< mx:DataGridColumn  headerText ="ID"  dataField ="ID" />
                
< mx:DataGridColumn  headerText ="Code"  dataField ="Code" />
                
< mx:DataGridColumn  headerText ="Name"  dataField ="Name" />
            
</ mx:columns >
        
</ mx:DataGrid >
        

 

  获取记录按钮添加时间,调用获取数据方法GetCustomers,并成功之后将数据集绑定到datagrid,如下:

 

代码
//调用方法            
protected function button1_clickHandler(event:MouseEvent):void
{
    // TODO Auto-generated method stub
    Service.GetCustomers();
}

//成功绑定
private function onCustomerResult(evt:ResultEvent):void
{
    var aa:ArrayCollection;
    aa=evt.result as ArrayCollection;
    this.edRetValue.text=aa.length.toString();
    this.gridview.dataProvider=aa;
}

 

 .NET部分获取数据代码如下:

 

代码
// DataTableType类型转换,flex端口与直接使用数据集
        [DataTableType( " ServiceLibrary.Sample.GetEchoTable " )]
        
public  DataTable GetCustomers()
        {
            
string  ConnStr  =   " Persist Security Info=False;database=Practice;server=192.168.0.66;user=sa;Pwd=tysoft1234;Connect Timeout=300 " ;
            SqlConnection SQLConn 
=   new  SqlConnection(ConnStr);
            
string  SelectStr  =   " SELECT * FROM Employees " ;
            SqlDataAdapter da 
=   new  SqlDataAdapter(SelectStr,SQLConn);
            DataSet ds 
=   new  DataSet();
            da.Fill(ds);
            DataTable dt 
=  ds.Tables[ 0 ];
            
return  dt;
        }

 

 

2、新添数据

  创建一个Form,加入输入框以及按钮进行数据的添加,如下:

 

代码
         < mx:Form  x ="33"  y ="348"  width ="366"  height ="198" >
            
< mx:FormItem  label ="Code" >
                
< s:TextInput  id ="edCode"   />
            
</ mx:FormItem >
            
< mx:FormItem  label ="Name" >
                
< s:TextInput  id ="edName"   />
            
</ mx:FormItem >
            
< mx:FormItem  label ="参数" >
                
< s:Button  label ="添加"  click ="button2_clickHandler(event)" />
            
</ mx:FormItem >
            
< mx:FormItem  label ="对象" >
                
< s:Button  label ="添加"  click ="button3_clickHandler(event)" />
            
</ mx:FormItem >
        
</ mx:Form >

 

  button2 是通过参数的方式进行添加数据,将Code,Name作为字符串传递到服务器端进行数据插入,button3则采用对象的方式进行数据传递,对象方式的应用中大型应用中的体现更广泛。添加事件函数,调用插入数据方法,如下:

 

代码
protected function button2_clickHandler(event:MouseEvent):void
{
    Service.InsertData(edCode.text,edName.text);
}

private function onInsertDataResult(evt:ResultEvent):void
{
    //insert successfull
    Alert.show(evt.result.toString());
    Service.GetCustomers();//插入成功,重新绑定
}

 

  如果采用传递对象的方式进行数据添加,需要先在flex项目中声明一个和服务端对应的actionscript类,如下:

 

代码
package VO
{
    //此句不能少,用于对应服务端对象,将对象进行序列化
    //规则: 命名空间.类名
    [RemoteClass(alias="ServiceLibrary.Customers")]

    public class Customers
    {
        public var ID:int;
        public var Code:String;
        public var Name:String;
    }
}

 

  服务端类如下:

namespace  ServiceLibrary
{
    
public   class  Customers
    {
        
public   int  ID;
        
public   string  Code;
        
public   string  Name;
    }
}

 

  服务端函数代码,请参见附件,大体相同没有多大改变。

 

3、修改数据

  修改数据相对简单,与添加数据类似,在此增加一个功能,当选择datagrid中的记录的时候,输入框自动填充对应的字段值。如下:

 

代码
             < mx:FormItem  label ="Code" >
                
< s:TextInput  id ="edCode"   text ="{gridview.selectedItem.Code}" />
            
</ mx:FormItem >
            
< mx:FormItem  label ="Name" >
                
< s:TextInput  id ="edName"  text ="{gridview.selectedItem.Name}" />
            
</ mx:FormItem >

 

  具体实现代码如下:

 

代码
            protected  function  button5_clickHandler(event:MouseEvent):void
            {
                
var  Customer:Customers = new Customers();
          
// 获取主键
                Customer.ID
= gridview.selectedItem.ID  as   int ;
                Customer.Code
= edCode. text ;
                Customer.Name
= edName. text ;
                
                Service.UpdateCustomer(Customer);
            }

 

 

 

4、删除数据

  删除数据只需要传入主键ID删除数据即可,如下  

   protected function button4_clickHandler(event:MouseEvent):void
   {
    // TODO Auto-generated method stub
    Service.DelData(gridview.selectedItem.ID as int);
   }

 

 

  到此简单演示已经完毕,其中容易忽视的就是传递对象时候需要对应的问题,其他方面和平常应用无多大异同。

  界面:FlashBuilder4+FlourinFx+VS2005 增删改查小试_第1张图片

  附件 增删改查小试.rar

 

 

你可能感兴趣的:(builder)