星期三, 5月 28, 2008

jQuery fade anything plugin

推薦一個很有fu的jquery特效..

jQuery fade anything plugin

http://plugins.jquery.com/project/fade

Online Demo:
http://rongjunxue.viminta.com/demo/fade/fadedemo.html

Method:
In this release,you can fade anything with “vkfade()” method:
$(”#output1〃).vkfade(); //with no parameter,default color vaue is #ff8000.
or
$(”#output1〃).vkfade(”eee000〃); //with the RGB optional parameter

可以把它放在滑鼠移過去就會改變底色..或是一些menu的選單..
滑鼠移過去效果會像flash感覺一樣漸淡漸消失..有fu..Open-mouthed..推薦..

ps:
用這plug-in要注意阿..他的js是去抓id產生出來效果..所以element記得要有id阿..不然死給你看..
為了這"問題"..花我好多時間才抓出來...一﹏一||...

星期一, 5月 26, 2008

對class撰寫event

有時我們在處理class時..要撰寫物件的event..來讓其他的物件訂閱..
寫下簡單的範例.. 以後需要時自己也不會忘掉..

使用內建的delegate(EventHandler)去做
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//建立測試按鈕事件
private void button1_Click(object sender, EventArgs e)
{
ukhs obj = new ukhs();

//加入訂閱事件
obj.myEvent += new EventHandler(obj_myEvent);

//測試
obj.goFire();
}

void obj_myEvent(object sender, EventArgs e)
{
if (e is myEvenArg)
{
MessageBox.Show((e as myEvenArg).msg);
}
}
}
}

//自行寫的class
class ukhs
{
//使用內建的delegate,他需要傳遞(object sender,eventArgs e)
public event EventHandler myEvent;
public void goFire()
{
if (myEvent != null)
{
myEvent(this, new myEvenArg("發射飛彈!!"));
}
}
}

//繼承EventArgs
class myEvenArg : EventArgs
{
public string msg { get; private set; }
public myEvenArg(string msg)
{
this.msg = msg;
}
}

也可以自行定義delegate去做
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//建立測試按鈕事件
private void button1_Click(object sender, EventArgs e)
{
ukhs obj = new ukhs();

//加入訂閱事件
obj.newEvent += new ukhs.myEvent(obj_newEvent);

//測試
obj.goFire();
}

string obj_newEvent(string msg)
{
MessageBox.Show(msg);
return "我已經完成任務了";
}
}
}

//自行寫的class
class ukhs
{
//宣到一個delegate
public delegate string myEvent(string msg);
public event myEvent newEvent;
public void goFire()
{
//判斷是否有人訂閱
if (newEvent != null)
{
//執行delegate
string getMsg = newEvent("發射飛彈!!");
MessageBox.Show(getMsg);
}
}
}

有問題在一起討論ㄅ..

星期五, 5月 23, 2008

簡單的實做Generic Collection Sorting

再使用Generic Collection常常會有需要用到sort這功能..有兩種方法可以達到你的目的..
1.在型別上實做Icomparable介面
2.可以建立IComparer比較器

我就直接用List<>去作1這方式..簡單直覺..不過功能沒有IComparer強悍啦..直接看原始碼..

class person : IComparable<person>
{
public int height;
public string name;

#region IComparable<person> Members

public int CompareTo(person other)
{
return this.height.CompareTo(other.height);
}

#endregion
}

上面是建立一個person的class..然後實做IComparer..
a.CompareTo(b)這是a大傳回1,a小傳回-1,相等傳回0..

//建立比較的List<>
List<person> p = new List<person> {
new person() { name = "a1", height = 155 } ,
new person() { name = "a2", height = 172 } ,
new person() { name = "a3", height = 190 } ,
new person() { name = "a4", height = 182 } ,
new person() { name = "a5", height = 197 } ,
new person() { name = "a6", height = 161 }
};

//排序
p.Sort();

//迴圈去跑結果
string str = string.Empty;
foreach (person dd in p)
{
str += dd.name + " " + dd.height.ToString() + "\n";
}

MessageBox.Show(str);

執行..就可以看出結果了..

ddddfsdafa

如果你想由大排序到小..你就在return this.height.CompareTo(other.height) * -1這樣就行了..
如果你要用IComparer去作..你可以參考瓶水相逢大大的範例..

星期四, 5月 22, 2008

