2011年5月12日 星期四

.net button

使用者在操作網頁過程中
常會不耐煩而多次點擊按鈕
為了不讓使用者一直點擊送出
通常會在點擊後使按鈕設為disabled
<asp:Button … onclientclick="this.disabled=true;">
但是這在.net中會造成連submit的動作也取消掉
    解決的方法有二
  1. 在onclick事件中加入
    Button1.Attributes["onclick"] = "this.disabled=true;" + this.Page.ClientScript.GetPostBackEventReference(button1, "");

  2. 在button標籤中加入
    <asp:Button … onclientclick="this.disabled=true;" UseSubmitBehavior="false"


參考網址內還有另一種解決方法
--
參考網址
http://gogo1119.pixnet.net/blog/post/29176264
http://tw.myblog.yahoo.com/frankintaiwan/article?mid=1095

2011年5月10日 星期二

.net excel

這天為了快樂的在程式中使用excel
開心的使用了ADO.NET的Microsoft.Jet.OleDb
哇讀取excel真方便啊
しかぁぁぁぁし
卻發生了有資料不見的情況= =
原來是用OleDb的寫法
系統只會去偵測前8列的欄位型態
會碰到如果前8列的A欄位為皆為數字,當第9列後A欄位為文字時,則會無法辦別而讀到NULL
可用HDR=NO;IMEX=1;解決
(HDR)使EXCEL中第一列欄位名當作內容用,(IMEX)當欄位為混合型態時以文字型態優先(也是只檢查前8列= =)
雖然有人提出改機碼的方法使偵測值為0
但我還是不滿足
所以我找了NPOI

幸運的是裡面有別人寫好的method可以用
不幸的是COPY過來後出現了
您是否漏掉了轉型?

這是因為我download的是1.2.3版
而範例的似乎是1.2.2版
所造成版本不符的關係
解決方法是強制轉型
HSSFSheet sheet = (HSSFSheet)workbook.GetSheet(SheetName);

使用範例提供的excelToDataTable
就沒有再發生掉資料的問題囉
めでたしめでたし~


--
參考網址
http://www.dotblogs.com.tw/puma/archive/2008/03/16/1652.aspx
http://bgm.pixnet.net/blog/post/21031912
http://sanchen.blogspot.com/2007/08/imex1-oledb-excel-null.html
http://club.excelhome.net/thread-488632-1-6.html
http://social.msdn.microsoft.com/Forums/zh-TW/233/thread/e396290a-cded-43fb-9a9f-d05b107a6e06/

2011年5月5日 星期四

.net FileUpload

懶得寫敍述了...直接貼
protected void Button1_Click(object sender, EventArgs e)
{
 if (FileUpload1.HasFile)
 {
  FileUpload1.PostedFile.SaveAs(Server.MapPath("~/upload/") + FileUpload1.FileName);
  uploadvalid.IsValid = false;
  uploadvalid.ErrorMessage = "Your file was uploaded successfully.";
 }
 else
 {
  uploadvalid.IsValid = false;
  uploadvalid.ErrorMessage = "You did not specify a file to upload.";
 }
}

雖說從提示方框中是這樣區分
FileUpload1.PostedFile.SaveAs("放文件名稱")
FileUpload1.SaveAs("完整路徑")
但我只放文件名稱的話還是會有問題
放完整路徑才OK

另外因為開發環境跟實際上線環境當然不一樣
所以完整路徑自然不能直接寫"C:/XXX"
要用到另一個方法Server.MapPath
將相對路徑轉換成絕對路徑

--
參考網站
http://blog.xuite.net/sunnysoap/r/16996207
http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.fileupload.saveas%28v=vs.90%29.aspx#Y960
http://www.dotblogs.com.tw/mis2000lab/archive/2008/04/24/3455.aspx

2011年5月4日 星期三

.net 類別中使用Session和Response

寫一個cs檔放類別供呼叫時,會遇到無法直接使用Session和Response的情況
這時就要寫的迂迴一點
if (HttpContext.Current.Session["login"] == null)
HttpContext.Current.Response.Redirect("../");

以上
--
參考網址
http://www.w17x.com/AritcleDisplay.aspx?id=670

.net 使用外部dll

在網站專案上選擇新增參考->瀏覽->選要加入的dll檔案
加入後會放在自動新增的bin資料夾裡面
使用時要加上
using dllname;