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年。
  
  目前,吉尼斯世界紀錄已經停止了類似巨兔的評選,以防止主人過度餵養寵物帶來的負面影響。


有圖有真相...


真相在下面...



(哇靠...比較起來我的熊熊其實食量也還好...爸爸一直錯怪你了..)





(看起來真的是報大的..比較起來熊熊苗條多了...)




(好想熊熊... T.T )



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不然一定不會成功

之後按下框2Next



5.

接下來就是Mega(台語),框1地方請將預設的Service1Soap12 改成 Service1Soap根據官方網站的論壇是說目前現在如果選擇Soap12會出現問題,沒錯,我之前就是卡關卡在這邊,天殺的害我試了好久,記的這邊部要傻傻的就給他用預設的,框2部分果真可以看到他抓到我寫的4Web Service,框3部分可以自行命名在Felx中你要用啥名稱稱呼這隻Service他預設

他預設Package: generated.webservices Main Class: Service1

我只有改變其Main Class TestService ,之後就可以大膽按下框4

Finish.


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();