flash+asp.net webServices入门教程(五)

前面我们做了个从WS中获取数据填充Flash的DataGrid的例子。在实践中,很多时候,我们需要把在DataGrid中修改过的数据再一次传递回服务器,在服务器上将这些数据持久化。
在flash中,有很多的方法可以把数据传回服务器保存:LoadVars,拼接xml等等,操作的过程繁琐、不易用,还受到很多限制,使用Flash+WS的话,还是那句话,非常的方便。还是让我们用例子来说话。
1、 修改sample2.asmx.cs,增加Web方法GetArray_4,该web方法有一个参数,数组tCar。
[WebMethod(Description="接受客户端传递过量数组")]
public string GetArray_4(Car[] tCar){
string tStr="";
for (int i=0;i<tCar.Length;i++){
tStr=tStr+"; "+tCar[i].model;
}
return tStr;
}
2、 修改Flash如下:
function GetArray_4(result){
trace("ws方法GetArray_4返回的值为:");
trace("/"); 
trace(result);
}
……
this.dbBind3_bt.onPress=function(){
//trace(gb_main.dataProvider.length);
var i:Number=0;
var tCar:Array=new Array();
tCar=gb_main.dataProvider;
var op_8:PendingCall=myws.GetArray_4(tCar);
op_8.onResult=GetArray_4;
}

运行,output窗口会提示:
Error opening URL http://localhost/ws/sample2.asmx

为什么会这样呢?原因出在DataGrid组件的dataProvider上,你可以跟踪一下dataProvider提供的数组,会发现 dataProvider不知道为什么,会增加一些内容数据类型未知的object,但是毫无疑问,对象数组Car[]是可以通过Flash传递到ws 的。
下面是修改后测试通过的代码:
/* ======================================================================

C# Source File -- Created with SAPIEN Technologies Primalcode 3.0

NAME: sample2.asmx.cs

AUTHOR: JimLee , Dxl School
DATE : 2004-10-7

COMMENT: 这个例子演示了在ws接受来自客户端的数字简单类型、日期和时间简单类
型、bool类型、名称和字符串简单类型以及Array类型参数并返值。

====================================================================== */

using System;
using System.Collections;
using System.Web;
using System.Web.Services;

namespace wsLearn{
[WebService(Namespace="http://www.dxlschool.com/ws/";,Description="例2,演示ws方法的传值",Name="s2")]
public class sample2:System.Web.Services.WebService{
public sample2(){
//
}

[WebMethod]
public string GetUserName(string tName){
return "你好,"+tName;
}

[WebMethod]
public int IncAB(int A,int B){
return A+B;
}

[WebMethod]
public DateTime GetNow(){
return DateTime.Now;
}

[WebMethod]
public DateTime PassDate(DateTime dt){
return dt;
}

[WebMethod]
public bool PassBool(bool bl){
return bl;
}

[WebMethod]
public string[] GetArray_1(){
string[] strArr={"乔狗","刘鹏","陈波","张成平","费明","陈刚"};
return strArr; 
}

[WebMethod(Description="数组的调用:ArrayList")]
public ArrayList GetArray_2(){
ArrayList strArr=new ArrayList();
int i=0;
for (i=0;i<100;i++){
strArr.Add("strArr["+i+"]"); 
}
return strArr;
}

[WebMethod(Description="数组的调用,包含对象")]
public Car[] GetArray_3(){
Car HG=new Car("皇冠",2004);
Car JM=new Car("佳美",2003);
Car YK=new Car("雅阁",2004);
Car BJS=new Car("毕加索",2002);
/*ArrayList carArr=new ArrayList();
carArr.Add(HG);
carArr.Add(JM);
carArr.Add(YK);
carArr.Add(BJS);*/

Car[] carArr={HG,JM,YK,BJS};
return carArr;
}

[WebMethod(Description="接受客户端传递过量数组")]
public string GetArray_4(Car[] tCar){
string tStr="";
for (int i=0;i<tCar.Length;i++){
tStr=tStr+"; "+tCar[i].model;
}
return tStr;
}
}

[Serializable]
public class Car{
//声明字段model、yearBuilt;
public string model;
public int yearBuilt;

//定义构造器
public Car(string model,int yearBuilt){
this.model=model;
this.yearBuilt=yearBuilt;
}

public Car(){

}
}

}
/**
ActionScript Class File -- Created with SAPIEN Technologies PrimalScript 3.0

@class wsSample_2 
@package wsSample_2.as
@author JimLee
@codehint 
@example 
@tooltip 
*/

import mx.services.*;

gb_main.vScrollPolicy="off";

var myws:WebService=new WebService("http://localhost/ws/sample2.asmx?wsdl";);

function GetUserName(result){
trace("ws返回的值为:");
trace("///");
trace(result);
}

function IncAB(result){
trace("ws方法IncAB返回的值为:");
trace("///");
trace(result);
}

function GetNow(result){
trace("ws方法GetNow返回的值为:");
trace("/");
trace(result);
}

function PassDate(result){
trace("ws方法PassDate返回的值为:");
trace("/");
trace(result);
}

function PassBool(result){
trace("ws方法PassBool返回的值为:");
trace("/");
trace(result);
}

function GetArray_1(result){
trace("ws方法GetArray_1返回的值为:");
trace("/");
for (var i=0;i<result.length;i++){
trace(i+":"+result[i]);
}
}

function GetArray_3(result){
var myDB:Array=result;
gb_main.dataProvider=myDB;
trace(gb_main.dataProvider.length);
}

function GetArray_4(result){
trace("ws方法GetArray_4返回的值为:");
trace("/"); 
trace(result);
}

this.GetUN_bt.onPress=function(){ 
var op_1:PendingCall=myws.GetUserName("乔狗!!");
op_1.onResult=GetUserName;


this.incAB_bt.onPress=function(){
var a:Number=34;
var b:Number=56;
var op_2:PendingCall=myws.IncAB(a,b);
op_2.onResult=IncAB;
}

this.GetNow_bt.onPress=function(){
var op_3:PendingCall=myws.GetNow();
op_3.onResult=GetNow;
}

this.PassDT_bt.onPress=function(){
var dt:Date=new Date (77, 4, 2);
var op_4:PendingCall=myws.PassDate(dt);
op_4.onResult=PassDate;
}

this.PassBool_bt.onPress=function(){
var bl:Boolean=true;
var op_5:PendingCall=myws.PassBool(bl);
op_5.onResult=PassBool;
}

this.dbBind1_bt.onPress=function(){
var op_6:PendingCall=myws.GetArray_1();
//var op_6:PendingCall=myws.GetArray_2();
op_6.onResult=GetArray_1;
}

this.dbBind2_bt.onPress=function(){
var op_7:PendingCall=myws.GetArray_3();
op_7.onResult=GetArray_3;
}

this.dbBind3_bt.onPress=function(){
//trace(gb_main.dataProvider[1]);
trace(gb_main.dataProvider.length);
var i:Number=0;
var tCar:Array=new Array();
for (i=0;i<4;i++){
tCar.push(gb_main.dataProvider[i]);
}
//tCar=gb_main.dataProvider;
for (i=0;i<(tCar.length/2-1);i++){
trace(tCar[i].model);
}
var op_8:PendingCall=myws.GetArray_4(tCar);
op_8.onResult=GetArray_4;

转载于:https://www.cnblogs.com/cheatlove/articles/360459.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值