(不爽文)自由選688專案..

話說這個年代..沒有手機..跟沒穿衣服好像差不多..沒有啥安全感..哈..所以大家應該都有一隻手機放在身上..自然手機上也都綁有各家手機的門號..

說到手機費率這東西..我現在是用網內一族401而我女朋友之前是用那貴鬆鬆的網內一族901..會用那901的原因就是因為裡面有『最愛專線』..這也可以跟我講到天荒地老海枯石爛..可以講電話沒有負擔..想講啥就講啥想喇賽就喇賽..所以當初就選了這個方案..

最近在電視上看到台灣大哥大的廣告..他說啥分時段可以去省一些電話錢..而我跟我女朋友好像也都是在晚上6..7點以後才有比較常講電話..所已就去把電話費改成自由選688專案..心想可以省了2百多塊..可以拿去吃一頓吃到飽的..也還不錯(一人份的..Disappointed)..

這個月我女朋友收到帳單..馬低..1400多..是怎樣..怎麼這麼貴..還比之前901貴..查了一下..網內部份收費是500多..機車..網內的部份沒折扣是怎樣..心想..不會被陰了ㄅ..網內沒折扣..Disappointed..上了他們費率的相關網頁..

dfs

按..網頁怎麼作那麼爛..我用ie7..跟firefox3.0看都是這鳥樣..機車..是要讓大家看不清楚規定條文再說啥ㄇ..達到欺騙消費者的目的ㄇ..他老師ㄟ..直接用原始碼給他抓出條文好了..看到這一項..

3. 688 資費月租費可抵項目包含撥打他網行動及市話之通話費,不含影像電話及其他費用。

這句是啥意思..包含他網行動電話..那包不包含自己網內的ㄋ..寫不清不楚..我女朋友直接打電話去問..問為啥網內的沒有抵..客服回答是..因為已經給你們8小時來講網內了..所以網內的不能抵..Wilted Rose..這是啥屁話..之前我們再辦這688時你跟我們說可以抵通話費..你啥小都沒有跟我們說..現在來搞這招網頁也寫的不清不楚..超級不爽啦..晚上我要親自打去問候台灣大哥大..如過回答不爽..我要去消基會檢舉你這惡劣的廠商..不然也要去X週刊給他刊"劣劣劣劣"...

星期五, 5月 16, 2008

(轉貼)只剩下一種球路還可以很殺的男人

真的寫的很好阿..Rolling on the floor..

------轉貼----- ------轉貼----- ------轉貼----- ------轉貼----- ------轉貼----- ------轉貼-----

http://blog.xuite.net/derekhsu/derekhsu/12432821

王建民今天的狀況如何?

老實講,如果以去年的狀況來說,如果用Bad、Poor、Average、Good、Excellent這五種狀況來說的的話,大概比Good差一點。

可是如果把今年對上大都會那場的比賽當作完全發揮到Excellent的王建民,今天的表現大概只有在Poor的程度。

為什麼要特別提到去年的王建民?因為今天比賽的王建民,就是去年我們大家最常看到的王建民,而且A-rod所說那種他習慣的、典型的王建民。

大量的伸卡球,很多的滾地球,還有上壘之後就會隨之出現的Double Play,那才是A-rod所認識的王建民。

