星期三, 7月 19, 2006

ResetPassword

Asp.net 2.0是內建了給使用者使用的changepassword和passwordrecovery,但是如果使用者沒改密碼,也忘了密碼提示,要怎麼辦呢?沒錯,微軟是設計了resetPassword,但是這個函式要提供密碼提示的答案,使用者如果記得就自己設就好了,這個函式似乎一點用都沒有。
其實不然,翻看ASP.net的論壇,微軟的開發者提出了一種技巧:Providers。另外設一組requiresQuestionAndAnswer="false" 的provider,就可以輕易達到這個功能。
作法如下
1.改machine.config,xp在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG。加上新的一組provider,我的設定如下:
2. 新增個按紐,在onclick時寫下下面的東西,然後設個label把重設的密碼秀出來。如果可以的話,最好把新的密碼寄給使用者。
C#
MembershipProvider mp = Membership.Providers["AspNetAdminMembership"];
MembershipUser user = mp.GetUser(TreeView1.SelectedValue.ToString(), false);
lblPasswordReset.Text = user.ResetPassword();
VB
Dim mp As MembershipProvider = Membership.Providers("AspNetAdminMembership")
Dim user As MembershipUser = mp.GetUser(ddlUsers.SelectedItem.ToString, False)
Dim pass As String = user.ResetPassword
(C#跟VB有點出入,但我懶得改...)
3.記得把修改後的程式還有machine.config丟到主機上面
4.沒有了

星期四, 7月 06, 2006

GridView加上刪除確認按鈕

如果已經會使用button內建的onclientclick,用Gridview的刪除確認就容易得多。在gridview新增的個template field,然後edit template選items template,新增一個按鈕,然後Command那些選delete,在onclientclick打return confirm('確定傳送?'),應該就大功告成了。

GridView無法新增

最近看好幾本新書都說Gridview有新增的功能,一直試半天都試不出來。最近看祭司的書才明說:GridView沒有實作新增這一部分,必須透過Form或Detail才能新增。

星期三, 6月 14, 2006

一分鐘學會上傳後縮圖(C#)

愈來愈覺得Asp.net 2適合懶人了,微軟雖然有千百個不是,但是把技術包裝得這麼簡單,著實不易呀.....
閒話休敘,來談談怎麼一分鐘學會上傳後縮圖吧!
1開個aspx檔,拉一個fileupload跟button
2在cs檔裡引用System.Drawing跟System.Drawing.Imaging
3在button的click事件上寫
if (FileUpload1.HasFile)
{
FileUpload1.SaveAs("D:\\Web\\test\\" + FileUpload1.FileName);
System.Drawing.Image fullSizeImg = System.Drawing.Image.FromFile("D:\\Web\\test\\" + FileUpload1.FileName);
System.Drawing.Image thumbnailImg = fullSizeImg.GetThumbnailImage(100, 100, null, IntPtr.Zero);
thumbnailImg.Save("D:\\Web\\test\\thumb_" + FileUpload1.FileName);
}

如果要改進這個程式的話,就要從縮圖尺寸下手。這部分就不是一分鐘學得會的了。
如果覺得品質不好,就要用複雜的GDI來判斷了。等研究出來再放上來。

星期六, 4月 01, 2006

動態產生FCKEditor的方法

  FCKEditor是一個強大的WYSWYG免費編輯器,可以輕鬆的整合入程式裡,而不需要太多的設定。網路上已有中文版的教學,可參考:亞當維奇的文章。
  但是在ASP.Net要利用FCKEditor的上傳功能時,就有點小不便了。首先,設定FileManager雖然可以很方便地把檔案上傳,但是不能管理上傳大小、空間的限制。其次,要將FileManager的路徑寫在web.config裡,會造成所有使用者都看到同一份上傳內容,也多有不便。
  參看FCKEditor線上說明文件,最後面提到了動態產生FCKEditor的方法,把它轉成C#以後如下:
private void populateFCK(string datavalue)
{
Session["FCKeditor:UserFilesPath"] = "/Web/Files/" + Request.QueryString["course"];
FredCK.FCKeditorV2.FCKeditor fck = new FredCK.FCKeditorV2.FCKeditor();
fck.BasePath = "~/FCKeditor/";
fck.ImageBrowserURL = "http://localhost:/Web/FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=connectors/aspx/connector.aspx";
fck.ID = "unit_content";
fck.Value = datavalue;
fck.ToolbarSet = "Default";
Panel2.Controls.Add(fck);
fck.EnableViewState = true;
}
  因為我要把資料庫的值塞給FCKEditor,所以在此事件中就把值傳過來比較方便。好不容易試成功了以後,沒想到submit竟然出現了找不到reference的情況。翻閱ASP.Net論壇,原來是要在ispostback時再次動態產生FCKEditor,這樣就沒問題了。

星期日, 3月 26, 2006

表達句型-說明種類、分類

一、種類、類型(一種的…)
1.…的一種:a kind of
2.有點…:a kind of eg: He fell into a kind of pedantry.他變得有點喜歡賣弄學問
3.…的種類的…/…類型的…:the kind (type) of ... which
4.…種類的…:...of a ... kind
5.…類型的…:a ... type of
6.…種類的:...of the ...kind

二、分類(作為…被分類)
1.…分入…/…屬於:...be categorized into.../...fall into...
2.…可以視為…:...can be regarded (seen) as...
3.根據…,把…分類到…:be categorized as..., according to ...

星期六, 3月 25, 2006

表達句型-說明名稱

一、名稱(叫做~)be called/ be termed/ be named/ be referred to as/ be known as

1.…叫做~:...is called...
2.在…的情形,叫做:if...,...is called
3.所謂的~:what is called/ what we call
4.叫做~:…be referred to as
5.…以~知名:...be known as

二、名稱(…的名字是~)...is the name [term] given to .../ The name [term] for ... is ...
1.~這個名字是指…:...is the name given to ...
2.~…的名字是~:the name for ... is ...
3.以…名稱…:under the name (of)...
4.…的別名:another name for
5.…的縮寫(首字母組合語)/…的簡寫:an abbreviation (acronym) for (of).../a short form of ...

三、名稱的由來/命名的目的(~的名字來自於)
1.…是以…命名:...is named after
2.~的名字是來自於…:...derive one's name from ...
3.為了做…,把…叫做…:...be called ...to ...
4.這名字字在…:Tha name ... is used to
5.這麼叫是因為…:...is so called because...