var s = ["a","b","c"];
Alert.show(s.join(","));
//Show Result: a,b,c
2008/04/16
Flex中替代cookit操作的方法
做登錄等類的身份驗證功能,傳統的WEB開發基本上都要使用session或是cookit。然而在Flex中並沒有提供直接操作cookit或是session的方法。經過查資料發現,Flex提供了SharedObject這個本地對象。有人把它稱為「Flash Cookie 」。還真是形象啊,呵,不管怎麼說,畢竟還是有解決辦法的。
SharedObject提供了下面的操作本地對象的方法:
SharedObject.clear() 刪除本地共享對像;
SharedObject.flush() 立即把共享對像數據寫入本地文件;
SharedObject.getLocal() 創建或連接本地共享對像;
SharedObject.getSize() 取得本地共享對象的指定大小數據。
舉個應用的小例子:
保存值:
var test:SharedObject = SharedObject.getLocal( "test" );// 創建一個本地保存數據的對象
test.data.user = "username";
test.data.psw = "password";
test.flush(); //提交保存
取值:
var test: SharedObject = SharedObject.getLocal("test");
Alert.show(test.data.user);
Alert.show(test.data.psw);
注意如果使用alert,要引入 import mx.controls.Alert類
2008/04/01
歐洲巨兔
據英國媒體報導,日前英國一隻3歲大的雌兔,憑藉1.2米的身長和22公斤的體重,成功打破世界紀錄,獲得「世界最大兔子」的桂冠。
據主人愛德華茲介紹,這隻兔子名叫「艾米」,現在體重22公斤,食量驚人。如果身體伸展開,體長達1.2米。
艾米每天的食物都要花10英鎊左右,每餐都要吃掉2個蘋果、幾個胡蘿蔔、半顆捲心菜以及幾把乾草。由於食物過多,愛德華茲不得不用狗盆給艾米當碗。而由於體型過大,艾米不得不睡在狗窩。愛德華茲說,艾米對食物很挑剔,「胡蘿蔔必須是帶綠色葉子的,乾草也必須是新鮮的、綠色的,否則她不吃。」
據悉,此前世界上最大的兔子是艾米的配偶「羅伯特」,2004年,羅伯特從後腿到前爪的長度為1.05米,體重15.9公斤,當時這個體重要比3歲的孩子還要重。艾米比羅伯特小1歲,2004年時它只有0.5米長、6公斤重。但是現在它無論是身長還是體重都超過了羅伯特,因此當之無愧成為世界上最大的兔子。艾米和羅伯特都屬於歐洲巨兔。目前兩隻兔子已經孕育出32個後代。歐洲巨兔平均體重6公斤左右,壽命可達12年。
目前,吉尼斯世界紀錄已經停止了類似巨兔的評選,以防止主人過度餵養寵物帶來的負面影響。
有圖有真相...
真相在下面...
Flex 3 Call .Net WebService (3)
Flex 3 程式碼如下
分別測試跟呼叫之下的 Web Service
程式碼如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Button x="75" y="52" label="Add a data." click="btnInsert_Clidk();" width="133"/>
<mx:Script>
<![CDATA[
import generated.webservices.GetUserInfoCount_request;
import generated.webservices.GetUserInfoCountResultEvent;
import generated.webservices.ArrayOfUserInfo;
import mx.collections.ArrayCollection;
import generated.webservices.GetUserInfoArrayResultEvent;
import generated.webservices.AddUserInfoResultEvent;
import generated.webservices.AddUserInfo_request;
import generated.webservices.TestService;
import generated.webservices.UserInfo;
import mx.controls.*;
// TestService
private var objService:TestService=new TestService();
public function btnInsert_Clidk():void
{
objService.addaddUserInfoEventListener(resultAddUserInfo);
//新增一筆資料 呼叫 WebService 中的 AddUserInfo(string name,string tel,string addr)
objService.addUserInfo("Lucifer.Loudon","0917796416","台北市內湖區");
}
//取回結果並用Alet.show方式秀出
public function resultAddUserInfo(evt:AddUserInfoResultEvent):void
{
Alert.show("Name:" + evt.result.Name +", Tel:"+ evt.result.Tel+", Addr:"+evt.result.Addr);
}
public function btnGetAllData_Click():void
{
objService.addgetUserInfoArrayEventListener(resultGetUserInfo);
//呼叫 UserInfo[] GetUserInfoArray()
objService.getUserInfoArray_send();
}
public function resultGetUserInfo(evt:GetUserInfoArrayResultEvent):void
{
var list:ArrayCollection = evt.result as ArrayCollection ;
dg.dataProvider=list;
}
public function btnGetArrayCount_Click():void
{
var list:ArrayOfUserInfo=new ArrayOfUserInfo();
for(var i:int=1;i<=20;i++)
{
var tmp:UserInfo=new UserInfo();
tmp.Name="Name"+i.toString();
tmp.Tel="TEL"+i.toString();
tmp.Addr="Addr"+i.toString();
list.addItem(tmp);
}
//呼叫 GetUserInfoCount(UserInfo[] userInfos) 並傳入 UserInfo[20]
objService.addgetUserInfoCountEventListener(resultGetArrayCount);
objService.getUserInfoCount(list);
}
public function resultGetArrayCount(evt:GetUserInfoCountResultEvent):void
{
Alert.show(String(evt.result));
}
]]>
</mx:Script>
<mx:Button x="75" y="106" label="Get AllDataInfo" width="133" id="btnGetAllData" click="btnGetAllData_Click()"/>
<mx:DataGrid x="75" y="179" width="399" height="258" id="dg">
<mx:columns>
<mx:DataGridColumn headerText="Name" dataField="Name"/>
<mx:DataGridColumn headerText="Tel" dataField="Tel"/>
<mx:DataGridColumn headerText="Addr" dataField="Addr"/>
</mx:columns>
</mx:DataGrid>
<mx:Button x="242" y="52" label="Get Array Count" width="138" id="btnGetArrayCount" click="btnGetArrayCount_Click()"/>
</mx:Application>
Flex 3 Call .Net WebService (2)
1. 開啟Flex 3 並新增專案 命名為 FlexCallWebServiceSample
2. Import 自己寫的WebService 也是 Flex 3 新增號稱強大的功能
選擇 Data - > Import WebService (WSDL)
3. 會出現此畫面 就選擇你要放的地方 我是採用預設所以直接按下Next
4.請在框1地方輸入WebService 位置 記得後面加上?wsdl不然一定不會成功
之後按下框2的Next
5.
接下來就是Mega(台語),框1地方請將預設的Service1Soap12 改成 Service1Soap根據官方網站的論壇是說目前現在如果選擇Soap12會出現問題,沒錯,我之前就是卡關卡在這邊,天殺的害我試了好久,記的這邊部要傻傻的就給他用預設的,框2部分果真可以看到他抓到我寫的4隻Web Service,框3部分可以自行命名在Felx中你要用啥名稱稱呼這隻Service他預設
他預設Package: generated.webservices ,Main Class: Service1
我只有改變其Main Class 為 TestService ,之後就可以大膽按下框4
6.之後應該是會看到這樣的結構..
Flex 3 Call .Net WebService (1)
首先我們得先建立WebService ..
開啟VS.Net ...
並且建立一個 Class 為
public class UserInfo
{
public string Name{get;set;} //姓名
public string Tel{get;set;} // 電話
public string Addr{get;set;} //地址
}
並建立下述的WebService 以提供測試
我直接原程式碼Po上...
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
namespace TestFlexWebService
{
/// <summary>
///Service1 的摘要描述
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
// 若要允許使用 ASP.NET AJAX 從指令碼呼叫此 Web 服務,請取消註解下一行。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService
{
/// <summary>
/// 一個暫存的ArrayList 提供 GetUserInfoArray() 所使用
/// </summary>
public static ArrayList PubList = new ArrayList();
/// <summary>
/// 新增一個UserInfo 至 PubList 中 並且回傳回去
/// </summary>
/// <param name="name">UserInfo的Name</param>
/// <param name="tel">UserInfo的Tel</param>
/// <param name="addr">UserInfo的Addr</param>
/// <returns>回傳回去一個UserInfo的物件</returns>
[WebMethod]
public UserInfo AddUserInfo(string name,string tel,string addr)
{
UserInfo res = new UserInfo();
res.Name = name;
res.Tel = tel;
res.Addr = addr;
PubList.Add(res);
return res;
}
/// <summary>
/// 將PubList 此UserInfo Array 傳出去
/// </summary>
/// <returns>UserInfo Array</returns>
[WebMethod]
public UserInfo[] GetUserInfoArray()
{
return (UserInfo[])PubList.ToArray(typeof(UserInfo));
}
/// <summary>
/// 傳入一UserInfo Array 並回傳裡面有多少個UserInfo
/// 已測試是否.Net 此端是否可以接到到Flex傳入的UserInfo Array.
/// </summary>
/// <param name="userInfos">UserInfo Array</param>
/// <returns>Length of UserInfoArray.</returns>
[WebMethod]
public int GetUserInfoCount(UserInfo[] userInfos)
{
return userInfos.Length;
}
}
}
之後就完成了.Net WebService 這一端..
接下來就是Flex3 那邊的部份了....
Flex 3 Call .Net WebService (0)
本文將介紹 Flex 3 如何去Call .Net WebService
基本上他多了很多自動化的功能(跟Flex2)比起來真的是舒服多了...
這文章有使用到的工具為 VS.net 2008 and Adobe Flex 3
有三項測試項目..
1. Flex 3 如何傳入自訂的 Class給 WebService 且 這自訂的Class為.Net WebService 所定義的
2. Flex 3 從.Net WebService 取得自訂的 Class Array 並且把他Bind 到 DataGrid 中
3. Flex 3 傳入一自訂的Class Array至 .Net WebService 中 並且回傳此Array的內容
接下來幾篇文章中都會提到一些方法....
LINQ基本操作
Insert
Customer newCust = new Customer();
newCust.CompanyName = "AdventureWorks Cafe";
newCust.CustomerID = "ADVCA";
db.Customers.InsertOnSubmit(newCust);
Update
var existingCust =
(from c in db.Customers
where c.CustomerID == "ALFKI"
select c)
.First();
existingCust.ContactName = "New Contact";
Delete
Order ord0 = existingCust.Orders[0];
OrderDetail detail0 = ord0.OrderDetails[0];
db.OrderDetails.DeleteOnSubmit(detail0);
Submit Changes Item
db.SubmitChanges();