王建民的比賽大概有幾種典型的狀況:

  1. 伸卡球幅度投不出來,滑球在很勉強的狀態能投但投不進好球帶,其他球路完全沒有:運氣好的狀況下能撐到五局到六局,不過隨之而來會有大量的長打跟高飛球。
  2. 伸卡球幅度有限,滑球可以投進好球帶邊邊,變速球投不進好球帶但偶爾一顆可以有吊球的效果:有三~五次的三振,但GO/AO大概在一點多。運氣好一點在掉兩、三分的狀況下可以達到QS。
  3. 伸卡球狀況佳控球好,滑球可以掌握拿來配球,變速球配球可以但失投球不少,不能多用:這大概是王建民今年稱得上是Good的狀況,K可以投到5次以上,打者沒有辦法有效擊出連續長打,GO/AO比可以達到2的水準,QS毫無困難,有辦法在掉一兩分的狀況下投到7局以上。
  4. 伸卡球狀況100%,滑球非常具有引誘性,變速球可以投進好球帶,但偶而會失投:對上水手那一場大概就是接近這樣的狀況,但變速球狀況差些,拿出對著人投的伸卡球毫無困難,所有的球幾乎都不會高起來,變速球也可以很殺,但變速球失投比率還是稍嫌高一些,這樣的王建民不但可以穩定的用K拿下出局數,在王建民手下拿分非常困難,如果用球數少一點,甚至還可以完封。接近Excellent狀況。
  5. 伸卡球狀況100%,滑球好壞球控制自如,變速球失投極少,叉指球可以拿出來配球:伸卡球最快可以達到96 mile還有很變態的變化幅度,拿來對著人身上打都會進好球帶,滑球、變速球想投就投,根本不用考慮失投問題,變速球可以在維持84mile底下的狀況投進好球帶,兩好球之後就是對打者的屠殺。完全的Excellect狀況。
  6. 最後一種,也就是今天看到的這種,伸卡球有控球有幅度,但球速跟變化量都未達完美,大概只有7、8成,其他球路完全投不出來,不是大壞球就是紅中:所有能投進好球帶的球全部都是伸卡球,能夠在壓低失分的狀況下,投完7局的責任局數,大量的滾地球跟DP,三振不會超過5個。

第六種狀況,是去年最常見的王建民。也是去年能夠拿下19勝的王建民大多數情況下的狀況,而今天的狀況甚至比第六種狀況描述的狀況還要差上一些,在中間一度沒辦法把球投進好球帶,而且有不少的伸卡球都投高了,變速球和滑球不是挖第瓜就是Wild Pitch,搞到Posada到了比賽中後半段完全放棄其他球路,只用一種。

Sinker。

王建民今天變成了一個跟 Wakefield一樣的投手,差別的地方在於老蝴蝶只投一種蝴蝶球,王建民只投一種伸卡球,而且很不可思議的,洋基、雙城隊的球員,教練,甚至是現場觀眾,以及全世界在關注這場比賽的觀眾,都知道王建民接下來全部都會投Sinker,也知道打這種球出去的話會變成DP,但還是避免不了被DP的命運。

當一顆蝴蝶球投過來的時候,打者不知道它會怎樣飛、捕手不知道它會怎樣飛,甚至連投手都不知道它會怎樣飛,所以,很難打好。

王建民的伸卡球投過來的時候,打者知道它會怎樣飛,捕手也知道它會怎樣飛,投手也知道,全世界都知道,但是,還是很難打好。

當然,只投一種球路需要一點運氣才能不讓被打出去的球穿出去變成安打,但是對方卻更希望有更多的運氣在一壘有人的時候不要再打內野滾地球變成雙殺,要連續打出三支安打,其實需要更多的運氣。

今天的王建民是只有一種球路的王建民,不過,夠殺了。


------轉貼----- ------轉貼----- ------轉貼----- ------轉貼----- ------轉貼----- ------轉貼-----


星期四, 5月 15, 2008

Firefox 3 RC 1 出了..

Firefox 3 RC 1出了ㄟ..哈哈哈..不再是beta版了..

eb4i_killbillsbrowser

kill..kill..kill......^_____^||..

其實ie7沒有想像中這麼難用..只是firefox套件真的很方便..然後我又習慣了..所以..firefox王道..王道..

firefox 3.0的優點..看這裡..
http://mozlinks-zh.blogspot.com/2007/11/firefox-3_25.html

下載:
Windows安裝版:
http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2008-05-12-08-firefox3.0rc1-l10n/firefox-3.0.zh-TW.win32.installer.exe
Windows免安裝版:
http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2008-05-12-08-firefox3.0rc1-l10n/firefox-3.0.zh-TW.win32.zip

如果因為套件有問題而不去用低話..可以裝下面這套件..他可以"硬裝"上去..大多可以用..^^||..
Nightly Tester Tools

try..try..Big Grin..

星期三, 5月 14, 2008

在gridview的edit模式下動態動態塞入值

很多時候都用的到..例如常常都會要編輯的時候..才會知道gridview編輯模式裡的值..例如validation..droplist等等..所以我就簡單的寫了這個gridview+droplist的範例..裡面的事件方法也常用到..參考一下ㄅ..

123

aspx

<form id="form1" runat="server">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand="SELECT [EmployeeID], [LastName], [FirstName], [Title] FROM [Employees]">
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID"
DataSourceID="SqlDataSource1" OnRowDataBound="GridView1_RowDataBound">
<Columns>
<asp:TemplateField HeaderText="EmployeeID" InsertVisible="False" SortExpression="EmployeeID">
<EditItemTemplate>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>"
SelectCommand="SELECT [OrderID], [ShipName] FROM [Orders] WHERE ([EmployeeID] = @EmployeeID)">
<SelectParameters>
<asp:Parameter Name="EmployeeID" Type="Int32" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2"
DataTextField="ShipName" DataValueField="OrderID">
</asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Bind("EmployeeID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="LastName" HeaderText="LastName" ReadOnly="True" SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName" ReadOnly="True" SortExpression="FirstName" />
<asp:BoundField DataField="Title" HeaderText="Title" ReadOnly="True" SortExpression="Title" />
<asp:TemplateField>
<EditItemTemplate>
update
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>

cs

public partial class test_dataSource : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
//只對datarows作用
if (e.Row.RowType == DataControlRowType.DataRow)
{
//判斷是否是編輯欄..因為gridview還有分單雙所以要多加Alternamte
if (e.Row.RowState == DataControlRowState.Edit ||
e.Row.RowState == (DataControlRowState.Edit | DataControlRowState.Alternate))
{
//把sqldatasource餵值
string id = GridView1.DataKeys[e.Row.RowIndex][0].ToString();
((SqlDataSource)e.Row.FindControl("SqlDataSource2")).
SelectParameters["EmployeeID"].DefaultValue = id;
}
}
}
}

重點就是..那偶數跟單數的判斷方式..因為有時忘了..程式寫出來..真的會ox..^^..

參考:

星期五, 5月 09, 2008

當anonymous type碰上class

話說..linq這技術已經跑了一陣子了,我還沒有跟上這好用的新技術(是人家說的),這好像給它真的有點遜,所以就著手把手上自己的class去把一些關於資料庫的部份由ado轉成linq去跑,不過也是至這樣,一開始"馬上"就遇上問題(阿不是說"馬上就"好..騙人)..

一般我們寫class常常都會用到return,不管是傳回string int array datatable等等這些行型態的物件,想當然爾這些class改過後當然還是會傳回來"某"些東西,這是問題就大啦,聽我徐徐道來,首先就是Anonymous Type這東東,先看原始碼

public class test1
{
public var getObj()
{
linqToSqlDataContext db = new linqToSqlDataContext();
var tb = from a in db.Product
select a;
return tb;
}
}

上面原始碼一定會過不去,因為AnonymousType只能用在"區域"不能隨便亂跑,您可以參考這裡
http://msdn.microsoft.com/en-us/library/bb384061.aspx
所以當然要解決問題,解決的方法還蠻多種的,我就拿我這例子在直接繼續下去

public class test1
{
public IQueryable<Product> getObj()
{
linqToSqlDataContext db = new linqToSqlDataContext();
IQueryable<Product> tb = from a in Products
select a;
return tb;
}
}

感謝天阿,可以用了ㄟ,一切都是這麼自然這麼簡單..爽..
不過台語俗諺說得好:搖擺沒有落魄得久,攏是相遇得到的,我馬上就給它遇到..一﹏一||..
馬上看這例子..

var tb = from a in Products
select new
{
a.ProductName,
a.UnitPrice,
a.UnitsInStock
};

這裡因為我們用new的方法去改變原本的結構,所以傳回來會Anonymous Type,所以所以呢..要準備投降ㄇ,當然沒有,goolge永遠是我們最好的老師,查了一下網路上也是有人遇到相同的問題..

方法1
public class test1
{
public IQueryable getObj()
{
linqToSqlDataContext db = new linqToSqlDataContext();
var tb = from a in Products
select new
{
a.ProductName,
a.UnitPrice,
a.UnitsInStock
};
return tb.AsQueryable();
}
}

這方法是用AsQueryable()去把它轉型成IQueryable然後就可以傳來給它傳去,不過缺點是轉了以後很多事情都不能做,就像Kobe Bryant不會切入拉杆Steve Nash不會傳球助一樣,一整個很冏..

456

所以如果你傳回去後沒有要在做啥事情,例如直接bind()這類的話,用這就行啦..

方法2
public class test1
{
public IQueryable<newTb> getObj()
{
linqToSqlDataContext db = new linqToSqlDataContext();
IQueryable<newTb> tb = from a in Products
select new newTb
{
ProductName = a.ProductName,
UnitPrice = a.UnitPrice,
UnitsInStock = a.UnitsInStock
};
return tb;
}
}
public class newTb
{
public string ProductName { get; set; }
public decimal? UnitPrice { get; set; }
public short? UnitsInStock { get; set; }
}

我們多建立一組class然後去滿足它輸出的格式,這種作法就像O/R Designer幫我們做class一樣的道理,所以才有很方便的intellisense..

789

不過也是有缺點的,因為很麻煩,要自己再去建立class,對於我這懶人如果欄位一多,我看我還是去睡覺算了,真是俗語說的"有一好沒兩好"..冏..

方法3
這是一個想法,如果我能把回傳值變成datatable那是不是可以用linq to AOD.NET這些方法去處理,這是個好想法(老王賣瓜自賣自誇..哈哈),馬上就想到CopyToDataTable()東東,不過看到msdn裡的定義,心又涼了一半

public static DataTable CopyToDataTable<T>(
this IEnumerable<T> source
) where T : DataRow

哇勒..機車鬼只能用在datarow裡,那這裡不就啥鬼都不能用了..冏..
話說"山窮水盡疑無路柳暗花明又一村",我又找到我的"村"啦,msdn線上有解決方案,它又擴充了CopyToDataTable()的方法,不在只有datarow可以用其他的型別也照吃,只要照他的方法把擴充的class放到專案中就行了,class在這邊http://msdn.microsoft.com/en-us/library/bb669096.aspx自行下載服用,不過這extension還有一個問題就是遇上nullable types就會死,所以改掉這一段就行了..

if (!_ordinalMap.ContainsKey(p.Name))
{
// Add the property as a column in the table if it doesn't exist
// already.
DataColumn dc = table.Columns.Contains(p.Name) ? table.Columns[p.Name]
: table.Columns.Add(p.Name, p.PropertyType);

// Add the property to the ordinal map.
_ordinalMap.Add(p.Name, dc.Ordinal);
}

換成..

if (!_ordinalMap.ContainsKey(p.Name))
{
Type colType = p.PropertyType;
if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
{
colType = colType.GetGenericArguments()[0];
}

DataColumn dc = table.Columns.Contains(p.Name) ? table.Columns[p.Name]
: table.Columns.Add(p.Name, colType);
_ordinalMap.Add(p.Name, dc.Ordinal);
}

所以這樣大致就解決我們遇到的問題..看原始碼ㄅ..

public class test1
{
public DataTable getObj()
{
linqToSqlDataContext db = new linqToSqlDataContext();
var tb = from a in db.Products
select new
{
a.ProductName,
a.UnitPrice,
a.UnitsInStock
};
return tb.CopyToDataTable();
}
}

輸出引用

DataTable aa = new test1().getObj();
foreach (DataRow a in aa.Rows)
{
Response.Write(a.Field<string>("ProductName"));
Response.Write(a.Field<decimal?>("UnitPrice").Value);
Response.Write(a.Field<short?>("UnitsInStock").Value);
}

呼呼~繞了一圈轉了一圈,終於得到了我們想要的結果,上面的三種方法任君挑選,喜歡用哪個就用哪個,以彈性來說當然首推第二種跟第三種,沒有哪一種方法比較好,就"順手"就好,framework 3.5提供了Anonymous Type這個很方便的東西,不過帶來的後遺症就是你根本不知道現在型別是啥ㄇ,然後傻傻的用遇到問題就傻住愣住不知道該怎麼辦,微軟想給你方便你也別隨便給它用下去,用下去之前最好知道在幹啥麼這樣以後遇到問題還好解決

ps:呼呼~終於寫完..好累喔..

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2825401&SiteID=1

星期三, 5月 07, 2008

error creating control - 3.5 extensions preview

今天開了asp.net 3.5 extensions preview的website來測試一些東西..
發現了一個問題..當我把.net framework 3.5才提供的control拖進design view..
vs2008就給我顯示錯誤..有圖有真相..(這張圖貼的真醜..一﹏一||..)

tttt1

看到這畫面就很ox是怎樣..不給用喔..二話不說..轉去source view看..多了一條..

<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI.WebControls" TagPrefix="asp" %>

一看就感覺怪怪的..幹麼給我多加一條..這不是自訂control或是ajax control toolkit才會出現的東西..難道3.5 extensions的webconfig沒有幫我設定好..要我自己去加ㄇ..上網找了一下答案..發現..原來web.config裡的很多東西都變成3.6了..3.5的東東跟3.6是不同的..所以3.5提供的control都死翹翹..要自己去處理這東東..

解決方案1
<%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Namespace="System.Web.UI.WebControls" TagPrefix="asp1" %>
在source view裡改成這樣就可以解決了..TagPrefix這東西不要宣告成asp..你可以隨便宣告成別的..我這是用asp1..

解決方案2
<add tagPrefix="asp1" namespace="System.Web.UI.WebControls"
assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
在web.config加上面這條..加在<system.web><pages><controls>這裡</system.web></pages></controls>

這樣就可以"放心"的用了..^^..

參考:
http://forums.asp.net/p/1193840/2275516.aspx

星期二, 5月 06, 2008

WebService 使用多載

今天有需要..用到這功能..改下面這兩個部份..就行了..^^..

[WebMethod(MessageName = "msg")]

[WebServiceBinding(ConformsTo = WsiProfiles.None)]

看原始碼..

using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

/// <summary>
/// Summary description for WebService
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{
public WebService()
{

//Uncomment the following line if using designed components
//InitializeComponent();
}

//建立兩個webmethod
[WebMethod(MessageName = "oInt")]
public int getInt()
{
return 10;
}
[WebMethod(MessageName = "nInt")]
public int getInt(int aa)
{
return 10 + aa;
}
}


星期五, 5月 02, 2008

網頁上計時..時間到了..執行server端程式

在討論去看到的問題..就把簡單範例寫出來..參考一下ㄅ..

.aspx 放span來顯示剩餘時間..linkbutton是來呼叫server端程式用的

<body>
<form id="form1" runat="server">
<div>
<span id="num">剩餘時間:</span>
<br />
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"></asp:LinkButton>
</div>
</form>
</body>

.cs 這裡就把要註冊到頁面上的js丟上去ㄅ..

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text;

public partial class test_jsDoSomething : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
StringBuilder sb = new StringBuilder();

//這裡是你從資料庫會其他地方所抓出來的時間
sb.AppendLine("var ttime = 70; ");

//主程式
sb.AppendLine("var secs = 0; ");
sb.AppendLine("var hour= 0; ");
sb.AppendLine("var min = 0; ");
sb.AppendLine("var t = false; ");
sb.AppendLine(" ");
sb.AppendLine("close_myself(); ");
sb.AppendLine("var id = setInterval('close_myself()',1000); ");
sb.AppendLine(" ");
sb.AppendLine("function close_myself() ");
sb.AppendLine("{ ");
sb.AppendLine(" if(ttime != '') ");
sb.AppendLine(" { ");
sb.AppendLine(" if(!t) ");
sb.AppendLine(" { ");
sb.AppendLine(" secs = ttime; ");
sb.AppendLine(" secs--; ");
sb.AppendLine(" document.getElementById('num').innerHTML = GetTime(secs); ");
sb.AppendLine(" t = true; ");
sb.AppendLine(" } ");
sb.AppendLine(" else ");
sb.AppendLine(" { ");
sb.AppendLine(" secs--; ");
sb.AppendLine(" document.getElementById('num').innerHTML = GetTime(secs); ");
sb.AppendLine(" } ");
sb.AppendLine(" if(secs<=0) ");
sb.AppendLine(" { ");
sb.AppendLine(" clearTimeout(id); ");
sb.AppendLine(" ");

//__doPostBack('LinkButton1','')這是去呼叫server端的LinkButton1_Click的程式
sb.AppendLine(" __doPostBack('LinkButton1','') ");

sb.AppendLine(" } ");
sb.AppendLine(" } ");
sb.AppendLine("} ");
sb.AppendLine("function GetTime(sec) ");
sb.AppendLine("{ ");
sb.AppendLine(" hour = Math.floor(sec / 3600); ");
sb.AppendLine(" min = Math.floor(sec / 60); ");
sb.AppendLine(" if(sec >= 60) ");
sb.AppendLine(" { ");
sb.AppendLine(" min= Math.floor(sec/60); ");
sb.AppendLine(" sec= sec % 60; ");
sb.AppendLine(" } ");
sb.AppendLine(" if(min>=60) ");
sb.AppendLine(" { ");
sb.AppendLine(" hour= Math.floor(min/60); ");
sb.AppendLine(" min = min % 60; ");
sb.AppendLine(" } ");
sb.AppendLine(" return '剩餘時間:' + hour+ ':' +min +':'+sec; ");
sb.AppendLine("} ");

ClientScript.RegisterStartupScript(GetType(), "test", sb.ToString(), true);
}
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
//就是把js在丟出來
ClientScript.RegisterStartupScript(GetType(), "123", "alert('我執行啦我執行啦!!')", true);
}
}

完成..Open-mouthed..

敵人是自己而不是別人

-----------轉貼-------------------------------------轉貼---------------------------------------------------

在未接觸美國著名人道學家 – L.羅恩. 賀伯特 先生的著作前,曾多次從書本中看到或從電影中聽到:「我們最大的敵人其實是自己。」。這句話似乎頗有道理,但從沒有仔細思考或探討這其中的真偽。

你不妨跟我一樣,抽個空,試著靜下心來想想:是否有討厭過自己的經驗?又是否曾經懷疑過自己的能力?或者究竟誰有能力成為你最大的敵人呢?

會是公司的壞老板或是你的壞員工?還是討厭的鄰居?恐怖份子?在高速公路上不友善的駕駛人?

事實上,他們之中沒有一個是。你最大的潛在敵人就是你自己。
因為,沒有一個人像你一樣能夠毀了你的生活;沒有一個人像你一樣可以有效率地將你的事業給毀掉;沒有一個人像你一樣能夠毀掉你的婚姻。
所以,當你挑剔自己或討厭自己時,你就成為自己最糟糕的敵人了。

在L.羅恩. 賀伯特 先生所著作的自我分析一書中寫到:
「你最有可能忽略掉的朋友就是你自己。然而每一個人要能夠成為這個世界真正的朋友之前,首先必須要成為他自己的朋友。」

當你對自己有一個崇高的想法時,你就不會那麼恐懼,你會產生自信,你便能有所進展。
做為你自己的好朋友,就該停止懷疑自己,並且去喜歡自己,進而期待自己將會成功。

當遇到艱困時,你可以依賴自己;當全世界似乎都反對你時,你至少擁有一個支持者,就是你自己;甚至當你的身體停止運作時,你仍然擁有你自己這個忠誠的朋友陪著你。
成為你自己真正的朋友,首先設定一個目標,即是成為你自己『最好』的朋友。
將這個目標放在你的心中,然後去改變一些做法。例如,你是否因為過去做錯了某事而狠狠地踹了自己一腳?請停止這麼做!因為在那時後你所做的,是當下你認為正確的事。所以不要責備自己,並且原諒自己,下定決心不再重蹈覆輒,然後繼續前進。
假若你挑剔自己,或許這是某人讓你相信這些挑剔是真的。但,請不要再去同意這個人的說法。因為這對你不會有任何幫助。
最後要公平地對待自己,關於你所對於自己的挑剔想法,改用正面的思維來加以平衡,試試看,偶而以讚美的方式來鼓勵自己吧!

當然也要對自己仁慈,可以選個小禮物送給自己,或者拍拍自己的背讓自己感受貼心的呵護。

反之,假若你不喜歡自己,你可能不會擁有很多朋友,那麼,你要如何期望別人來喜歡你呢?
然而,當你很快地成為你自己真正的朋友時,你將會發現擁有許多友誼,以及你會發現要成為這個世界的真正朋友是一件容易的事情。

祝願各位嘗試學習與自己成為最好的朋友,改變以往與自己為敵的習性。共勉之~

http://www.atlaspost.com/landmark-212835-bbs-2.htm

-----------轉貼-------------------------------------轉貼---------------------------------------------------

看完篇文章..也許真的覺得老生常談..可是說真的..能真正做到的又有幾個..
人總是懶惰的..人總是散漫的..放縱自己嚴以待人..這就是人性..

 

記住..敵人是自己而不是別人..Chatterbox

星期四, 5月 01, 2008

no pok..no pok..

這很好笑..

這是一段餐廳主人跟新加坡人的對話..

餐廳主人是印度人..不吃豬肉..no pok..no pok..

客人怎樣都要點有關豬肉的..主人快瘋了..超好笑的..直接看ㄅ.......

 

結論..這兩個新加坡人很機車..哈哈哈..